diff options
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/terminal.nim | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/gui/terminal.nim b/src/gui/terminal.nim new file mode 100644 index 0000000..e893081 --- /dev/null +++ b/src/gui/terminal.nim @@ -0,0 +1,35 @@ +import std/[strutils, tables], ../formats/html + +proc print(node: Node, indent=0, raw=false) = + if node.kind == Element: + if not raw: + stdout.write(" ".repeat(indent)) + stdout.write("<" & node.tag) + for attribute in node.attributes.pairs: + stdout.write(" " & attribute[0] & "=" & attribute[1]) + stdout.write(">") + stdout.write('\n') + for i in node.nested: + i.print(indent+2) + if not raw: + stdout.write(" ".repeat(indent)) + stdout.write("</" & node.tag & ">") + stdout.write('\n') + else: + stdout.write(" ".repeat(indent)) + stdout.write(node.text) + +proc render*(html: Html) = + for node in html: + node.print() + +proc renderSource*(html: Html) = + for node in html: + node.print(0, true) + +when isMainModule: + import ../protocols/http, ../uri + let url = "https://example.org:443/index.html" + let request = httpRequest(parseUrl(url)) + let parsed = parseHTML(request.body) + renderSource(parsed) |