diff options
| -rw-r--r-- | src/emitter.rs | 126 | 
1 files changed, 63 insertions, 63 deletions
| diff --git a/src/emitter.rs b/src/emitter.rs index 7a567b4..25e0209 100644 --- a/src/emitter.rs +++ b/src/emitter.rs @@ -27,52 +27,57 @@ pub trait Emitter<O> {      /// Reports a parse error.      fn report_error(&mut self, error: Error, span: Range<O>); -    /// The state machine has reached the end of the file. -    fn emit_eof(&mut self); -      /// Emits the given character as a character token.      fn emit_char(&mut self, c: char); +    /// The state machine has reached the end of the file. +    fn emit_eof(&mut self); +      /// Set the _current token_ to a start tag.      fn init_start_tag(&mut self, tag_offset: O, name_offset: O);      /// Set the _current token_ to an end tag.      fn init_end_tag(&mut self, tag_offset: O, name_offset: O); -    /// Set the _current token_ to a comment. -    fn init_comment(&mut self, data_start_offset: O); - -    /// Emit the _current token_, assuming it is a tag. -    /// -    /// Also get the current attribute and append it to the to-be-emitted tag. See docstring for -    /// [`Emitter::init_attribute_name`] for how duplicates should be handled. -    /// -    /// If an end tag is emitted with attributes, an [`Error::EndTagWithAttributes`] -    /// error should be emitted. +    /// Assuming the _current token_ is a start/end tag, append a string to the current tag's name.      /// -    /// If the current token is not a start/end tag, this method may panic. -    fn emit_current_tag(&mut self, offset: O); +    /// If the current token is not a start or end tag, this method may panic. +    fn push_tag_name(&mut self, s: &str); -    /// Emit the _current token_, assuming it is a comment. +    /// Called after the last [`push_tag_name`] call for a tag name.      /// -    /// If the current token is not a comment, this method may panic. -    fn emit_current_comment(&mut self, data_end_offset: O); +    /// [`push_tag_name`]: Self::push_tag_name +    fn terminate_tag_name(&mut self, offset: O) {} -    /// Emit the _current token_, assuming it is a doctype. +    /// Set the _current attribute_ to a new one, starting with empty name and value strings.      /// -    /// If the current token is not a doctype, this method may panic. -    fn emit_current_doctype(&mut self, offset: O); +    /// The old attribute, if any, should be put on the _current token_. If an attribute with that +    /// name already exists, WHATWG says the new one should be ignored and a +    /// [`Error::DuplicateAttribute`] error should be emitted. +    /// +    /// If the current token is no tag at all, this method may panic. +    fn init_attribute_name(&mut self, offset: O); -    /// Called after the last [`push_tag_name`] call for a tag name. +    /// Append a string to the current attribute's name.      /// -    /// [`push_tag_name`]: Self::push_tag_name -    fn terminate_tag_name(&mut self, offset: O) {} +    /// If there is no current attribute, this method may panic. +    fn push_attribute_name(&mut self, s: &str);      /// Called after the last [`push_attribute_name`] call for an attribute name.      ///      /// [`push_attribute_name`]: Self::push_attribute_name      fn terminate_attribute_name(&mut self, offset: O) {} +    /// Called before the first push_attribute_value call. +    /// +    /// If there is no current attribute, this method may panic. +    fn init_attribute_value(&mut self, syntax: AttrValueSyntax, offset: O) {} + +    /// Append a string to the current attribute's value. +    /// +    /// If there is no current attribute, this method may panic. +    fn push_attribute_value(&mut self, s: &str); +      /// Called after the last [`push_attribute_value`] call for an attribute value.      ///      /// [`push_attribute_value`]: Self::push_attribute_value @@ -86,25 +91,29 @@ pub trait Emitter<O> {      /// [`Error::EndTagWithTrailingSolidus`] error.      fn set_self_closing(&mut self, slash_span: Range<O>); -    /// Assuming the _current token_ is a doctype, set its "force quirks" flag to true. +    /// Emit the _current token_, assuming it is a tag.      /// -    /// If the current token is not a doctype, this method pay panic. -    fn set_force_quirks(&mut self); - -    /// Assuming the _current token_ is a start/end tag, append a string to the current tag's name. +    /// Also get the current attribute and append it to the to-be-emitted tag. See docstring for +    /// [`Emitter::init_attribute_name`] for how duplicates should be handled.      /// -    /// If the current token is not a start or end tag, this method may panic. -    fn push_tag_name(&mut self, s: &str); +    /// If an end tag is emitted with attributes, an [`Error::EndTagWithAttributes`] +    /// error should be emitted. +    /// +    /// If the current token is not a start/end tag, this method may panic. +    fn emit_current_tag(&mut self, offset: O); + +    /// Set the _current token_ to a comment. +    fn init_comment(&mut self, data_start_offset: O);      /// Assuming the _current token_ is a comment, append a string to the comment's contents.      ///      /// If the current token is not a comment, this method may panic.      fn push_comment(&mut self, s: &str); -    /// Assuming the _current token_ is a doctype, append a string to the doctype's name. +    /// Emit the _current token_, assuming it is a comment.      /// -    /// If the current token is not a doctype, this method may panic. -    fn push_doctype_name(&mut self, s: &str); +    /// If the current token is not a comment, this method may panic. +    fn emit_current_comment(&mut self, data_end_offset: O);      /// Set the _current token_ to a new doctype token:      /// @@ -114,35 +123,16 @@ pub trait Emitter<O> {      /// * the "force quirks" flag should be `false`      fn init_doctype(&mut self, offset: O); -    /// Set the _current attribute_ to a new one, starting with empty name and value strings. -    /// -    /// The old attribute, if any, should be put on the _current token_. If an attribute with that -    /// name already exists, WHATWG says the new one should be ignored and a -    /// [`Error::DuplicateAttribute`] error should be emitted. -    /// -    /// If the current token is no tag at all, this method may panic. -    fn init_attribute_name(&mut self, offset: O); - -    /// Called before the first push_attribute_value call. -    /// -    /// If there is no current attribute, this method may panic. -    fn init_attribute_value(&mut self, syntax: AttrValueSyntax, offset: O) {} - -    /// Append a string to the current attribute's name. -    /// -    /// If there is no current attribute, this method may panic. -    fn push_attribute_name(&mut self, s: &str); - -    /// Append a string to the current attribute's value. -    /// -    /// If there is no current attribute, this method may panic. -    fn push_attribute_value(&mut self, s: &str); -      /// Assuming the _current token_ is a doctype, set its name to the empty string.      ///      /// If the current token is not a doctype, this method may panic.      fn init_doctype_name(&mut self, offset: O) {} +    /// Assuming the _current token_ is a doctype, append a string to the doctype's name. +    /// +    /// If the current token is not a doctype, this method may panic. +    fn push_doctype_name(&mut self, s: &str); +      /// Called after the last [`push_doctype_name`] call for a DOCTYPE name.      ///      /// [`push_doctype_name`]: Self::push_doctype_name @@ -153,6 +143,11 @@ pub trait Emitter<O> {      /// If the current token is not a doctype, this method may panic.      fn init_doctype_public_id(&mut self, offset: O); +    /// Assuming the _current token_ is a doctype, append a string to its "public identifier" to the given string. +    /// +    /// If the current token is not a doctype, this method may panic. +    fn push_doctype_public_id(&mut self, s: &str); +      /// Called after the last [`push_doctype_public_id`] call for a DOCTYPE public identifier.      ///      /// [`push_doctype_public_id`]: Self::push_doctype_public_id @@ -163,11 +158,6 @@ pub trait Emitter<O> {      /// If the current token is not a doctype, this method may panic.      fn init_doctype_system_id(&mut self, offset: O); -    /// Assuming the _current token_ is a doctype, append a string to its "public identifier" to the given string. -    /// -    /// If the current token is not a doctype, this method may panic. -    fn push_doctype_public_id(&mut self, s: &str); -      /// Assuming the _current token_ is a doctype, append a string to its "system identifier" to the given string.      ///      /// If the current token is not a doctype, this method may panic. @@ -177,4 +167,14 @@ pub trait Emitter<O> {      ///      /// [`push_doctype_system_id`]: Self::push_doctype_system_id      fn terminate_doctype_system_id(&mut self, offset: O) {} + +    /// Assuming the _current token_ is a doctype, set its "force quirks" flag to true. +    /// +    /// If the current token is not a doctype, this method pay panic. +    fn set_force_quirks(&mut self); + +    /// Emit the _current token_, assuming it is a doctype. +    /// +    /// If the current token is not a doctype, this method may panic. +    fn emit_current_doctype(&mut self, offset: O);  } | 
