diff options
-rw-r--r-- | CHANGELOG.md | 2 | ||||
-rw-r--r-- | src/token.rs | 12 | ||||
-rw-r--r-- | src/tokenizer.rs | 2 |
3 files changed, 9 insertions, 7 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index d35ffc3..3f175d7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,8 @@ * Added offsets for end-of-file tokens. +* Implemented `Clone` for `Token` (and all contained types) and `Event`. + * Added a blanket implementation to implement `Reader` for boxed readers. #### Breaking changes diff --git a/src/token.rs b/src/token.rs index 4f3c0ce..45c8123 100644 --- a/src/token.rs +++ b/src/token.rs @@ -5,7 +5,7 @@ use std::iter::FromIterator; use std::ops::Index; /// A type for the tokens emitted by a WHATWG-compliant HTML tokenizer. -#[derive(Debug, Eq, PartialEq)] +#[derive(Clone, Debug, Eq, PartialEq)] pub enum Token { /// A literal character, a resolved character reference, /// or part of a resolved character reference (since some @@ -24,7 +24,7 @@ pub enum Token { } /// An HTML start tag, such as `<p>` or `<a>`. -#[derive(Debug, Eq, PartialEq)] +#[derive(Clone, Debug, Eq, PartialEq)] pub struct StartTag { /// Whether this tag is self-closing. If it is self-closing, no following [`EndTag`] should be /// expected. @@ -41,7 +41,7 @@ pub struct StartTag { } /// An HTML end/close tag, such as `</p>` or `</a>`. -#[derive(Debug, Eq, PartialEq)] +#[derive(Clone, Debug, Eq, PartialEq)] pub struct EndTag { /// The tag name. /// Uppercase ASCII characters (A-Z) have been converted to lowercase. @@ -54,7 +54,7 @@ pub struct EndTag { /// * `<!DOCTYPE {name} PUBLIC '{public_id}'>` /// * `<!DOCTYPE {name} SYSTEM '{system_id}'>` /// * `<!DOCTYPE {name} PUBLIC '{public_id}' '{system_id}'>` -#[derive(Debug, Eq, PartialEq)] +#[derive(Clone, Debug, Eq, PartialEq)] pub struct Doctype { /// The [force-quirks flag]. /// @@ -86,14 +86,14 @@ pub struct Doctype { /// .collect(); /// assert_eq!(&attrs["href"], "http://example.com"); /// ``` -#[derive(Debug, Default, PartialEq, Eq)] +#[derive(Clone, Debug, Default, PartialEq, Eq)] pub struct AttributeMap { pub(crate) inner: BTreeMap<String, AttrInternal>, } /// The value type internally used by the [`AttributeMap`]. /// Not part of the public API. -#[derive(Default, Debug, Eq)] +#[derive(Clone, Default, Debug, Eq)] pub(crate) struct AttrInternal { pub value: String, pub trace_idx: Option<AttributeTraceIdx>, diff --git a/src/tokenizer.rs b/src/tokenizer.rs index 661214c..83b18e1 100644 --- a/src/tokenizer.rs +++ b/src/tokenizer.rs @@ -72,7 +72,7 @@ impl<R: Reader + Position<O>, O: Offset, E: Emitter<O>> Tokenizer<R, O, E> { } /// An event yielded by the [`Iterator`] implementation for the [`Tokenizer`]. -#[derive(Debug)] +#[derive(Clone, Debug)] pub enum Event<T> { /// A token emitted by the [`Emitter`]. Token(T), |