From 03ca8c1f599828eb12e60e6012684bb4c09dbf89 Mon Sep 17 00:00:00 2001 From: Martin Fischer Date: Fri, 1 Sep 2023 12:38:40 +0200 Subject: fix!: calculate tag offsets in Tokenizer instead of Emitter impl --- src/emitter.rs | 8 ++++---- src/tokenizer.rs | 8 +++++--- 2 files changed, 9 insertions(+), 7 deletions(-) (limited to 'src') 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 Emitter for DefaultEmitter { 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 Emitter for DefaultEmitter { } fn init_end_tag(&mut self, offset: O) { self.current_token = Some(Token::EndTag(EndTag { - span: offset - b" Emitter for DefaultEmitter { 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, O: Offset, E: Emitter> Tokenizer { #[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() - ", O: Offset, E: Emitter> Tokenizer { #[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(); -- cgit v1.2.3