bug fixes for '\r' handling in wxTextFile::Translate()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5272 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
4021952304
commit
c0f587c500
@ -67,14 +67,13 @@ const wxChar *wxTextFile::GetEOL(wxTextFileType type)
|
||||
wxFAIL_MSG(wxT("bad file type in wxTextFile::GetEOL."));
|
||||
// fall through nevertheless - we must return something...
|
||||
|
||||
case wxTextFileType_None: return wxT("");
|
||||
case wxTextFileType_Unix: return wxT("\n");
|
||||
case wxTextFileType_Dos: return wxT("\r\n");
|
||||
case wxTextFileType_Mac: return wxT("\r");
|
||||
case wxTextFileType_None: return wxT(_T(""));
|
||||
case wxTextFileType_Unix: return wxT(_T("\n"));
|
||||
case wxTextFileType_Dos: return wxT(_T("\r\n"));
|
||||
case wxTextFileType_Mac: return wxT(_T("\r"));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
wxString wxTextFile::Translate(const wxString& text, wxTextFileType type)
|
||||
{
|
||||
// don't do anything if there is nothing to do
|
||||
@ -93,34 +92,40 @@ wxString wxTextFile::Translate(const wxString& text, wxTextFileType type)
|
||||
{
|
||||
wxChar ch = *pc;
|
||||
switch ( ch ) {
|
||||
case '\n':
|
||||
case _T('\n'):
|
||||
// Dos/Unix line termination
|
||||
result += eol;
|
||||
chLast = '\n';
|
||||
chLast = 0;
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
if ( chLast == '\r' ) {
|
||||
case _T('\r'):
|
||||
if ( chLast == _T('\r') ) {
|
||||
// Mac empty line
|
||||
result += eol;
|
||||
}
|
||||
else
|
||||
chLast = '\r';
|
||||
else {
|
||||
// just remember it: we don't know whether it is just "\r"
|
||||
// or "\r\n" yet
|
||||
chLast = _T('\r');
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
if ( chLast == '\r' ) {
|
||||
if ( chLast == _T('\r') ) {
|
||||
// Mac line termination
|
||||
result += eol;
|
||||
chLast = ch;
|
||||
}
|
||||
else {
|
||||
// add to the current line
|
||||
result += ch;
|
||||
}
|
||||
|
||||
// add to the current line
|
||||
result += ch;
|
||||
}
|
||||
}
|
||||
|
||||
if ( chLast ) {
|
||||
// trailing '\r'
|
||||
result += eol;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -269,7 +274,7 @@ bool wxTextFile::Read()
|
||||
case '\r':
|
||||
if ( chLast == '\r' ) {
|
||||
// Mac empty line
|
||||
m_aLines.Add("");
|
||||
m_aLines.Add(wxEmptyString);
|
||||
m_aTypes.Add(wxTextFileType_Mac);
|
||||
}
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user