44 lines
1.1 KiB
Rust
44 lines
1.1 KiB
Rust
#![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};
|