1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
/*! # HTML Escape This library is for encoding/escaping special characters in HTML and decoding/unescaping HTML entities as well. ## Usage ### Encoding This crate provides some `encode_*` functions to encode HTML text in different situations. For example, to put a text between a start tag `<foo>` and an end tag `</foo>`, use the `encode_text` function to escape every `&`, `<`, and `>` in the text. ```rust extern crate html_escape; assert_eq!("a > b && a < c", html_escape::encode_text("a > b && a < c")); ``` The functions suffixed with `_to_writer`, `_to_vec` or `_to_string` are useful to generate HTML. ```rust extern crate html_escape; let mut html = String::from("<input value="); assert_eq!("Hello world!", html_escape::encode_unquoted_attribute_to_string("Hello world!", &mut html)); html.push_str(" placeholder=\""); assert_eq!("The default value is "Hello world!".", html_escape::encode_double_quoted_attribute_to_string("The default value is \"Hello world!\".", &mut html)); html.push_str("\"/><script>alert('"); assert_eq!(r"<script>\'s end tag is <\/script>", html_escape::encode_script_single_quoted_text_to_string("<script>'s end tag is </script>", &mut html)); html.push_str("');</script>"); assert_eq!("<input value=Hello world! placeholder=\"The default value is "Hello world!".\"/><script>alert(\'<script>\\\'s end tag is <\\/script>\');</script>", html); ``` ### Decoding ```rust extern crate html_escape; assert_eq!("Hello world!", html_escape::decode_html_entities("Hello world!")); ``` ```rust extern crate html_escape; assert_eq!("alert('<script></script>');", html_escape::decode_script(r"alert('<script><\/script>');")); ``` ## No Std Disable the default features to compile this crate without std. ```toml [dependencies.html-escape] version = "*" default-features = false ``` ## Benchmark ```bash cargo bench ``` */ #![cfg_attr(not(feature = "std"), no_std)] extern crate alloc; extern crate utf8_width; mod decode; mod encode; mod functions; pub use decode::*; pub use encode::*;