view 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
line wrap: on
line source

#{

	strJoin <- :str arr {
		acc <- ""
		arr foreach: :i el {
			if: i = 0 {
				acc <- (string: el)
			} else: {
				acc <- acc . ", " . (string: el)
			}
		}
		acc
		//arr fold: "" with: :acc el {acc . el}
	}

	quote <- :str {
		"\"" . str . "\"" 
	}

	println: str {
		print: str . "\n"
	}




	evalRequest <- :id args {
		#{
			string <- {
				idStr <- (quote: "id") . ":" . (quote: id)
				argsStr <- (quote: "arguments") . ":" . (quote: (strJoin: "," args))
				"{" . idStr . "," . argsStr . "}"
			}
		}
	}

	guessRequest <- :id :prog {
		#{
			string <- {
				idStr <- "\"id\":\"" . id . "\""
				progStr <- "\"program\":\"" . prog . "\""
				"{" . idStr . "," . progStr . "}"
			}
		}
	}





	expect:in:else <- :target src doElse {
		src find: target else: {
			print: "parse error: expected " . target . "!\n" 
			doElse:
		}		
	}

	getStrForKey:from:else <- :key :src :doElse {
		firstKeyQuote <- expect: "\"" in: src else: doElse
		secondQuote <- idx + (key length):

		#{
			value <- 
			rest <- src from: (value length)
		}
	}

	getOutputs:else <- :str :fail {
		
	}

	getEval:else <- :str :fail {
		statusRest <- getStrForKey: "status" from: str else: fail
		if (statusRest value) = "ok" { // string equality? revisit.
			outputsRest <- getOutputs: (statusRest rest) else: fail
			#{
				value <- #{
					status <- statusRest.value
					outputs <- outputsRest.value
				}
				rest <- outputsRest.rest
			}
		} else {
			print: "Status was error, message: " . message
			#{
				messageRest <- getStrForKey: "message" from: (statusRest rest) else: fail
				value <- #{
					status <- statusRest.value
					message <- messageRest.value
				}
				rest <- messageRest.rest
			}
		}
	}



	main <- {
		print: ((evalRequest: "someId" #[1 2i64 3i64]) string) . "\n"
		print: ((guessRequest: "someId" "someProg") string) . "\n"

		exampleEvalResponse <- "{\"status\":\"ok\",\"outputs\":[\"0x0000000000000002\",\"0x01DFFFFFFFFFFFFE\"]}"
		resp <- getEval: exampleEvalResponse else: {
			println: "failed to parse response."
		}
		println: ((resp value) status)
	}

}