diff options
author | Martin Fischer <martin@push-f.com> | 2021-11-30 17:47:47 +0100 |
---|---|---|
committer | Martin Fischer <martin@push-f.com> | 2021-12-05 02:52:36 +0100 |
commit | cb8c8b260dc95317b16efddd921e7de2cae57245 (patch) | |
tree | 960db1a71971e2f3b937712fe72e134f53ae0db1 | |
parent | bb24c73a06683c116eba3ad17aebdc87a5302529 (diff) |
spans: start implementing SpanEmitter
-rw-r--r-- | src/spans.rs | 21 |
1 files 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), } |