Overview
Comment: | Initial JSON5 support.
Supported so far: |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
54f80aba7ae658b9ef60d1a5f4bd056a |
User & Date: | js on 2012-06-04 22:32:38 |
Other Links: | manifest | tags |
Context
2012-06-04
| ||
23:36 | Allow numbers in JSON5 format. check-in: 3e028f7479 user: js tags: trunk | |
22:32 | Initial JSON5 support. check-in: 54f80aba7a user: js tags: trunk | |
2012-05-30
| ||
22:03 | atomic.h: Use sete instead of the ugly jne. check-in: 22aea96b79 user: js tags: trunk | |
Changes
Modified src/OFString+JSONValue.h from [db1f76de2d] to [7f041856a4].
︙ | |||
23 24 25 26 27 28 29 30 31 32 33 34 | 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | + + + | #ifdef __cplusplus } #endif @interface OFString (JSONValue) /** * \brief Creates an object from the JSON value of the string. * * \note This also allows parsing JSON5, an extension of JSON. See * http://json5.org/ for more details. * * \return An object */ - (id)JSONValue; @end |
Modified src/OFString+JSONValue.m from [9190d7a166] to [8ad19cb41d].
︙ | |||
126 127 128 129 130 131 132 133 134 135 136 137 138 139 | 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 | + | } static inline OFString* parseString(const char *restrict *pointer, const char *stop) { char *buffer; size_t i = 0; char delimiter = **pointer; if (++(*pointer) + 1 >= stop) return nil; if ((buffer = malloc(stop - *pointer)) == NULL) return nil; |
︙ | |||
232 233 234 235 236 237 238 | 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 | - + | break; default: free(buffer); return nil; } /* End of string found */ |
︙ | |||
396 397 398 399 400 401 402 403 404 405 406 407 408 409 | 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 | + | skipWhitespacesAndComments(pointer, stop); if (*pointer >= stop) return nil; switch (**pointer) { case '"': case '\'': return parseString(pointer, stop); case '[': return parseArray(pointer, stop); case '{': return parseDictionary(pointer, stop); case 't': if (*pointer + 3 >= stop) |
︙ |
Modified tests/OFJSONTests.m from [b853b74aa1] to [e8e782d6ff].
︙ | |||
29 30 31 32 33 34 35 | 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | - + - + - + | static OFString *module = @"OFJSON"; @implementation TestsAppDelegate (JSONTests) - (void)JSONTests { OFAutoreleasePool *pool = [[OFAutoreleasePool alloc] init]; |
︙ |