bve 0.0.1

Remaking OpenBVE using a modern architecture, using Unity and Rust.
pub fn strip_comments(input: &str, comment_char: char) -> String {
    tracing::trace!(%comment_char, input_size = input.len(), "Stripping comments.");

    let mut result = String::new();

    for line in input.lines() {
        let processed = if let Some(idx) = line.find(comment_char) {
            &line[0..idx]
        } else {
            line
        };
        result.push_str(processed);
        result.push('\n');
    }

    tracing::trace!(%comment_char, output_size = result.len(), "Stripped comments");

    result
}

#[cfg(test)]
mod test {
    use crate::parse::util::strip_comments;

    #[bve_derive::bve_test]
    #[test]
    fn single_line() {
        assert_eq!(strip_comments("abcdefg;abcdefg", ';'), "abcdefg\n");
        assert_eq!(strip_comments(";abcdefg", ';'), "\n");
    }

    #[bve_derive::bve_test]
    #[test]
    fn single_end_of_line() {
        assert_eq!(strip_comments("abcdefg;", ';'), "abcdefg\n");
    }

    #[bve_derive::bve_test]
    #[test]
    fn double_line() {
        assert_eq!(strip_comments("abcdefg\nabcdefg;abcdefg", ';'), "abcdefg\nabcdefg\n");
        assert_eq!(strip_comments(";abcdefg\n;abcdefg", ';'), "\n\n");
    }
}