sal_text/lib.rs
1//! SAL Text - Text processing and manipulation utilities
2//!
3//! This crate provides a comprehensive collection of text processing utilities including:
4//! - **Text indentation**: Remove common leading whitespace (`dedent`) and add prefixes (`prefix`)
5//! - **String normalization**: Sanitize strings for filenames (`name_fix`) and paths (`path_fix`)
6//! - **Text replacement**: Powerful `TextReplacer` for regex and literal replacements
7//! - **Template rendering**: `TemplateBuilder` using Tera engine for dynamic text generation
8//!
9//! All functionality is available in both Rust and Rhai scripting environments.
10//!
11//! # Examples
12//!
13//! ## Text Indentation
14//!
15//! ```rust
16//! use sal_text::dedent;
17//!
18//! let indented = " line 1\n line 2\n line 3";
19//! let dedented = dedent(indented);
20//! assert_eq!(dedented, "line 1\nline 2\n line 3");
21//! ```
22//!
23//! ## String Normalization
24//!
25//! ```rust
26//! use sal_text::name_fix;
27//!
28//! let unsafe_name = "User's File [Draft].txt";
29//! let safe_name = name_fix(unsafe_name);
30//! assert_eq!(safe_name, "user_s_file_draft_.txt");
31//! ```
32//!
33//! ## Text Replacement
34//!
35//! ```rust
36//! use sal_text::TextReplacer;
37//!
38//! let replacer = TextReplacer::builder()
39//! .pattern(r"\d+")
40//! .replacement("NUMBER")
41//! .regex(true)
42//! .build()
43//! .expect("Failed to build replacer");
44//!
45//! let result = replacer.replace("There are 123 items");
46//! assert_eq!(result, "There are NUMBER items");
47//! ```
48
49mod dedent;
50mod fix;
51mod replace;
52mod template;
53
54pub mod rhai;
55
56pub use dedent::*;
57pub use fix::*;
58pub use replace::*;
59pub use template::*;