diff options
| author | Martin Fischer <martin@push-f.com> | 2023-09-01 12:38:40 +0200 | 
|---|---|---|
| committer | Martin Fischer <martin@push-f.com> | 2023-09-03 23:00:05 +0200 | 
| commit | 03ca8c1f599828eb12e60e6012684bb4c09dbf89 (patch) | |
| tree | 27709eb8f048625ea45cfa76ea1671314bc4aba6 /src | |
| parent | 822cc78d438e8df6a068d811d3cc825b883aba36 (diff) | |
fix!: calculate tag offsets in Tokenizer instead of Emitter impl
Diffstat (limited to 'src')
| -rw-r--r-- | src/emitter.rs | 8 | ||||
| -rw-r--r-- | src/tokenizer.rs | 8 | 
2 files changed, 9 insertions, 7 deletions
| diff --git a/src/emitter.rs b/src/emitter.rs index 9334121..ff6e863 100644 --- a/src/emitter.rs +++ b/src/emitter.rs @@ -275,7 +275,7 @@ impl<O: Offset> Emitter<O> for DefaultEmitter<O> {      fn init_start_tag(&mut self, offset: O) {          self.current_token = Some(Token::StartTag(StartTag { -            span: offset - b"<".len()..offset - b"<".len(), +            span: offset..O::default(),              self_closing: false,              name: String::new(),              attributes: Default::default(), @@ -283,7 +283,7 @@ impl<O: Offset> Emitter<O> for DefaultEmitter<O> {      }      fn init_end_tag(&mut self, offset: O) {          self.current_token = Some(Token::EndTag(EndTag { -            span: offset - b"</".len()..offset - b"</".len(), +            span: offset..O::default(),              name: String::new(),          }));          self.seen_attributes.clear(); @@ -305,10 +305,10 @@ impl<O: Offset> Emitter<O> for DefaultEmitter<O> {                      self.push_error(Error::EndTagWithAttributes, span);                  }                  self.seen_attributes.clear(); -                tag.span.end = offset + b">".len(); +                tag.span.end = offset;              }              Token::StartTag(tag) => { -                tag.span.end = offset + b">".len(); +                tag.span.end = offset;              }              _ => debug_assert!(false),          } diff --git a/src/tokenizer.rs b/src/tokenizer.rs index cecc0f6..89d743a 100644 --- a/src/tokenizer.rs +++ b/src/tokenizer.rs @@ -218,14 +218,16 @@ impl<R: Reader + Position<O>, O: Offset, E: Emitter<O>> Tokenizer<R, O, E> {      #[inline]      pub(crate) fn init_start_tag(&mut self) { -        self.emitter.init_start_tag(self.reader.position() - 1); +        self.emitter +            .init_start_tag(self.reader.position() - "<".len() - 1);          self.current_tag_name.clear();          self.is_start_tag = true;      }      #[inline]      pub(crate) fn init_end_tag(&mut self) { -        self.emitter.init_end_tag(self.reader.position() - 1); +        self.emitter +            .init_end_tag(self.reader.position() - "</".len() - 1);          self.current_tag_name.clear();          self.is_start_tag = false;      } @@ -238,7 +240,7 @@ impl<R: Reader + Position<O>, O: Offset, E: Emitter<O>> Tokenizer<R, O, E> {      #[inline]      pub(crate) fn emit_current_tag(&mut self) { -        self.emitter.emit_current_tag(self.reader.position() - 1); +        self.emitter.emit_current_tag(self.reader.position());          if self.is_start_tag {              if self.naively_switch_state {                  self.state = naive_next_state(&self.current_tag_name).into(); | 
