From cb8c8b260dc95317b16efddd921e7de2cae57245 Mon Sep 17 00:00:00 2001
From: Martin Fischer <martin@push-f.com>
Date: Tue, 30 Nov 2021 17:47:47 +0100
Subject: spans: start implementing SpanEmitter

---
 src/spans.rs | 21 +++++++++++++++++----
 1 file changed, 17 insertions(+), 4 deletions(-)

diff --git a/src/spans.rs b/src/spans.rs
index 1fc17c1..9d02940 100644
--- a/src/spans.rs
+++ b/src/spans.rs
@@ -143,8 +143,11 @@ impl<R: GetPos> Emitter<R> for SpanEmitter<R> {
         self.current_characters.push_str(s);
     }
 
-    fn init_start_tag(&mut self, _reader: &R) {
-        self.current_token = Some(Token::StartTag(Default::default()));
+    fn init_start_tag(&mut self, reader: &R) {
+        self.current_token = Some(Token::StartTag(StartTag {
+            name_span: reader.get_pos()..reader.get_pos(),
+            ..Default::default()
+        }));
     }
     fn init_end_tag(&mut self, _reader: &R) {
         self.current_token = Some(Token::EndTag(Default::default()));
@@ -208,11 +211,21 @@ impl<R: GetPos> Emitter<R> for SpanEmitter<R> {
     }
     fn push_tag_name(&mut self, s: &str) {
         match self.current_token {
-            Some(Token::StartTag(StartTag { ref mut name, .. })) => {
+            Some(Token::StartTag(StartTag {
+                ref mut name,
+                ref mut name_span,
+                ..
+            })) => {
                 name.push_str(s);
+                name_span.end += s.len();
             }
-            Some(Token::EndTag(EndTag { ref mut name, .. })) => {
+            Some(Token::EndTag(EndTag {
+                ref mut name,
+                ref mut name_span,
+                ..
+            })) => {
                 name.push_str(s);
+                name_span.end += s.len();
             }
             _ => debug_assert!(false),
         }
-- 
cgit v1.2.3