Trait rat_widget::text::core::TextStore

source ·
pub trait TextStore {
Show 20 methods // Required methods fn is_multi_line(&self) -> bool; fn string(&self) -> String; fn set_string(&mut self, t: &str); fn byte_range_at( &self, pos: TextPosition, ) -> Result<Range<usize>, TextError>; fn byte_range(&self, range: TextRange) -> Result<Range<usize>, TextError>; fn byte_to_pos(&self, byte: usize) -> Result<TextPosition, TextError>; fn bytes_to_range( &self, bytes: Range<usize>, ) -> Result<TextRange, TextError>; fn str_slice(&self, range: TextRange) -> Result<Cow<'_, str>, TextError>; fn str_slice_byte( &self, range: Range<usize>, ) -> Result<Cow<'_, str>, TextError>; fn graphemes( &self, range: TextRange, pos: TextPosition, ) -> Result<impl Iterator<Item = Grapheme<'_>> + Cursor, TextError>; fn line_at(&self, row: u32) -> Result<Cow<'_, str>, TextError>; fn lines_at( &self, row: u32, ) -> Result<impl Iterator<Item = Cow<'_, str>>, TextError>; fn line_graphemes( &self, row: u32, ) -> Result<impl Iterator<Item = Grapheme<'_>> + Cursor, TextError>; fn line_width(&self, row: u32) -> Result<u32, TextError>; fn len_lines(&self) -> u32; fn insert_char( &mut self, pos: TextPosition, c: char, ) -> Result<(TextRange, Range<usize>), TextError>; fn insert_str( &mut self, pos: TextPosition, t: &str, ) -> Result<(TextRange, Range<usize>), TextError>; fn remove( &mut self, range: TextRange, ) -> Result<(String, (TextRange, Range<usize>)), TextError>; fn insert_b(&mut self, byte_pos: usize, t: &str) -> Result<(), TextError>; fn remove_b(&mut self, byte_range: Range<usize>) -> Result<(), TextError>;
}
Expand description

Backing store for the TextCore.

Required Methods§

source

fn is_multi_line(&self) -> bool

Can store multi-line content?

source

fn string(&self) -> String

Get content as string.

source

fn set_string(&mut self, t: &str)

Set content from string.

source

fn byte_range_at(&self, pos: TextPosition) -> Result<Range<usize>, TextError>

Grapheme position to byte position. This is the (start,end) position of the single grapheme after pos.

  • pos must be a valid position: row <= len_lines, col <= line_width of the row.
source

fn byte_range(&self, range: TextRange) -> Result<Range<usize>, TextError>

Grapheme range to byte range.

  • range must be a valid range. row <= len_lines, col <= line_width of the row.
source

fn byte_to_pos(&self, byte: usize) -> Result<TextPosition, TextError>

Byte position to grapheme position. Returns the position that contains the given byte index.

  • byte must <= byte-len.
source

fn bytes_to_range(&self, bytes: Range<usize>) -> Result<TextRange, TextError>

Byte range to grapheme range.

  • byte must <= byte-len.
source

fn str_slice(&self, range: TextRange) -> Result<Cow<'_, str>, TextError>

A range of the text as Cow.

  • range must be a valid range. row <= len_lines, col <= line_width of the row.
  • pos must be inside of range.
source

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

A range of the text as Cow.

  • range must be valid
source

fn graphemes( &self, range: TextRange, pos: TextPosition, ) -> Result<impl Iterator<Item = Grapheme<'_>> + Cursor, TextError>

Return a cursor over the graphemes of the range, start at the given position.

  • range must be a valid range. row <= len_lines, col <= line_width of the row.
  • pos must be inside of range.
source

fn line_at(&self, row: u32) -> Result<Cow<'_, str>, TextError>

Line as str.

  • row must be <= len_lines
source

fn lines_at( &self, row: u32, ) -> Result<impl Iterator<Item = Cow<'_, str>>, TextError>

Iterate over text-lines, starting at line-offset.

  • row must be <= len_lines
source

fn line_graphemes( &self, row: u32, ) -> Result<impl Iterator<Item = Grapheme<'_>> + Cursor, TextError>

Return a line as an iterator over the graphemes. This contains the ‘\n’ at the end.

  • row must be <= len_lines
source

fn line_width(&self, row: u32) -> Result<u32, TextError>

Line width of row as grapheme count. Excludes the terminating ‘\n’.

  • row must be <= len_lines
source

fn len_lines(&self) -> u32

Number of lines.

source

fn insert_char( &mut self, pos: TextPosition, c: char, ) -> Result<(TextRange, Range<usize>), TextError>

Insert a char at the given position.

  • range must be a valid range. row <= len_lines, col <= line_width of the row.
source

fn insert_str( &mut self, pos: TextPosition, t: &str, ) -> Result<(TextRange, Range<usize>), TextError>

Insert a text str at the given position.

  • range must be a valid range. row <= len_lines, col <= line_width of the row.
source

fn remove( &mut self, range: TextRange, ) -> Result<(String, (TextRange, Range<usize>)), TextError>

Remove the given text range.

  • range must be a valid range. row <= len_lines, col <= line_width of the row.
source

fn insert_b(&mut self, byte_pos: usize, t: &str) -> Result<(), TextError>

Insert a string at the given byte index. Call this only for undo.

byte_pos must be <= len bytes.

source

fn remove_b(&mut self, byte_range: Range<usize>) -> Result<(), TextError>

Remove the given byte-range. Call this only for undo.

byte_pos must be <= len bytes.

Object Safety§

This trait is not object safe.

Implementors§