kelora 1.5.0

A command-line log analysis tool with embedded Rhai scripting
Documentation
use rhai::Engine;
use std::collections::HashSet;

pub fn register_functions(engine: &mut Engine) {
    engine.register_fn("strip", |text: &str| -> String { text.trim().to_string() });

    engine.register_fn("strip", |text: &str, chars: &str| -> String {
        let chars_to_remove: HashSet<char> = chars.chars().collect();
        text.trim_matches(|c: char| chars_to_remove.contains(&c))
            .to_string()
    });

    engine.register_fn("lstrip", |text: &str| -> String {
        text.trim_start().to_string()
    });

    engine.register_fn("lstrip", |text: &str, chars: &str| -> String {
        let chars_to_remove: HashSet<char> = chars.chars().collect();
        text.trim_start_matches(|c: char| chars_to_remove.contains(&c))
            .to_string()
    });

    engine.register_fn("rstrip", |text: &str| -> String {
        text.trim_end().to_string()
    });

    engine.register_fn("rstrip", |text: &str, chars: &str| -> String {
        let chars_to_remove: HashSet<char> = chars.chars().collect();
        text.trim_end_matches(|c: char| chars_to_remove.contains(&c))
            .to_string()
    });

    engine.register_fn("clip", |text: &str| -> String {
        text.trim_start_matches(|c: char| !c.is_alphanumeric())
            .trim_end_matches(|c: char| !c.is_alphanumeric())
            .to_string()
    });

    engine.register_fn("lclip", |text: &str| -> String {
        text.trim_start_matches(|c: char| !c.is_alphanumeric())
            .to_string()
    });

    engine.register_fn("rclip", |text: &str| -> String {
        text.trim_end_matches(|c: char| !c.is_alphanumeric())
            .to_string()
    });
}