pub struct TextLine { /* private fields */ }
Expand description
The text line represents editable text lines.
Implementations§
Source§impl TextLine
impl TextLine
Sourcepub fn cursor_movement(
movement: Direction,
skip: bool,
) -> fn(&Self, &mut usize) -> bool
pub fn cursor_movement( movement: Direction, skip: bool, ) -> fn(&Self, &mut usize) -> bool
Returns the appropriate movement function based on parameters movement
and skip
.
§Arguments
movement
- The direction of movement (Forward
orBackward
).skip
- Whether to skip over whitespace characters.
§Returns
A function pointer to the appropriate movement function.
§Examples
use text_editing::{TextLine, Direction};
let line = TextLine::from_string("Hello, world!".into());
let mut text_cursor = 7;
let movement_fn = TextLine::cursor_movement(Direction::Forward, false);
movement_fn(&line, &mut text_cursor);
assert_eq!(text_cursor, 8);
Sourcepub fn forward(&self, text_cursor: &mut usize) -> bool
pub fn forward(&self, text_cursor: &mut usize) -> bool
Moves the text cursor forward by one.
§Arguments
text_cursor
- A mutable reference to the current text cursor position.
§Returns
true
if the cursor was successfully moved forward, false
otherwise.
§Examples
use text_editing::TextLine;
let line = TextLine::from_string("Hello, world!".into());
let mut text_cursor = 6;
assert!(line.forward(&mut text_cursor));
assert_eq!(text_cursor, 7);
Sourcepub fn backward(&self, text_cursor: &mut usize) -> bool
pub fn backward(&self, text_cursor: &mut usize) -> bool
Moves the text cursor backward by one.
§Arguments
text_cursor
- A mutable reference to the current text cursor position.
§Returns
true
if the cursor was successfully moved backward, false
otherwise.
§Examples
use text_editing::TextLine;
let line = TextLine::from_string("Hello, world!".into());
let mut text_cursor = 7;
assert!(line.backward(&mut text_cursor));
assert_eq!(text_cursor, 6);
Sourcepub fn skip_forward(&self, text_cursor: &mut usize) -> bool
pub fn skip_forward(&self, text_cursor: &mut usize) -> bool
Moves the text cursor forward until the end of the current word.
§Arguments
text_cursor
- A mutable reference to the current text cursor position.
§Returns
true
if the cursor was successfully moved to the end of the word, false
otherwise.
§Examples
use text_editing::TextLine;
let line = TextLine::from_string("Hello, world!".into());
let mut text_cursor = 6;
assert!(line.skip_forward(&mut text_cursor));
assert_eq!(text_cursor, 12);
Sourcepub fn skip_backward(&self, text_cursor: &mut usize) -> bool
pub fn skip_backward(&self, text_cursor: &mut usize) -> bool
Moves the text cursor back until the start of the current word.
§Arguments
text_cursor
- A mutable reference to the current text cursor position.
§Returns
true
if the cursor was successfully moved to the start of the word, false
otherwise.
§Examples
use text_editing::TextLine;
let line = TextLine::from_string("Hello, world!".into());
let mut text_cursor = 10;
assert!(line.skip_backward(&mut text_cursor));
assert_eq!(text_cursor, 7);
Source§impl TextLine
impl TextLine
Sourcepub fn add_char(&mut self, text_cursor: &mut usize, c: char)
pub fn add_char(&mut self, text_cursor: &mut usize, c: char)
Adds a char at the current text cursor position.
§Arguments
text_cursor
- A mutable reference to the current text cursor position.c
- The char to add.
§Examples
use text_editing::TextLine;
let mut line = TextLine::from_string("Hello, ".into());
let mut text_cursor = 7;
line.add_char(&mut text_cursor, 'w');
assert_eq!(line.as_str(), "Hello, w");
assert_eq!(text_cursor, 8);
Sourcepub fn remove_forward(&mut self, text_cursor: usize) -> bool
pub fn remove_forward(&mut self, text_cursor: usize) -> bool
Removes the next char at the current text cursor position, if it exists.
§Arguments
text_cursor
- The current text cursor position.
§Returns
true
if a char was removed, false
otherwise.
§Examples
use text_editing::TextLine;
let mut line = TextLine::from_string("Hello, world!".into());
let text_cursor = 7;
assert!(line.remove_forward(text_cursor));
assert_eq!(line.as_str(), "Hello, orld!");
Sourcepub fn remove_forward_skip(&mut self, text_cursor: usize) -> bool
pub fn remove_forward_skip(&mut self, text_cursor: usize) -> bool
Removes the next word at the current text cursor position, if it exists.
§Arguments
text_cursor
- The current text cursor position.
§Returns
true
if a word was removed, false
otherwise.
§Examples
use text_editing::TextLine;
let mut line = TextLine::from_string("Hello, world!".into());
let text_cursor = 7;
assert!(line.remove_forward_skip(text_cursor));
assert_eq!(line.as_str(), "Hello, !");
Sourcepub fn remove_backward(&mut self, text_cursor: &mut usize) -> bool
pub fn remove_backward(&mut self, text_cursor: &mut usize) -> bool
Removes the previous char at the current text cursor position, if it exists, and updates the text cursor.
§Arguments
text_cursor
- A mutable reference to the current text cursor position.
§Returns
true
if a char was removed, false
otherwise.
§Examples
use text_editing::TextLine;
let mut line = TextLine::from_string("Hello, world!".into());
let mut text_cursor = 7;
assert!(line.remove_backward(&mut text_cursor));
assert_eq!(line.as_str(), "Hello,world!");
assert_eq!(text_cursor, 6);
Sourcepub fn remove_backward_skip(&mut self, text_cursor: &mut usize) -> bool
pub fn remove_backward_skip(&mut self, text_cursor: &mut usize) -> bool
Removes the previous word at the current text cursor position, if it exists, and updates the text cursor.
§Arguments
text_cursor
- A mutable reference to the current text cursor position.
§Returns
true
if a word was removed, false
otherwise.
§Examples
use text_editing::TextLine;
let mut line = TextLine::from_string("Hello, world!".into());
let mut text_cursor = 12;
assert!(line.remove_backward_skip(&mut text_cursor));
assert_eq!(line.as_str(), "Hello, !");
assert_eq!(text_cursor, 7);
Source§impl TextLine
impl TextLine
Sourcepub fn new() -> Self
pub fn new() -> Self
Creates a new empty text line.
§Examples
use text_editing::TextLine;
let line = TextLine::new();
assert!(line.is_empty());
Sourcepub fn from_string(text: String) -> Self
pub fn from_string(text: String) -> Self
Creates a text line from a String
.
§Examples
use text_editing::TextLine;
let line = TextLine::from_string("Hello, world!".into());
assert_eq!(line.as_str(), "Hello, world!");
Sourcepub fn is_empty(&self) -> bool
pub fn is_empty(&self) -> bool
Checks if the line is empty.
§Examples
use text_editing::TextLine;
let line = TextLine::new();
assert!(line.is_empty());
Sourcepub fn len(&self) -> usize
pub fn len(&self) -> usize
Returns the length of the text line.
§Examples
use text_editing::TextLine;
let line = TextLine::from_string("Hello, world!".into());
assert_eq!(line.len(), 13);
Sourcepub fn as_str(&self) -> &str
pub fn as_str(&self) -> &str
Returns the text of the text line as a str
reference.
§Examples
use text_editing::TextLine;
let line = TextLine::from_string("Hello, world!".into());
assert_eq!(line.as_str(), "Hello, world!");
Sourcepub fn string_index(&self, index: usize) -> usize
pub fn string_index(&self, index: usize) -> usize
Converts the character index to the string index.
§Examples
use text_editing::TextLine;
let line = TextLine::from_string("Hello, world!".into());
assert_eq!(line.string_index(7), 7);
Sourcepub fn insert(&mut self, index: usize, c: char)
pub fn insert(&mut self, index: usize, c: char)
Inserts a new char into the text line.
§Examples
use text_editing::TextLine;
let mut line = TextLine::from_string("Hello, orld!".into());
line.insert(7, 'w');
assert_eq!(line.as_str(), "Hello, world!");
Sourcepub fn remove(&mut self, index: usize) -> char
pub fn remove(&mut self, index: usize) -> char
Removes a char from the text line and returns it.
§Examples
use text_editing::TextLine;
let mut line = TextLine::from_string("Hello, world!".into());
assert_eq!(line.remove(7), 'w');
assert_eq!(line.as_str(), "Hello, orld!");
Sourcepub fn remove_range(&mut self, range: Range<usize>)
pub fn remove_range(&mut self, range: Range<usize>)
Removes the specified range from the text line.
§Examples
use text_editing::TextLine;
let mut line = TextLine::from_string("Hello, world!".into());
line.remove_range(7..12);
assert_eq!(line.as_str(), "Hello, !");