diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/spans.rs | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/spans.rs b/src/spans.rs index cf65053..663bd59 100644 --- a/src/spans.rs +++ b/src/spans.rs @@ -8,6 +8,10 @@ use crate::{Doctype, Emitter, EndTag, Error, StartTag, Token}; type Span = std::ops::Range<usize>; +pub trait GetPos { + fn get_pos(&self) -> usize; +} + /// The default implementation of [`crate::Emitter`], used to produce ("emit") tokens. pub struct SpanEmitter<R> { current_characters: String, @@ -33,7 +37,7 @@ impl<R> Default for SpanEmitter<R> { } } -impl<R> SpanEmitter<R> { +impl<R: GetPos> SpanEmitter<R> { fn emit_token(&mut self, token: Token<Span>) { self.flush_current_characters(); self.emitted_tokens.push_front(token); @@ -77,7 +81,7 @@ impl<R> SpanEmitter<R> { } } -impl<R> Emitter<R> for SpanEmitter<R> { +impl<R: GetPos> Emitter<R> for SpanEmitter<R> { type Token = Token<Span>; fn set_last_start_tag(&mut self, last_start_tag: Option<&str>) { |