Skip to main content

FileInformation

Struct FileInformation 

Source
pub struct FileInformation { /* private fields */ }
Expand description

Efficient file content analysis for location lookups

This struct stores metadata about a file that enables fast conversion from byte offsets to (row, column) positions without storing the full file content.

Implementations§

Source§

impl FileInformation

Source

pub fn new(content: &str) -> Self

Create file information by analyzing content

Scans the content once to build an index of line break positions. This enables O(log n) offset-to-location lookups via binary search.

§Example
use quarto_source_map::FileInformation;

let info = FileInformation::new("line 1\nline 2\nline 3");
Source

pub fn from_parts(line_breaks: Vec<usize>, total_length: usize) -> Self

Create file information from pre-computed parts

This is useful when deserializing from formats that store line break information directly (like JSON).

§Example
use quarto_source_map::FileInformation;

let info = FileInformation::from_parts(vec![6, 13], 20);
Source

pub fn offset_to_location( &self, offset: usize, content: &str, ) -> Option<Location>

Convert a byte offset to a Location with row and column

Uses binary search to find which line contains the offset. Runs in O(log n) time where n is the number of lines.

The column is computed as character count (not byte count) from the start of the line to the offset, which requires the content parameter.

Returns None if the offset is out of bounds.

§Example
use quarto_source_map::FileInformation;

let content = "hello\nworld";
let info = FileInformation::new(content);
let loc = info.offset_to_location(6, content).unwrap();
assert_eq!(loc.row, 1);
assert_eq!(loc.column, 0);
Source

pub fn total_length(&self) -> usize

Get the total length of the file in bytes

Source

pub fn line_breaks(&self) -> &[usize]

Get the line breaks array (byte offsets of newline characters)

Source

pub fn line_count(&self) -> usize

Get the number of lines in the file

Trait Implementations§

Source§

impl Clone for FileInformation

Source§

fn clone(&self) -> FileInformation

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for FileInformation

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for FileInformation

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl PartialEq for FileInformation

Source§

fn eq(&self, other: &FileInformation) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for FileInformation

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for FileInformation

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.