#codec #entity #html-decode #html-escape #html-encode #html-entities

htmlentity

A library for encoding and decoding HTML entities

14 releases (stable)

new 1.3.2 Jun 7, 2024
1.3.1 Apr 17, 2023
1.2.0 Mar 19, 2021
1.1.1 Feb 18, 2021
0.1.2 Nov 30, 2020

#5 in #entity

Download history 739/week @ 2024-02-20 741/week @ 2024-02-27 550/week @ 2024-03-05 519/week @ 2024-03-12 863/week @ 2024-03-19 704/week @ 2024-03-26 550/week @ 2024-04-02 600/week @ 2024-04-09 492/week @ 2024-04-16 614/week @ 2024-04-23 865/week @ 2024-04-30 478/week @ 2024-05-07 360/week @ 2024-05-14 421/week @ 2024-05-21 191/week @ 2024-05-28 361/week @ 2024-06-04

1,515 downloads per month
Used in 21 crates (6 directly)

MIT license

155KB
5.5K SLoC

htmlentity

A library for encoding and decoding HTML entities.

Docs Build Status codecov

How to use

use htmlentity::entity::{ encode, decode, EncodeType, CharacterSet, ICodedDataTrait };
use htmlentity::types::{ AnyhowResult, Byte };
fn main() -> AnyhowResult<()> {
  let html = "<div name='htmlentity'>Hello!世界!</div>";
  let html_after_encoded = "&lt;div name='htmlentity'&gt;Hello!&#x4e16;&#x754c;!&lt;/div&gt;";
  // encode
  let encoded_data = encode(
    html.as_bytes(), 
    // encode format
    &EncodeType::NamedOrHex,
    // charcters need to be encoded 
    &CharacterSet::HtmlAndNonASCII
  );
  assert_eq!(encoded_data.to_bytes(), html_after_encoded.as_bytes());
  assert_eq!(encoded_data.to_string()?, String::from(html_after_encoded));
  let char_list = String::from(html_after_encoded).chars().collect::<Vec<char>>();
  assert_eq!(encoded_data.to_chars()?, char_list);
  // decode
  let bytes = encoded_data.into_iter().map(|(byte, _)| *byte).collect::<Vec<Byte>>();
  let decoded_data = decode(&bytes);
  assert_eq!(decoded_data.to_bytes(), html.as_bytes());
  assert_eq!(decoded_data.to_string()?, String::from(html));
  let char_list = String::from(html).chars().collect::<Vec<char>>();
  assert_eq!(decoded_data.to_chars()?, char_list);
  // shortcut usage
  assert_eq!(
    encode(
      html.as_bytes(), 
      &EncodeType::NamedOrHex,
      &CharacterSet::HtmlAndNonASCII,
    ).to_string()?,
    String::from(html)
  );
  Ok(())
}

For more details, please see the document in Docs.rs

License

MIT License.

Dependencies

~0.4–1MB
~20K SLoC