textfsm-core 0.3.1

Core parsing library for TextFSM template-based state machine
Documentation
//! # TextFSM Core
//!
//! Core parsing library for TextFSM template-based state machine.
//!
//! This crate provides the core parsing functionality. For the user-facing API
//! with compile-time template validation macros, use the `textfsm-rust` crate.
//!
//! ## Quick Start
//!
//! ```rust
//! use textfsm_core::Template;
//!
//! let template_str = r#"Value Name (\S+)
//! Value Age (\d+)
//!
//! Start
//!   ^Name: ${Name}, Age: ${Age} -> Record
//! "#;
//!
//! let template = Template::parse_str(template_str).unwrap();
//! let mut parser = template.parser();
//!
//! let input = "Name: Alice, Age: 30\nName: Bob, Age: 25\n";
//! let results = parser.parse_text(input).unwrap();
//!
//! assert_eq!(results.len(), 2);
//! ```
//!
//! ## Features
//!
//! - **`serde`** - Enable serde deserialization support. Allows using
//!   [`Parser::parse_text_into`] to deserialize parsed results directly into
//!   typed Rust structs.

pub mod clitable;

#[cfg(feature = "serde")]
pub mod de;

mod error;
mod parser;
mod template;
mod types;

#[cfg(feature = "serde")]
pub use de::{
    from_record, from_record_borrowed, from_value, DeserializeError, RecordDeserializer,
    ValueDeserializer,
};

pub use clitable::{CliTable, CliTableError, Index, IndexEntry, Row, TextTable};
pub use error::{ParseError, TemplateError, TextFsmError};
pub use parser::{Parser, ValueState};
pub use template::{Rule, State, Template, ValueDef};
pub use types::{LineOp, ListItem, RecordOp, Transition, Value, ValueOption, ValueOptions};

/// Result type alias using TextFsmError.
pub type Result<T> = std::result::Result<T, TextFsmError>;