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 }