mod split;
mod split_at;
mod generate;
mod base;
mod remove;
mod insert;
mod move_to;
#[derive(Clone, Debug, PartialEq)]
pub struct StrHelper {
string: String
}
impl StrHelper {
pub fn new(value: &str) -> StrHelper {
StrHelper::from_string(value.to_string())
}
pub fn empty() -> StrHelper {
StrHelper::new("")
}
pub fn from_string(value: String) -> StrHelper {
StrHelper {string: value}
}
pub fn from_chars_vector(vector: Vec<char>) -> StrHelper {
StrHelper::from_string(
StrHelper::generate_string_from_char_vec(vector)
)
}
pub fn from_chars(values: &[char]) -> StrHelper {
StrHelper::from_string(
StrHelper::generate_string_from_chars(values)
)
}
pub fn update(&mut self, new_value: &str) {
self.string = new_value.to_string();
}
pub fn reverse(&mut self) {
let mut chars = self.as_chars();
chars.reverse();
self.update(StrHelper::generate_string_from_char_vec(chars).as_str());
}
}
#[macro_export]
macro_rules! str {
() => {StrHelper::empty()};
($elem:expr) => {StrHelper::new($elem)};
($($elem:expr),*) => {
{
let mut helper = StrHelper::empty();
$(helper.push($elem);)*
helper
}
};
}