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

htmlentity

A library for encoding and decoding HTML entities

14 releases (stable)

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

#120 in Encoding

Download history 852/week @ 2024-11-30 2427/week @ 2024-12-07 2066/week @ 2024-12-14 1222/week @ 2024-12-21 1259/week @ 2024-12-28 2170/week @ 2025-01-04 1595/week @ 2025-01-11 1678/week @ 2025-01-18 1532/week @ 2025-01-25 2016/week @ 2025-02-01 2240/week @ 2025-02-08 1915/week @ 2025-02-15 2126/week @ 2025-02-22 1889/week @ 2025-03-01 2273/week @ 2025-03-08 2408/week @ 2025-03-15

9,038 downloads per month
Used in 28 crates (11 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.3–0.8MB
~18K SLoC