mirror of
https://github.com/status-im/NimYAML.git
synced 2025-02-04 23:45:08 +00:00
Server: Added possibility to show token stream
This commit is contained in:
parent
a028b43858
commit
7eca93f988
@ -80,6 +80,10 @@
|
|||||||
<input type="radio" name="style" id="style-json" value="json"/>
|
<input type="radio" name="style" id="style-json" value="json"/>
|
||||||
<label for="style-json">JSON</label>
|
<label for="style-json">JSON</label>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="style-option">
|
||||||
|
<input type="radio" name="style" id="style-tokens" value="tokens"/>
|
||||||
|
<label for="style-tokens">Tokens</label>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
@ -139,4 +143,4 @@
|
|||||||
parse();
|
parse();
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@ -12,26 +12,50 @@ routes:
|
|||||||
headers["Content-Type"] = "text/plain"
|
headers["Content-Type"] = "text/plain"
|
||||||
resp "I am a friendly NimYAML parser webservice."
|
resp "I am a friendly NimYAML parser webservice."
|
||||||
post "/":
|
post "/":
|
||||||
var style: PresentationStyle
|
var
|
||||||
|
style: PresentationStyle
|
||||||
|
resultNode = newJObject()
|
||||||
|
tokens = false
|
||||||
|
headers["Access-Control-Allow-Origin"] = "*"
|
||||||
|
headers["Pragma"] = "no-cache"
|
||||||
|
headers["Cache-Control"] = "no-cache"
|
||||||
|
headers["Expires"] = "0"
|
||||||
case @"style"
|
case @"style"
|
||||||
of "minimal": style = psMinimal
|
of "minimal": style = psMinimal
|
||||||
of "canonical": style = psCanonical
|
of "canonical": style = psCanonical
|
||||||
of "default": style = psDefault
|
of "default": style = psDefault
|
||||||
of "json": style = psJson
|
of "json": style = psJson
|
||||||
of "block": style = psBlockOnly
|
of "block": style = psBlockOnly
|
||||||
var
|
of "tokens":
|
||||||
|
var
|
||||||
|
output = ""
|
||||||
|
parser = newYamlParser()
|
||||||
|
events = parser.parse(newStringStream(@"input"))
|
||||||
|
try:
|
||||||
|
for event in events:
|
||||||
|
output.add($event & "\n")
|
||||||
|
resultNode["code"] = %0
|
||||||
|
resultNode["output"] = %output
|
||||||
|
resp resultNode.pretty, "application/json"
|
||||||
|
tokens = true
|
||||||
|
except YamlParserError:
|
||||||
|
let e = (ref YamlParserError)(getCurrentException())
|
||||||
|
resultNode["code"] = %1
|
||||||
|
resultNode["line"] = %e.line
|
||||||
|
resultNode["column"] = %e.column
|
||||||
|
resultNode["message"] = %e.msg
|
||||||
|
resultNode["detail"] = %e.lineContent
|
||||||
|
resp resultNode.pretty, "application/json"
|
||||||
|
if not tokens:
|
||||||
|
echo "outputting YAML"
|
||||||
|
var
|
||||||
output = newStringStream()
|
output = newStringStream()
|
||||||
resultNode = newJObject()
|
try:
|
||||||
headers["Access-Control-Allow-Origin"] = "*"
|
|
||||||
headers["Pragma"] = "no-cache"
|
|
||||||
headers["Cache-Control"] = "no-cache"
|
|
||||||
headers["Expires"] = "0"
|
|
||||||
try:
|
|
||||||
transform(newStringStream(@"input"), output, style)
|
transform(newStringStream(@"input"), output, style)
|
||||||
resultNode["code"] = %0
|
resultNode["code"] = %0
|
||||||
resultNode["output"] = %output.data
|
resultNode["output"] = %output.data
|
||||||
resp resultNode.pretty, "application/json"
|
resp resultNode.pretty, "application/json"
|
||||||
except YamlParserError:
|
except YamlParserError:
|
||||||
let e = (ref YamlParserError)(getCurrentException())
|
let e = (ref YamlParserError)(getCurrentException())
|
||||||
resultNode["code"] = %1
|
resultNode["code"] = %1
|
||||||
resultNode["line"] = %e.line
|
resultNode["line"] = %e.line
|
||||||
@ -39,13 +63,13 @@ routes:
|
|||||||
resultNode["message"] = %e.msg
|
resultNode["message"] = %e.msg
|
||||||
resultNode["detail"] = %e.lineContent
|
resultNode["detail"] = %e.lineContent
|
||||||
resp resultNode.pretty, "application/json"
|
resp resultNode.pretty, "application/json"
|
||||||
except YamlPresenterJsonError:
|
except YamlPresenterJsonError:
|
||||||
let e = getCurrentException()
|
let e = getCurrentException()
|
||||||
resultNode["code"] = %2
|
resultNode["code"] = %2
|
||||||
resultNode["message"] = %e.msg
|
resultNode["message"] = %e.msg
|
||||||
headers["Content-Type"] = "application/json"
|
headers["Content-Type"] = "application/json"
|
||||||
resp resultNode.pretty, "application/json"
|
resp resultNode.pretty, "application/json"
|
||||||
except:
|
except:
|
||||||
let e = getCurrentException()
|
let e = getCurrentException()
|
||||||
let msg = "Name: " & $e.name & "\nMessage: " & e.msg &
|
let msg = "Name: " & $e.name & "\nMessage: " & e.msg &
|
||||||
"\nTrace:\n" & e.getStackTrace
|
"\nTrace:\n" & e.getStackTrace
|
||||||
|
Loading…
x
Reference in New Issue
Block a user