Index: generators/TableGenerator.h ================================================================== --- generators/TableGenerator.h +++ generators/TableGenerator.h @@ -18,11 +18,10 @@ @class OFString; @interface TableGenerator: OFObject { - OFString *unicodeData, *caseFolding; of_unichar_t uppercaseTable[0x110000]; of_unichar_t lowercaseTable[0x110000]; of_unichar_t titlecaseTable[0x110000]; of_unichar_t casefoldingTable[0x110000]; BOOL uppercaseTableUsed[0x1100]; @@ -33,11 +32,10 @@ size_t lowercaseTableSize; size_t titlecaseTableSize; size_t casefoldingTableSize; } -- (void)downloadFiles; - (void)parseUnicodeData; - (void)parseCaseFolding; - (void)writeTablesToFile: (OFString*)path; - (void)writeHeaderToFile: (OFString*)path; @end Index: generators/TableGenerator.m ================================================================== --- generators/TableGenerator.m +++ generators/TableGenerator.m @@ -20,19 +20,22 @@ #import "OFString.h" #import "OFArray.h" #import "OFApplication.h" #import "OFURL.h" +#import "OFHTTPRequest.h" +#import "OFHTTPRequestReply.h" +#import "OFHTTPClient.h" #import "OFFile.h" #import "autorelease.h" #import "TableGenerator.h" #import "copyright.h" #define UNICODE_DATA_URL \ - @"http://unicode.org/Public/UNIDATA/UnicodeData.txt" + @"http://www.unicode.org/Public/UNIDATA/UnicodeData.txt" #define CASE_FOLDING_URL \ @"http://www.unicode.org/Public/UNIDATA/CaseFolding.txt" OF_APPLICATION_DELEGATE(TableGenerator) @@ -49,12 +52,10 @@ return self; } - (void)applicationDidFinishLaunching { - [self downloadFiles]; - [self parseUnicodeData]; [self parseCaseFolding]; [of_stdout writeString: @"Writing files..."]; @@ -64,36 +65,26 @@ [of_stdout writeLine: @" done"]; [OFApplication terminate]; } -- (void)downloadFiles -{ - [of_stdout writeString: @"Downloading " UNICODE_DATA_URL @"..."]; - unicodeData = [[OFString alloc] initWithContentsOfURL: - [OFURL URLWithString: UNICODE_DATA_URL]]; - [of_stdout writeLine: @" done"]; - - [of_stdout writeString: @"Downloading " CASE_FOLDING_URL @"..."]; - caseFolding = [[OFString alloc] initWithContentsOfURL: - [OFURL URLWithString: CASE_FOLDING_URL]]; - [of_stdout writeLine: @" done"]; -} - - (void)parseUnicodeData { void *pool = objc_autoreleasePoolPush(); - OFArray *lines; - OFEnumerator *enumerator; + OFHTTPRequest *request; + OFHTTPClient *client; + OFHTTPRequestReply *reply; OFString *line; - [of_stdout writeString: @"Parsing UnicodeData.txt..."]; + [of_stdout writeString: @"Downloading and parsing UnicodeData.txt..."]; - lines = [unicodeData componentsSeparatedByString: @"\n"]; - enumerator = [lines objectEnumerator]; + request = [OFHTTPRequest requestWithURL: + [OFURL URLWithString: UNICODE_DATA_URL]]; + client = [OFHTTPClient client]; + reply = [client performRequest: request]; - while ((line = [enumerator nextObject]) != nil) { + while ((line = [reply readLine]) != nil) { void *pool2; OFArray *split; OFString **splitObjects; of_unichar_t codep; @@ -126,20 +117,23 @@ } - (void)parseCaseFolding { void *pool = objc_autoreleasePoolPush(); - OFArray *lines; - OFEnumerator *enumerator; + OFHTTPRequest *request; + OFHTTPClient *client; + OFHTTPRequestReply *reply; OFString *line; - [of_stdout writeString: @"Parsing CaseFolding.txt..."]; + [of_stdout writeString: @"Downloading and parsing CaseFolding.txt..."]; - lines = [caseFolding componentsSeparatedByString: @"\n"]; - enumerator = [lines objectEnumerator]; + request = [OFHTTPRequest requestWithURL: + [OFURL URLWithString: CASE_FOLDING_URL]]; + client = [OFHTTPClient client]; + reply = [client performRequest: request]; - while ((line = [enumerator nextObject]) != nil) { + while ((line = [reply readLine]) != nil) { void *pool2; OFArray *split; OFString **splitObjects; of_unichar_t codep;