diff options
| author | Oskari Timperi <oskari.timperi@iki.fi> | 2017-12-05 19:27:09 +0200 |
|---|---|---|
| committer | Oskari Timperi <oskari.timperi@iki.fi> | 2017-12-05 19:27:09 +0200 |
| commit | 7ee6dfc00d26bd41b334386115dd2a58cfd80aab (patch) | |
| tree | fb4d6ae992a7b683d6b938ae205104b1279595d4 /gumbo_parser.nim | |
| download | nim-gumbo-parser-master.tar.gz nim-gumbo-parser-master.zip | |
Diffstat (limited to 'gumbo_parser.nim')
| -rw-r--r-- | gumbo_parser.nim | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/gumbo_parser.nim b/gumbo_parser.nim new file mode 100644 index 0000000..0b5c05a --- /dev/null +++ b/gumbo_parser.nim @@ -0,0 +1,35 @@ +include gumbo_parser / gumbo + +type + CArray {.unchecked.} [T] = array[0..0, T] + +template len*(vector: var GumboVector): int = + vector.length.int + +iterator values*[T](vector: var GumboVector): T = + let arr = cast[ptr CArray[T]](vector.data) + for idx in 0..len(vector)-1: + yield arr[idx] + +iterator children*(document: var GumboDocument): ptr GumboNode = + for child in values[ptr GumboNode](document.children): + yield child + +iterator children*(element: var GumboElement): ptr GumboNode = + for child in values[ptr GumboNode](element.children): + yield child + +iterator children*(node: ptr GumboNode): ptr GumboNode = + case node.`type` + of GumboNodeDocument: + for child in children(node.v.document): + yield child + of GumboNodeElement: + for child in children(node.v.element): + yield child + else: + discard + +iterator attributes*(element: var GumboElement): ptr GumboAttribute = + for attribute in values[ptr GumboAttribute](element.attributes): + yield attribute |
