kugiri 0.1.2

Marker-based block editing CLI
Documentation
pub fn trim(text: &str) -> String {
    let lines: Vec<&str> = text.lines().collect();
    let mut result: Vec<&str> = Vec::new();

    for &line in lines.iter() {
        if line.starts_with("<!-- KUGIRI-BEGIN:")
            || line.starts_with("<!-- KUGIRI-END:")
            || line.starts_with("<!-- KUGIRI-INSERT:") {
            continue;
        }
        result.push(line);
    }

    result.join("\n")
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_trim_removes_all_markers() {
        let text = r#"Header

<!-- KUGIRI-BEGIN: section1 -->
Content 1
<!-- KUGIRI-END: section1 -->

Middle

<!-- KUGIRI-INSERT: anchor -->

<!-- KUGIRI-BEGIN: section2 -->
Content 2
<!-- KUGIRI-END: section2 -->

Footer"#;

        let result = trim(text);

        assert!(result.contains("Header"));
        assert!(result.contains("Content 1"));
        assert!(result.contains("Middle"));
        assert!(result.contains("Content 2"));
        assert!(result.contains("Footer"));

        assert!(!result.contains("KUGIRI-BEGIN"));
        assert!(!result.contains("KUGIRI-END"));
        assert!(!result.contains("KUGIRI-INSERT"));
    }

    #[test]
    fn test_trim_empty_file() {
        assert_eq!(trim(""), "");
    }

    #[test]
    fn test_trim_no_markers() {
        let text = "Just some text\nwithout any markers";
        assert_eq!(trim(text), text);
    }
}