logparse 0.3.0

parse arbitrary messages containing rust-like debug output to syntax highlight them
Documentation
#![deny(missing_docs)]
// #![deny(warnings)]
#![doc=include_str!("../README.md")]

/// The structure of parsed log lines
pub mod ast;
mod display;
mod parse;
mod spans;

#[doc(hidden)]
#[macro_export]
macro_rules! generate_ast_recognizer {
    ($name: ident, $pattern: pat) => {
        fn $name(s: &str) -> bool {
            use logparse::{ast::*, *};
            let l = parse_input(s).unwrap();
            if !l.trailing_space.0.is_empty() {
                eprintln!("trailing space {l:?}");
                return false;
            }
            if l.segments.len() != 1 {
                eprintln!("more segments {l:?}");
                return false;
            }
            if !l.segments[0].leading_space.0.is_empty() {
                eprintln!("leading space {l:?}");
                return false;
            }
            if let $pattern = &l.segments[0].token {
                true
            } else {
                eprintln!("pattern {l:?}");
                false
            }
        }
    };
}

#[cfg(test)]
mod proptesting;

pub use parse::parse_input;
pub use spans::{Config, Span, SpanKind, into_spans};