Many and various fixes for XML and URL stuff

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@7587 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Richard Frith-MacDonald 2000-09-22 18:55:21 +00:00
parent 2458682e57
commit 791b91afdd
11 changed files with 167 additions and 98 deletions

View file

@ -109,6 +109,8 @@ BOOL GSMacOSXCompatibleGeometry()
BOOL GSMacOSXCompatiblePropertyLists()
{
/* HACK until xml propertylists fully working */
return NO;
if (setupDone == NO)
compatibilitySetup();
return MacOSXCompatiblePropertyLists;
@ -178,9 +180,30 @@ XMLString(NSString* obj)
return obj;
}
static NSString *indentStrings[] = {
@"",
@" ",
@"\t",
@"\t ",
@"\t\t",
@"\t\t ",
@"\t\t\t",
@"\t\t\t ",
@"\t\t\t\t",
@"\t\t\t\t ",
@"\t\t\t\t\t",
@"\t\t\t\t\t ",
@"\t\t\t\t\t\t"
};
static void
XMLPlObject(NSMutableString *dest, id obj)
XMLPlObject(NSMutableString *dest, id obj, NSDictionary *loc, unsigned lev)
{
if (lev >= sizeof(indentStrings) / sizeof(*indentStrings))
lev = sizeof(indentStrings) / sizeof(*indentStrings) - 1;
[dest appendString: indentStrings[lev]];
if ([obj isKindOfClass: [NSString class]])
{
[dest appendString: @"<string>"];
@ -233,14 +256,19 @@ XMLPlObject(NSMutableString *dest, id obj)
e = [obj objectEnumerator];
while ((obj = [e nextObject]))
{
XMLPlObject(dest, obj);
XMLPlObject(dest, obj, loc, lev + 1);
}
[dest appendString: indentStrings[lev]];
[dest appendString: @"</array>\n"];
}
else if ([obj isKindOfClass: [NSDictionary class]])
{
NSEnumerator *e;
id key;
unsigned nxt = lev + 1;
if (lev >= sizeof(indentStrings) / sizeof(*indentStrings))
lev = sizeof(indentStrings) / sizeof(*indentStrings) - 1;
[dest appendString: @"<dict>\n"];
e = [obj keyEnumerator];
@ -249,11 +277,13 @@ XMLPlObject(NSMutableString *dest, id obj)
id val;
val = [obj objectForKey: key];
[dest appendString: indentStrings[nxt]];
[dest appendString: @"<key>"];
[dest appendString: XMLString(key)];
[dest appendString: @"</key>\n"];
XMLPlObject(dest, val);
XMLPlObject(dest, val, loc, nxt);
}
[dest appendString: indentStrings[lev]];
[dest appendString: @"</dict>\n"];
}
else
@ -265,3 +295,18 @@ XMLPlObject(NSMutableString *dest, id obj)
}
}
NSString*
GSXMLPlMake(id obj, NSDictionary *loc, unsigned lev)
{
NSMutableString *dest;
dest = [NSMutableString stringWithCString:
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist "
"SYSTEM \"file://localhost/System/Library/DTDs/PropertyList.dtd\">\n"
"<plist version=\"0.9\">\n"];
XMLPlObject(dest, obj, loc, 0);
[dest appendString: @"</plist>"];
return dest;
}