Work in progress to allow arbitrary chars in references, etc.
This commit is contained in:
@@ -39,6 +39,79 @@
|
||||
*/
|
||||
static const char illegalFileNameChars[] = "\\/:\"<>|";
|
||||
|
||||
/**
|
||||
* These Escape/Unescape routines use HTML-entity-reference-style encoding to handle
|
||||
* characters which are:
|
||||
* (a) not legal in filenames
|
||||
* (b) used as control characters in LIB_IDs
|
||||
* (c) used to delineate hierarchical paths
|
||||
*/
|
||||
wxString EscapeString( const wxString& aSource )
|
||||
{
|
||||
wxString converted;
|
||||
|
||||
for( wxUniChar c: aSource )
|
||||
{
|
||||
if( c == '\"' )
|
||||
converted += """;
|
||||
else if( c == '\'' )
|
||||
converted += "'";
|
||||
else if( c == '&' )
|
||||
converted += "&";
|
||||
else if( c == '<' )
|
||||
converted += "<";
|
||||
else if( c == '>' )
|
||||
converted += ">";
|
||||
else if( c == '\\' )
|
||||
converted += "∖";
|
||||
else if( c == '/' )
|
||||
converted += "⁄";
|
||||
else if( c == '|' )
|
||||
converted += "|";
|
||||
else if( c == ':' )
|
||||
converted += ":";
|
||||
else if( c == ' ' )
|
||||
converted += " ";
|
||||
else if( c == '%' )
|
||||
converted += "%";
|
||||
else if( c == '$' )
|
||||
converted += "$";
|
||||
else if( c == '\t' )
|
||||
converted += "&tab;";
|
||||
else if( c == '\n' || c == '\r' )
|
||||
converted += "&Newline;";
|
||||
else
|
||||
converted += c;
|
||||
}
|
||||
|
||||
return converted;
|
||||
}
|
||||
|
||||
|
||||
wxString UnescapeString( const wxString& aSource )
|
||||
{
|
||||
wxString converted = aSource;
|
||||
|
||||
converted.Replace( """, "\"" );
|
||||
converted.Replace( "'", "'" );
|
||||
converted.Replace( "<", "<" );
|
||||
converted.Replace( ">", ">" );
|
||||
converted.Replace( "∖", "\\" );
|
||||
converted.Replace( "⁄", "/" );
|
||||
converted.Replace( "|", "|" );
|
||||
converted.Replace( ":", ":" );
|
||||
converted.Replace( " ", " " );
|
||||
converted.Replace( "%", "%" );
|
||||
converted.Replace( "$", "$" );
|
||||
converted.Replace( "&tab;", "\t" );
|
||||
converted.Replace( "&Newline;", "\n" );
|
||||
|
||||
// must be done last
|
||||
converted.Replace( "&", "&" );
|
||||
|
||||
return converted;
|
||||
}
|
||||
|
||||
|
||||
int ReadDelimitedText( wxString* aDest, const char* aSource )
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user