From cb4e9cf7cfc1612c67f16bfabadbdf442cd380fe Mon Sep 17 00:00:00 2001 From: Martin Fischer Date: Thu, 17 Aug 2023 16:12:51 +0200 Subject: fix: fix lots of position off-by-ones Previously the PosTrackingReader always mysteriously subtracted 1 from the current position ... this wasn't sound at all ... the machine just happens to often call `Tokenizer::unread_char` ... but not always. E.g. for proper comments it didn't which resulted in their offset and spans being off-by-one, which is fixed by this commit (see test_spans.rs). --- tests/test_spans.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'tests') diff --git a/tests/test_spans.rs b/tests/test_spans.rs index 970099a..a33c2b3 100644 --- a/tests/test_spans.rs +++ b/tests/test_spans.rs @@ -111,12 +111,11 @@ fn comment_proper_data_span() { let Token::Comment(comment) = tokenizer(html).next().unwrap() else { panic!("expected comment"); }; - // FIXME: this span is wrong (starts one byte too soon) - assert_eq!(comment.data, html[1..][comment.data_span()]); + assert_eq!(comment.data, html[comment.data_span()]); let labels = vec![(comment.data_span(), "")]; assert_snapshot!(annotate(html, labels), @r###" - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ "###); } -- cgit v1.2.3