html_forge

Crates.iohtml_forge
lib.rshtml_forge
version0.1.0-a
sourcesrc
created_at2024-08-09 22:31:38.935479
updated_at2024-10-09 16:28:33.135157
descriptionA robust and efficient HTML parsing library for Rust
homepage
repositoryhttps://github.com/benodiwal/html_forge
max_upload_size
id1331795
size16,021
Sachin Beniwal (benodiwal)

documentation

README

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! πŸ› οΈπŸš€

Commit count: 23

cargo fmt