mirror of
https://github.com/gnustep/libs-base.git
synced 2025-05-30 00:11:26 +00:00
Tweak to allow leading and trailing whitespace in an xml property list.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@30454 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
fbfc255123
commit
5d036eee5e
3 changed files with 29 additions and 13 deletions
|
@ -1,8 +1,9 @@
|
|||
2010-05-25 Richard Frith-Macdonald <rfm@gnu.org>
|
||||
|
||||
* Source/NSPropertyList.m: ([-parser;foundChartacters:]) don't trim
|
||||
* Source/NSPropertyList.m: ([-parser:foundCharacters:]) don't trim
|
||||
the supplied string ... we need to retain whitespace around entities
|
||||
in value test.
|
||||
in value test. If inside a <string> element, treat ignorable
|
||||
whitespace as normal whitespace.
|
||||
* Source/NSXMLParser.m: Add support for ignorable whitespace so that
|
||||
it doesn't get handed to the delegate as normal characters.
|
||||
|
||||
|
|
|
@ -87,6 +87,7 @@ extern BOOL GSScanDouble(unichar*, unsigned, double*);
|
|||
NSString *key;
|
||||
BOOL inArray;
|
||||
BOOL inDictionary;
|
||||
BOOL inString;
|
||||
BOOL parsed;
|
||||
BOOL success;
|
||||
id plist;
|
||||
|
@ -144,6 +145,15 @@ foundCharacters: (NSString *)string
|
|||
[value appendString: string];
|
||||
}
|
||||
|
||||
- (void) parser: (NSXMLParser *)parser
|
||||
foundIgnorableWhitespace: (NSString *)string
|
||||
{
|
||||
if (YES == inString)
|
||||
{
|
||||
[value appendString: string];
|
||||
}
|
||||
}
|
||||
|
||||
- (void) parser: (NSXMLParser *)parser
|
||||
didStartElement: (NSString *)elementName
|
||||
namespaceURI: (NSString *)namespaceURI
|
||||
|
@ -182,6 +192,10 @@ foundCharacters: (NSString *)string
|
|||
inArray = YES;
|
||||
inDictionary = NO;
|
||||
}
|
||||
else if ([elementName isEqualToString: @"string"] == YES)
|
||||
{
|
||||
inString = YES;
|
||||
}
|
||||
}
|
||||
|
||||
- (void) parser: (NSXMLParser *)parser
|
||||
|
@ -191,11 +205,12 @@ foundCharacters: (NSString *)string
|
|||
{
|
||||
BOOL inContainer = NO;
|
||||
|
||||
inString = NO;
|
||||
if ([elementName isEqualToString: @"dict"] == YES)
|
||||
{
|
||||
inContainer = YES;
|
||||
}
|
||||
if ([elementName isEqualToString: @"array"] == YES)
|
||||
else if ([elementName isEqualToString: @"array"] == YES)
|
||||
{
|
||||
inContainer = YES;
|
||||
}
|
||||
|
|
|
@ -1314,25 +1314,25 @@ NSLog(@"_processTag <%@%@ %@>", flag?@"/": @"", tag, attributes);
|
|||
p--;
|
||||
}
|
||||
}
|
||||
if (p < this->cp - 1 && this->foundIgnorable != 0)
|
||||
{
|
||||
/* Process data as ignorable whitespace
|
||||
*/
|
||||
s = NewUTF8STR(p, this->cp - p - 1);
|
||||
(*this->foundIgnorable)(_del,
|
||||
foundIgnorableSel, self, s);
|
||||
[s release];
|
||||
}
|
||||
}
|
||||
if (p - vp > 0 && this->foundCharacters != 0)
|
||||
{
|
||||
/* Process remaining data as characters
|
||||
/* Process initial data as characters
|
||||
*/
|
||||
s = NewUTF8STR(vp, p - vp);
|
||||
(*this->foundCharacters)(_del,
|
||||
foundCharactersSel, self, s);
|
||||
[s release];
|
||||
}
|
||||
if (p < this->cp - 1 && this->foundIgnorable != 0)
|
||||
{
|
||||
/* Process data as ignorable whitespace
|
||||
*/
|
||||
s = NewUTF8STR(p, this->cp - p - 1);
|
||||
(*this->foundIgnorable)(_del,
|
||||
foundIgnorableSel, self, s);
|
||||
[s release];
|
||||
}
|
||||
vp = this->cp;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue