fix: Initial chardata was being thrown away
Some checks failed
test / test (push) Has been cancelled
Some checks failed
test / test (push) Has been cancelled
This commit is contained in:
@@ -44,12 +44,19 @@ pub type Element {
|
||||
|
||||
pub fn main() {
|
||||
parse_document(
|
||||
"<?xml version=\"1.1\" encoding='UTF-8'?>\r\n <!-- hello-world --> \n<b><a attr='ha &#38;ha' battr='baba' ref='&'/><!-- ma comment --><![CDATA[Testing&&<haha>]]><?test asuhashd ?></b>",
|
||||
//"<?xml version=\"1.1\" encoding='UTF-8'?>\r\n <!-- hello-world --> \n<b blah:test='1'><a attr='ha &#38;ha' battr='baba' ref='&'/><!-- ma comment --><![CDATA[Testing&&<haha>]]><?test asuhashd ?></b>",
|
||||
// "<doc>
|
||||
"<doc>
|
||||
<A a=\"asdf>'">
|
||||
asdf
|
||||
?>%\"/>
|
||||
<A a='\"\">'"'/>
|
||||
</doc>",
|
||||
)
|
||||
|> echo
|
||||
}
|
||||
|
||||
pub fn default_entities() -> dict.Dict(String, Entity) {
|
||||
fn default_entities() -> dict.Dict(String, Entity) {
|
||||
dict.from_list([
|
||||
#("lt", InternalEntity("<")),
|
||||
#("gt", InternalEntity(">")),
|
||||
@@ -144,7 +151,7 @@ fn parse_content(
|
||||
content: List(Element),
|
||||
) -> Result(#(List(Element), String), Nil) {
|
||||
use #(chardata, doc) <- result.try(parse_chardata(doc, doctype, ""))
|
||||
let new_content = case chardata {
|
||||
let content = case chardata {
|
||||
"" -> content
|
||||
_ -> [Text(chardata), ..content]
|
||||
}
|
||||
@@ -163,10 +170,10 @@ fn parse_content(
|
||||
)
|
||||
{
|
||||
Ok(#(element, doc)) -> parse_content(doc, doctype, [element, ..content])
|
||||
Error(_) -> Ok(#(list.reverse(new_content), doc))
|
||||
Error(_) -> Ok(#(list.reverse(content), doc))
|
||||
}
|
||||
}
|
||||
_ -> Ok(#(list.reverse(new_content), doc))
|
||||
_ -> Ok(#(list.reverse(content), doc))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -592,7 +599,7 @@ fn parse_digit(doc: String) -> Result(#(String, String), Nil) {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn parse_hex_digit(str: String) -> Result(#(String, String), Nil) {
|
||||
fn parse_hex_digit(str: String) -> Result(#(String, String), Nil) {
|
||||
case str {
|
||||
"0" as digit <> tail
|
||||
| "1" as digit <> tail
|
||||
@@ -831,7 +838,7 @@ fn try_parsers(
|
||||
}
|
||||
}
|
||||
|
||||
pub fn parse_multiple(
|
||||
fn parse_multiple(
|
||||
to_parse str: String,
|
||||
with to_run: fn(String) -> Result(#(String, String), Nil),
|
||||
) -> Result(#(String, String), Nil) {
|
||||
|
||||
Reference in New Issue
Block a user