mirror of
https://github.com/gnustep/libs-steptalk.git
synced 2025-02-21 02:31:01 +00:00
Unescape two successive single quote characters inside Smalltalk
literal string tokens. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/steptalk/trunk@36235 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
303e860924
commit
e180a533b2
2 changed files with 21 additions and 13 deletions
|
@ -1,3 +1,8 @@
|
|||
2013-03-02 Wolfgang Lux <wolfgang.lux@gmail.com>
|
||||
|
||||
* STSourceReader.m (_STNormalizeStringToken): Unescape two successive
|
||||
single quote characters inside literal string tokens.
|
||||
|
||||
2013-02-08 Wolfgang Lux <wolfgang.lux@gmail.com>
|
||||
|
||||
* STBlock.h (value:,value:value:,value:value:value:,valueWithArguments:):
|
||||
|
|
|
@ -79,29 +79,32 @@ static NSString *_STNormalizeStringToken(NSString *token)
|
|||
unichar c;
|
||||
unsigned int len = [token length];
|
||||
|
||||
for(i = 0;i < len; i++)
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
c = [token characterAtIndex:i];
|
||||
if(c == '\\')
|
||||
if (c == '\\')
|
||||
{
|
||||
i++;
|
||||
c = [token characterAtIndex:i];
|
||||
switch(c)
|
||||
switch (c)
|
||||
{
|
||||
case 'a': [string appendCharacter:'\a']; break;
|
||||
case 'b': [string appendCharacter:'\b']; break;
|
||||
case 'e': [string appendCharacter:'\e']; break;
|
||||
case 'n': [string appendCharacter:'\n']; break;
|
||||
case 'r': [string appendCharacter:'\r']; break;
|
||||
case 't': [string appendCharacter:'\t']; break;
|
||||
case 'v': [string appendCharacter:'\v']; break;
|
||||
default:[string appendCharacter:c]; break;
|
||||
case 'a': c = '\a'; break;
|
||||
case 'b': c = '\b'; break;
|
||||
case 'e': c = '\e'; break;
|
||||
case 'n': c = '\n'; break;
|
||||
case 'r': c = '\r'; break;
|
||||
case 't': c = '\t'; break;
|
||||
case 'v': c = '\v'; break;
|
||||
default:; break;
|
||||
}
|
||||
}
|
||||
else
|
||||
else if (c == '\'')
|
||||
{
|
||||
[string appendCharacter:c];
|
||||
i++;
|
||||
NSCAssert(i < len && [token characterAtIndex:i] == '\'',
|
||||
@"Unescaped quote character in string token");
|
||||
}
|
||||
[string appendCharacter:c];
|
||||
}
|
||||
|
||||
return string;
|
||||
|
|
Loading…
Reference in a new issue