Expand description
§rdom-parser — HTML-ish template parser for rdom-core
Turns a template string into a Dom<Ext> tree. The parseFromString
equivalent for the rdom family of crates.
§Quick start
use rdom_parser::parse;
use rdom_core::Dom;
let (dom, ids): (Dom<()>, _) = parse(r#"
<div class="hero" id="main">
<h1>Welcome</h1>
<p>Hello & <strong>world</strong></p>
</div>
"#).unwrap();
let div = ids.iter().find(|&&id| dom.node(id).tag_name() == Some("div")).unwrap();
assert!(dom.node(*div).has_class("hero"));§Supported
- Start / end / self-closing tags, case-insensitive tag names
- Void elements (
<br>,<hr>,<img>, …) auto-close - Attributes:
name="value",name='value',name=value,name(boolean).class="a b c"populates the classList. - Text with entity decoding:
& < > " ' &#NNN; &#xHH; - Comments:
<!-- … -->preserved as Comment nodes - Case-insensitive tag names (normalized to lowercase)
- Attribute names preserved case
§Not supported (out of scope)
<!DOCTYPE>— no need for a TUI DOM- CDATA sections, namespace prefixes, processing instructions
<script>/<style>raw-text mode (our DOM doesn’t have these)- Mismatched tags are errors, not auto-repaired
§Error reporting
ParseError carries line/col/pos + optional hint:
let err = parse::<()>("<div><span></p></div>").unwrap_err();
assert!(err.msg.contains("mismatched"));
assert!(err.hint.is_some());Structs§
- Parse
Error - Parse error with position + optional hint.
Traits§
- Node
MutHtml - HTML setters on
NodeMut. Brings theinnerHTML/outerHTML/insertAdjacentHTMLergonomics thatrdom-corecan’t expose directly (since it can’t depend on the parser).
Functions§
- parse
- Parse
templateinto a freshDom<Ext>with a Fragment root. The returned ids are the top-level children of the fragment. - parse_
into - Parse
templateand append the parsed tree undermount. Returns the ids of the top-level parsed nodes (direct children appended tomount). Does not alter existing children ofmount.
Type Aliases§
- Result
Resultalias for parser operations.