diff options
author | bptato <nincsnevem662@gmail.com> | 2023-10-23 15:27:33 +0200 |
---|---|---|
committer | bptato <nincsnevem662@gmail.com> | 2023-10-23 15:27:33 +0200 |
commit | bb1acc09593b1a66f6ffe9012600f0edeab1ebff (patch) | |
tree | af228d0cefac7e9d20bce71ede4f5f33d8d901df | |
parent | 2e0be4e317e1e6cfaca63ba88833c55db8098996 (diff) | |
download | chawan-bb1acc09593b1a66f6ffe9012600f0edeab1ebff.tar.gz |
htmlparser: add openElementsInit, formInit to opts
Makes it possible to set an initial value for openElements and the form pointer, as required by the HTML fragment parsing algorithm.
-rw-r--r-- | chame/htmlparser.nim | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/chame/htmlparser.nim b/chame/htmlparser.nim index 9cb03b0e..35b16cf6 100644 --- a/chame/htmlparser.nim +++ b/chame/htmlparser.nim @@ -114,6 +114,13 @@ type ## the fragment case is used while parsing. initialTokenizerState*: TokenizerState ## The initial tokenizer state; by default, this is DATA. + openElementsInit*: seq[Handle] + ## Initial state of the stack of open elements. By default, the stack + ## starts out empty. + ## Note: if this is initialized to a non-empty sequence, the parser will + ## start by resetting the insertion mode appropriately. + formInit*: Option[Handle] + ## Initial state of the parser's form pointer. DOMBuilderFinish*[Handle] = proc(builder: DOMBuilder[Handle]) {.nimcall.} @@ -2762,8 +2769,12 @@ proc parseHTML*[Handle](inputStream: Stream, dombuilder: DOMBuilder[Handle], dombuilder: dombuilder, confidence: confidence, charset: charset, - opts: opts + opts: opts, + openElements: opts.openElementsInit, + form: opts.formInit ) + if opts.openElementsInit.len > 0: + parser.resetInsertionMode() if charset != previousCharset: parser.setCharacterSet(charset) previousCharset = charset |