Mercurial > repos > icfp2013
comparison src/requests.tp @ 23:fcd7ae66a9ee
cleanup.
author | William Morgan <bill@mrgn.org> |
---|---|
date | Sat, 10 Aug 2013 03:56:32 -0700 |
parents | a4837071b73d |
children | e1109e33b796 |
comparison
equal
deleted
inserted
replaced
22:a4837071b73d | 23:fcd7ae66a9ee |
---|---|
14 } | 14 } |
15 | 15 |
16 quote <- :str { | 16 quote <- :str { |
17 "\"" . str . "\"" | 17 "\"" . str . "\"" |
18 } | 18 } |
19 | |
20 println: str { | |
21 print: str . "\n" | |
22 } | |
23 | |
24 | |
25 | |
19 | 26 |
20 evalRequest <- :id args { | 27 evalRequest <- :id args { |
21 #{ | 28 #{ |
22 string <- { | 29 string <- { |
23 idStr <- (quote: "id") . ":" . (quote: id) | 30 idStr <- (quote: "id") . ":" . (quote: id) |
39 | 46 |
40 | 47 |
41 | 48 |
42 | 49 |
43 | 50 |
44 | |
45 expect:in <- :target input { | |
46 input find: target else: { | |
47 print: "expected " . target . "!\n" | |
48 -1 | |
49 //exit, it's all fucked now | |
50 } | |
51 } | |
52 | |
53 quotedVal <- :str { | |
54 str find: "\"" else: { | |
55 "expected | |
56 } | |
57 } | |
58 | |
59 jsonVal:in <- :target input { | |
60 idx <- expect: target in: input | |
61 nextQuoteIdx <- idx + | |
62 quotedVal: idx | |
63 } | |
64 | |
65 evalResponse <- :str { | |
66 str find: "status" else: {print: missing} | |
67 statIdx <- expect: "status" in: str | |
68 status <- requireK | |
69 | |
70 #{ | |
71 status <- | |
72 outputs <- parseArray(input) | |
73 message <- | |
74 } | |
75 } | |
76 | |
77 | |
78 println: str { | |
79 print: str . "\n" | |
80 } | |
81 | |
82 readObject <- :str { | |
83 expect "{" | |
84 readObjectContents: | |
85 expect "}" | |
86 } | |
87 | |
88 readObject <- :str { | |
89 innerStr <- readEnclosed: "{" "}" | |
90 elems <- split: "," | |
91 } | |
92 | |
93 evalResponse <- :str { | |
94 status <- readValForKey: "status" str | |
95 if status = "error" { | |
96 | |
97 } else { | |
98 if status = "ok" { | |
99 #{ | |
100 readEvalOutputs: | |
101 } | |
102 } | |
103 } | |
104 | |
105 } | |
106 | |
107 expect:in:else <- :target src doElse { | 51 expect:in:else <- :target src doElse { |
108 src find: target else: { | 52 src find: target else: { |
109 print: "parse error: expected " . target . "!\n" | 53 print: "parse error: expected " . target . "!\n" |
110 doElse: | 54 doElse: |
111 } | 55 } |
112 } | 56 } |
113 | 57 |
114 getStrForKey:from:else <- :key :src :doElse { | 58 getStrForKey:from:else <- :key :src :doElse { |
115 idx <- expect: "\"" in: src else: doElse | 59 firstKeyQuote <- expect: "\"" in: src else: doElse |
116 idx + (key length): | 60 secondQuote <- idx + (key length): |
61 | |
62 #{ | |
63 value <- | |
64 rest <- src from: (value length) | |
65 } | |
66 } | |
67 | |
68 getOutputs:else <- :str :fail { | |
69 | |
117 } | 70 } |
118 | 71 |
119 getEval:else <- :str :fail { | 72 getEval:else <- :str :fail { |
120 statusRest <- getStrForKey: "status" from: str else: fail | 73 statusRest <- getStrForKey: "status" from: str else: fail |
121 if (statusRest value) = 0 { | 74 if (statusRest value) = "ok" { // string equality? revisit. |
122 outputsRest <- getOutputs: (statusRest rest) else: fail | 75 outputsRest <- getOutputs: (statusRest rest) else: fail |
123 #{ | 76 #{ |
124 value <- #{ | 77 value <- #{ |
125 status <- statusRest.value | 78 status <- statusRest.value |
126 outputs <- outputsRest.value | 79 outputs <- outputsRest.value |
128 rest <- outputsRest.rest | 81 rest <- outputsRest.rest |
129 } | 82 } |
130 } else { | 83 } else { |
131 print: "Status was error, message: " . message | 84 print: "Status was error, message: " . message |
132 #{ | 85 #{ |
133 message <- getStrForKey: "message" from: (statusRest rest) else: fail | 86 messageRest <- getStrForKey: "message" from: (statusRest rest) else: fail |
134 value <- #{ | 87 value <- #{ |
135 status <- statusRest.value | 88 status <- statusRest.value |
136 message <- outputsRest.value | 89 message <- messageRest.value |
137 } | 90 } |
138 rest <- outputsRest.rest | 91 rest <- messageRest.rest |
139 } | 92 } |
140 } | 93 } |
141 } | 94 } |
142 | 95 |
143 | 96 |