Mercurial > repos > tabletprog
comparison modules/json.tp @ 365:3d36d69aab7f
Fix JSON decoder to align with language changes
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Fri, 07 Aug 2015 21:40:08 -0700 |
parents | eef8a5cea812 |
children | e2c1309ab750 |
comparison
equal
deleted
inserted
replaced
364:e44f65abaf0e | 365:3d36d69aab7f |
---|---|
16 cr <- "\r" byte: 0 | 16 cr <- "\r" byte: 0 |
17 colon <- ":" byte: 0 | 17 colon <- ":" byte: 0 |
18 t <- "t" byte: 0 | 18 t <- "t" byte: 0 |
19 f <- "f" byte: 0 | 19 f <- "f" byte: 0 |
20 | 20 |
21 parseNumAt <- :str :at :recvResult { | 21 parseNumAt <- :str at { |
22 num <- 0 | 22 num <- 0 |
23 l <- str length | 23 l <- str length |
24 minus <- false | 24 minus <- false |
25 aft <- -1 | 25 aft <- -1 |
26 ignore <- false | 26 ignore <- false |
54 value <- num | 54 value <- num |
55 after <- aft | 55 after <- aft |
56 } | 56 } |
57 } | 57 } |
58 | 58 |
59 parseStrAt <- :src :at :recvResult { | 59 parseStrAt <- :src at { |
60 //TODO: Deal with escaped characters | 60 //TODO: Deal with escaped characters |
61 end <- src find: "\"" startingAt: at + 1 else: { src length } | 61 end <- src find: "\"" startingAt: at + 1 else: { src length } |
62 #{ | 62 #{ |
63 value <- src from: (at + 1) withLength: (end - at - 1) | 63 value <- src from: (at + 1) withLength: (end - at - 1) |
64 after <- end + 1 | 64 after <- end + 1 |
67 | 67 |
68 _decode:at <- :text :cur { | 68 _decode:at <- :text :cur { |
69 ret <- false | 69 ret <- false |
70 b <- text byte: cur | 70 b <- text byte: cur |
71 if: b = neg || b >= zero && b <= nine { | 71 if: b = neg || b >= zero && b <= nine { |
72 text parseNumAt: cur | 72 parseNumAt: text cur |
73 } else: { | 73 } else: { |
74 if: b = quote { | 74 if: b = quote { |
75 text parseStrAt: cur | 75 parseStrAt: text cur |
76 } else: { | 76 } else: { |
77 if: b = startArr { | 77 if: b = startArr { |
78 len <- text length | 78 len <- text length |
79 val <- #[] | 79 val <- #[] |
80 cur <- cur + 1 | 80 cur <- cur + 1 |