diff options
author | Martin Fischer <martin@push-f.com> | 2021-04-08 10:01:14 +0200 |
---|---|---|
committer | Martin Fischer <martin@push-f.com> | 2021-04-08 15:40:48 +0200 |
commit | fc9d3132f390b038544e45048b4fe345a3d47793 (patch) | |
tree | 0178d2f7abc72590147f4fb9585abfd37b978d54 | |
parent | da4bd49ed1d51461e0841d426784cab4c0f84d1d (diff) |
merge Attribute from markup5ever
-rw-r--r-- | src/tokenizer/interface.rs | 17 | ||||
-rw-r--r-- | src/tokenizer/mod.rs | 4 |
2 files changed, 17 insertions, 4 deletions
diff --git a/src/tokenizer/interface.rs b/src/tokenizer/interface.rs index 35ba9c5..ebb8569 100644 --- a/src/tokenizer/interface.rs +++ b/src/tokenizer/interface.rs @@ -7,10 +7,9 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -use markup5ever::interface::Attribute; use tendril::StrTendril; use crate::tokenizer::states; -use markup5ever::LocalName; +use markup5ever::{LocalName, QualName}; use std::borrow::Cow; pub use self::TagKind::{EndTag, StartTag}; @@ -44,6 +43,20 @@ pub enum TagKind { EndTag, } +/// A tag attribute, e.g. `class="test"` in `<div class="test" ...>`. +/// +/// The namespace on the attribute name is almost always ns!(""). +/// The tokenizer creates all attributes this way, but the tree +/// builder will adjust certain attribute names inside foreign +/// content (MathML, SVG). +#[derive(PartialEq, Eq, PartialOrd, Ord, Clone, Debug)] +pub struct Attribute { + /// The name of the attribute (e.g. the `class` in `<div class="test">`) + pub name: QualName, + /// The value of the attribute (e.g. the `"test"` in `<div class="test">`) + pub value: StrTendril, +} + /// A tag token. #[derive(PartialEq, Eq, Clone, Debug)] pub struct Tag { diff --git a/src/tokenizer/mod.rs b/src/tokenizer/mod.rs index 6c5823f..c6f7276 100644 --- a/src/tokenizer/mod.rs +++ b/src/tokenizer/mod.rs @@ -11,7 +11,7 @@ pub use self::interface::{CharacterTokens, EOFToken, NullCharacterToken, ParseError}; pub use self::interface::{CommentToken, DoctypeToken, TagToken, Token}; -pub use self::interface::{Doctype, EndTag, StartTag, Tag, TagKind}; +pub use self::interface::{Doctype, EndTag, StartTag, Tag, TagKind, Attribute}; pub use self::interface::{TokenSink, TokenSinkResult}; use self::states::{DoctypeIdKind, Public, System}; @@ -33,7 +33,7 @@ use std::mem::replace; pub use crate::util::buffer_queue::{BufferQueue, FromSet, NotFromSet, SetResult}; use tendril::StrTendril; -use markup5ever::{Attribute, LocalName, QualName}; +use markup5ever::{LocalName, QualName}; mod char_ref; mod interface; |