Skip to main content

LineIndex

Struct LineIndex 

Source
pub struct LineIndex { /* private fields */ }

Implementations§

Source§

impl LineIndex

Source

pub fn new() -> Self

Source

pub fn new_starting_at(start_byte: usize) -> Self

Construct a line index that begins at the given byte offset. Bytes before start_byte are never scanned and never appear in line_range. Used by --tail to skip past the head of the source.

Source

pub fn set_head_cap(&mut self, cap: usize)

Limit the index to the first N logical lines from the start point. line_count clamps to this and extend_to_byte stops scanning past it. Used by --head N.

Source

pub fn set_record_start(&mut self, re: Regex)

Enable records mode using the supplied regex. Must be called before any scanning has begun. Re-calling panics in debug builds.

Source

pub fn records_mode(&self) -> bool

True iff records mode is active (a regex was set).

Source

pub fn line_count(&self) -> usize

Source

pub fn extend_to_line(&mut self, n: usize, src: &dyn Source)

Source

pub fn extend_to_end(&mut self, src: &dyn Source)

Source

pub fn notice_new_bytes(&mut self, src: &dyn Source)

Source

pub fn scanned_through(&self) -> usize

Byte position up to which the index has scanned.

Source

pub fn extend_to_byte_for_query(&mut self, src: &dyn Source, byte: usize)

Extend the index until byte is covered (or EOF). Public wrapper around the private extend_to_byte, for callers that need to query a specific byte position.

Source

pub fn line_at_byte(&self, byte: usize) -> Option<usize>

Find the physical-line index containing the byte at position byte. Returns None if byte is before start_byte or at/after scanned_through.

Source

pub fn line_range(&self, n: usize, src: &dyn Source) -> Range<usize>

Byte range of line n (excluding the trailing newline). Caller must ensure n < line_count() and the index has scanned through the line.

Source

pub fn record_count(&self) -> usize

Number of records exposed by this index. Equals line_count() when records mode is inactive. May be less than line_count() when records mode is active and records span multiple physical lines.

Source

pub fn record_range(&self, n: usize, src: &dyn Source) -> Range<usize>

Byte range of record n including embedded \ns. Excludes the trailing \n after the record’s last physical line (if any).

Source

pub fn record_line_range(&self, n: usize) -> Range<usize>

Range of physical line indices [first..last) covered by record n.

Source

pub fn line_to_record(&self, line_n: usize) -> usize

Record index that contains physical line line_n. O(log records).

Source

pub fn record_bytes<'a>(&self, n: usize, src: &'a dyn Source) -> Cow<'a, [u8]>

Contiguous byte slice covering record n. Embedded \ns present.

Source

pub fn line_bytes_stripped<'a>( &self, n: usize, src: &'a dyn Source, ) -> Cow<'a, [u8]>

Return the bytes of line n with SGR/CSI/OSC sequences stripped. Borrows the source’s bytes when no escape sequences are present (common case); owns a new buffer otherwise.

Source

pub fn record_bytes_stripped<'a>( &self, n: usize, src: &'a dyn Source, ) -> Cow<'a, [u8]>

Like line_bytes_stripped but for records (multi-line mode).

Trait Implementations§

Source§

impl Default for LineIndex

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.