Expand description
§TextFSM
A template-based state machine for parsing semi-formatted text.
This is a Rust port of Google’s TextFSM, commonly used for parsing CLI output from network devices.
§Quick Start
use textfsm_rust::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);§Template Syntax
Templates consist of two sections:
-
Value definitions at the top:
Value [Options] Name (regex)Options:
Required,Filldown,Fillup,Key,List -
State definitions below (separated by blank line):
StateName ^pattern -> Action NewStateActions:
Next,Continue,Error,Record,Clear,Clearall,NoRecord
§Compile-Time Template Validation
Use the validation macros to catch template errors at compile time:
ⓘ
use textfsm_rust::{validate_template, validate_templates};
// Validate a single template file
validate_template!("templates/cisco_show_version.textfsm");
// Validate all .textfsm files in a directory
validate_templates!("templates/");§Example Template
Value Required Interface (\S+)
Value Filldown Status (up|down)
Value IPAddress (\d+\.\d+\.\d+\.\d+)
Start
^Interface: ${Interface} -> Continue
^ Status: ${Status}
^ IP: ${IPAddress} -> RecordMacros§
- validate_
template - Validates a single TextFSM template file at compile time.
- validate_
templates - Validates all TextFSM template files in a directory at compile time.
Structs§
- Parser
- Parser for processing text with a compiled template.
- Rule
- A rule within a state.
- State
- A state containing rules.
- Template
- Compiled template - immutable, can be shared across threads.
- Value
Def - A Value definition from the template header.
- Value
State - Runtime state for a single value.
Enums§
- LineOp
- Line operators control input line processing.
- List
Item - A single item in a List value.
- Parse
Error - Errors that occur during text parsing (runtime).
- Record
Op - Record operators control output record handling.
- Template
Error - Errors that occur when parsing a template file.
- Text
FsmError - Combined error type for public API.
- Transition
- State transition target.
- Value
- Runtime value during parsing.
- Value
Option - Available options for Value definitions.
Type Aliases§
- Result
- Result type alias using TextFsmError.
- Value
Options - Set of options for a value.