xrust/parser/xml/dtd/
elementdecl.rs1use crate::item::Node;
2use crate::parser::combinators::tag::tag;
3use crate::parser::combinators::tuple::tuple7;
4use crate::parser::combinators::whitespace::{whitespace0, whitespace1};
5use crate::parser::xml::dtd::misc::contentspec;
6use crate::parser::xml::qname::qualname;
7use crate::parser::{ParseError, ParseInput};
8
9pub(crate) fn elementdecl<N: Node>()
11-> impl Fn(ParseInput<N>) -> Result<(ParseInput<N>, ()), ParseError> {
12 move |input| match tuple7(
13 tag("<!ELEMENT"),
14 whitespace1(),
15 qualname(),
16 whitespace1(),
17 contentspec(), whitespace0(),
19 tag(">"),
20 )(input)
21 {
22 Ok(((input2, mut state2), (_, _, n, _, s, _, _))) => {
23 state2.dtd.elements.insert(n, s);
24 Ok(((input2, state2), ()))
25 }
26 Err(err) => Err(err),
27 }
28}