Source

Trait Source 

Source
pub trait Source: Send + Sync {
    // Required methods
    fn length(&self) -> usize;
    fn chunk_at(&self, offset: usize) -> TextChunk<'_>;
    fn get_text_in(&self, range: Range<usize>) -> Cow<'_, str>;

    // Provided methods
    fn url(&self) -> Option<Url> { ... }
    fn is_empty(&self) -> bool { ... }
    fn get_char_at(&self, offset: usize) -> Option<char> { ... }
    fn get_text_from(&self, offset: usize) -> Cow<'_, str> { ... }
    fn get_url(&self) -> Option<&Url> { ... }
    fn find_char_from(&self, offset: usize, ch: char) -> Option<usize> { ... }
    fn find_str_from(&self, offset: usize, pattern: &str) -> Option<usize> { ... }
    fn syntax_error(&self, message: String, offset: usize) -> OakError { ... }
}
Expand description

Trait for abstract text sources.

This trait provides a unified interface for different text sources that may have:

  • Different character representations (Unicode escapes, HTML entities)
  • Different internal storage formats
  • Different error handling requirements

All offsets exposed by this trait are simple text ranges from the start of this source.

Required Methods§

Source

fn length(&self) -> usize

Get the length of this source.

This represents the total size of this source in bytes.

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.

The range is specified as simple offsets from the start of this source. The returned text should have any character encoding transformations already applied (e.g., Unicode escapes decoded, HTML entities resolved).

§Arguments
  • range - The byte range to extract text from (relative to this source)
§Returns

The text content in the specified range.

Provided Methods§

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.

This method should handle any character encoding transformations and return the actual character that would be seen by the parser.

§Arguments
  • offset - The byte offset from the start of this source
§Returns

The character at the specified offset, or None if the offset is invalid

Source

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

Get the text from the current position to the end of the source.

§Arguments
  • offset - The byte offset to start from (relative to this source)
§Returns

The remaining text from the offset to the end.

Source

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

Get the URL of this source, if available.

This method returns a reference to the URL associated with this source, typically used for file-based sources or remote resources.

§Returns

An optional reference to the source URL, or None if no URL is available

Source

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

Find the next occurrence of a character starting from an offset.

§Arguments
  • offset - The byte offset to start searching from (relative to this source)
  • ch - The character to search for
§Returns

The offset of the next occurrence, or None if not found

Source

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

Find the next occurrence of a substring starting from an offset.

§Arguments
  • offset - The byte offset to start searching from (relative to this source)
  • pattern - The substring to search for
§Returns

The offset of the next occurrence, or None if not found

Source

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

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

Trait Implementations§

Source§

impl Source for Box<dyn Source + Send + Sync>

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

Implementations on Foreign Types§

Source§

impl Source for Box<dyn Source + Send + Sync>

Source§

fn length(&self) -> usize

Source§

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

Source§

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

Source§

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

Source§

impl<S: Source + ?Sized> Source for &S

Source§

fn length(&self) -> usize

Source§

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

Source§

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

Source§

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

Implementors§