SourceText

Struct SourceText 

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

Represents source code text with optional URL reference.

This struct manages the raw source text and provides utilities for:

  • Text extraction at specific offsets or ranges
  • Error reporting with precise location information

Implementations§

Source§

impl SourceText

Source

pub fn text(&self) -> &str

Returns the raw source text as a string slice.

Source

pub fn apply_edits_range(&mut self, edits: &[TextEdit]) -> Range<usize>

Applies multiple text edits to the source text and returns the affected range.

Source

pub fn apply_edits(&mut self, edits: &[TextEdit]) -> usize

Applies multiple text edits to the source text and returns the minimum affected offset.

This method is used for incremental updates to source code, such as those received from LSP clients or other text editing operations.

§Arguments
  • edits - A slice of TextEdit operations to apply
§Returns

The minimum byte offset that was affected by any of the edits. This is useful for determining where to restart parsing after incremental changes.

§Examples
let mut source = SourceText::new("let x = 5;");
let edits = vec![TextEdit { span: Range { start: 4, end: 5 }, text: "y".to_string() }];
let min_offset = source.apply_edits(&edits);
assert_eq!(min_offset, 4);
Source

pub fn get_url(&self) -> Option<&Url>

Gets the URL associated with this source text, if any.

§Returns

An Option<&Url> containing the URL reference if one was set, or None if no URL is associated with this source text.

§Examples
let source = SourceText::new_with_url("code", Url::parse("file:///main.rs").unwrap());
assert!(source.get_url().is_some());
Source

pub fn len(&self) -> usize

Gets the length of the source text in bytes.

§Returns

The length of the source text in bytes.

§Examples
let source = SourceText::new("Hello, world!");
assert_eq!(source.len(), 13);
Source

pub fn is_empty(&self) -> bool

Checks if the source text is empty.

§Returns

true if the source text is empty, false otherwise.

§Examples
let source = SourceText::new("");
assert!(source.is_empty());
Source§

impl SourceText

Source

pub fn new(input: impl ToString) -> Self

Creates a new SourceText from a string.

§Arguments
  • input - The source code text
§Examples
let source = SourceText::new("fn main() {}");
Source

pub fn new_with_url(input: impl ToString, url: Url) -> Self

Creates a new SourceText from a string with an optional URL.

§Arguments
  • input - The source code text
  • url - URL reference for the source file
§Examples
let source = SourceText::new_with_url("fn main() {}", Url::parse("file:///main.rs").unwrap());
Source

pub fn syntax_error( &self, message: impl Into<String>, offset: usize, ) -> OakError

Creates a syntax error with location information.

§Arguments
  • message - The error message
  • offset - The byte offset where the error occurred
§Returns

An OakError with precise location information including line and column.

§Examples
let source = SourceText::new("let x =");
let error = source.syntax_error("Unexpected end of input", 7);
Source

pub fn unexpected_character(&self, character: char, offset: usize) -> OakError

Creates an error for an unexpected character at the specified offset.

Source

pub fn expected_token( &self, expected: impl Into<String>, offset: usize, ) -> OakError

Creates an error for an expected token that was missing at the specified offset.

Source

pub fn expected_name( &self, name_kind: impl Into<String>, offset: usize, ) -> OakError

Creates an error for an expected name that was missing at the specified offset.

Source

pub fn trailing_comma_not_allowed(&self, offset: usize) -> OakError

Creates an error for a trailing comma that is not allowed at the specified offset.

Trait Implementations§

Source§

impl Clone for SourceText

Source§

fn clone(&self) -> SourceText

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for SourceText

Source§

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

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

impl Default for SourceText

Source§

fn default() -> SourceText

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

impl Hash for SourceText

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for SourceText

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · 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 Source for SourceText

Source§

fn length(&self) -> usize

Get the length of this source. Read more
Source§

fn chunk_at(&self, offset: usize) -> TextChunk<'_>

Returns a text chunk containing the specified offset.
Source§

fn get_text_in(&self, range: Range<usize>) -> Cow<'_, str>

Get the text content at the specified range. Read more
Source§

fn get_url(&self) -> Option<&Url>

Get the URL of this source, if available. Read more
Source§

fn url(&self) -> Option<Url>

Returns the URL of this source, if available.
Source§

fn is_empty(&self) -> bool

Check if the source is empty.
Source§

fn get_char_at(&self, offset: usize) -> Option<char>

Get a single character at the specified offset. Read more
Source§

fn get_text_from(&self, offset: usize) -> Cow<'_, str>

Get the text from the current position to the end of the source. Read more
Source§

fn find_char_from(&self, offset: usize, ch: char) -> Option<usize>

Find the next occurrence of a character starting from an offset. Read more
Source§

fn find_str_from(&self, offset: usize, pattern: &str) -> Option<usize>

Find the next occurrence of a substring starting from an offset. Read more
Source§

fn syntax_error(&self, message: String, offset: usize) -> OakError

Create a syntax error with location information. Read more
Source§

impl Eq for SourceText

Source§

impl StructuralPartialEq for SourceText

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> 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.