2 releases
0.1.0 | Aug 9, 2024 |
---|---|
0.1.0-a | Oct 9, 2024 |
#2188 in Parser implementations
140 downloads per month
14KB
343 lines
html_forge
A robust and efficient HTML parsing library for Rust
π Features
Element Parsing
: Easily parse HTML elements with attributes and nested children.Text Parsing
: Extract and manage text nodes within your documents.Attribute Parsing
: Handle element attributes with both single and double quotes.Comment Parsing
: Parse comments safely, even those with special characters or nested hyphens.Error Handling
: Gracefully manage parsing errors such as mismatched tags and unexpected end-of-file (EOF).
π¦ Installation
To use html_forge
, add the following to your Cargo.toml:
[dependencies]
html_forge = "0.1.0"
Usage
1. Basic Parsing Example:
Hereβs how you can parse a simple HTML snippet using html_forge:
use html_forge::parser::Parser;
use html_forge::dom::Node;
fn main() {
let input = "<div class='container'><p>Hello, world!</p></div>".to_string();
let mut parser = Parser::new(input);
match parser.parse() {
Ok(node) => println!("Parsed Node: {:?}", node),
Err(err) => eprintln!("Parsing error: {:?}", err),
}
}
2. Handling Errors:
html_forge gracefully handles common errors during parsing:
use html_forge::{parser::Parser, errors::ParseError};
fn main() {
let input = "<div><p>Unclosed div".to_string();
let mut parser = Parser::new(input);
match parser.parse() {
Err(ParseError::UnexpectedEOF) => eprintln!("Error: Unexpected end of file"),
Err(ParseError::MismatchedClosingTag) => eprintln!("Error: Mismatched closing tag"),
Ok(node) => println!("Parsed Node: {:?}", node),
Err(err) => eprintln!("Other parsing error: {:?}", err),
}
}
π§ͺ Testing
To run the tests, use:
cargo test
π₯ Contributing
Contributions are welcome! Feel free to open issues, submit pull requests, or fork the repository to make improvements.
π License
This library is open-source and available under the MIT LICENSE.
Happy forging with html_forge! π οΈπ