Mercurial > repos > tabletprog
comparison modules/string.tp @ 271:bb4723fec05e
Support for encoding objects, dictionaries, lists and arrays to JSON in json module
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sat, 19 Jul 2014 19:59:51 -0700 |
parents | b74956a2196f |
children | 9a30510f6e52 |
comparison
equal
deleted
inserted
replaced
270:b74956a2196f | 271:bb4723fec05e |
---|---|
308 if: (suffix length) <= length { | 308 if: (suffix length) <= length { |
309 0 = (compareSub: suffix (length - (suffix length)) 0 (suffix length)) | 309 0 = (compareSub: suffix (length - (suffix length)) 0 (suffix length)) |
310 } | 310 } |
311 } | 311 } |
312 | 312 |
313 jsonEncode <- { | |
314 i <- 0 | |
315 start <- 0 | |
316 parts <- #["\""] | |
317 q <- "\"" byte: 0 | |
318 s <- "\\" byte: 0 | |
319 while: { i < byte_length } do: { | |
320 b <- byte: i | |
321 if: b = q { | |
322 parts append: (from: start withLength: i - start) | |
323 start <- i + 1 | |
324 parts append: "\\\"" | |
325 } else: { | |
326 if: b = s { | |
327 parts append: (from: start withLength: i - start) | |
328 start <- i + 1 | |
329 parts append: "\\\\" | |
330 } | |
331 } | |
332 | |
333 i <- i + 1 | |
334 } | |
335 if: start < byte_length { | |
336 parts append: (from: start) | |
337 } | |
338 parts append: "\"" | |
339 parts join: "" | |
340 } | |
341 | |
313 isInteger? <- { false } | 342 isInteger? <- { false } |
314 isString? <- { true } | 343 isString? <- { true } |
315 isBasicString? <- { true } | 344 isBasicString? <- { true } |
316 } | 345 } |