pub struct Spans<'a> { /* private fields */ }Expand description
Finds where inline code spans close, for a scan that reads its input once, left to right.
Call Spans::line at each line start the scan reaches outside a fence,
and Spans::close at each backtick run it reaches. A whole pass is
linear in the size of its input.
§Examples
use markdown_link::code::{CodeRules, Spans};
let bytes = b"`a` b";
let mut spans = Spans::new(CodeRules::CommonMark, bytes);
spans.line(bytes);
// A one-backtick span opens at byte 0 and closes at byte 2.
assert_eq!(spans.close(0), (1, Some(2)));
let open = b"`a b";
let mut spans = Spans::new(CodeRules::CommonMark, open);
spans.line(open);
// No closing run: the backtick is literal text.
assert_eq!(spans.close(0), (1, None));Implementations§
Source§impl<'a> Spans<'a>
impl<'a> Spans<'a>
Sourcepub fn new(rules: CodeRules, bytes: &'a [u8]) -> Self
pub fn new(rules: CodeRules, bytes: &'a [u8]) -> Self
A scanner over bytes, the whole input, following rules.
Sourcepub fn line(&mut self, line: &[u8])
pub fn line(&mut self, line: &[u8])
Note the line the scan has reached. line excludes its \n. Under
CodeRules::CommonMark, a span opened on an ATX heading or a line
starting with | stays on that line.
Sourcepub fn close(&mut self, start: usize) -> (usize, Option<usize>)
pub fn close(&mut self, start: usize) -> (usize, Option<usize>)
The backtick run that starts at start: its length, and where the
span it opens closes (the start of the closing run), if it does.
start is a backtick. The run is the backticks from start on, which
under CodeRules::SkillExport may be the rest of a closing run.
Trait Implementations§
Auto Trait Implementations§
impl<'a> Freeze for Spans<'a>
impl<'a> RefUnwindSafe for Spans<'a>
impl<'a> Send for Spans<'a>
impl<'a> Sync for Spans<'a>
impl<'a> Unpin for Spans<'a>
impl<'a> UnsafeUnpin for Spans<'a>
impl<'a> UnwindSafe for Spans<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more