Expand description
Htmlize handles both encoding raw strings to be safely inserted in HTML, and decoding HTML text with entities to get back a raw string. It closely follows the official WHATWG spec for encoding and decoding text.
use htmlize::{escape_attribute, escape_text};
assert!(escape_attribute("ab & < > \" '") == "ab & < > " '");
assert!(escape_text("ab & < > \" '") == "ab & < > \" '");If you enable the unescape or unescape_fast feature:
assert!(htmlize::unescape("3 × 4 > 10") == "3 × 4 > 10");This only deals with HTML entities; it does not add or remove HTML tags.
§Which escape function to use
If the text goes in an attribute, use escape_attribute(), otherwise, use
escape_text(). If you need bytes ([u8]) instead of a String, use the
_bytes version of the functions: escape_attribute_bytes() and
escape_text_bytes().
& | < | > | " | ' | |
|---|---|---|---|---|---|
escape_text() | ✓ | ✓ | ✓ | ||
escape_attribute() | ✓ | ✓ | ✓ | ✓ | |
escape_all_quotes() | ✓ | ✓ | ✓ | ✓ | ✓ |
You should almost never need escape_all_quotes(), but it’s included
because sometimes it’s convenient to wrap attribute values in single quotes.
§Which unescape function to use
All unescape functions require the unescape or unescape_fast feature
to be enabled. See the features section below for an
explanation of the trade-offs.
unescape() is probably fine for most uses. To be strictly correct, you
should use unescape_attribute() for attribute values.
unescape_in() handles either depending on the value of the context
parameter. See its documentation for a discussion of the differences between
expanding attribute values and general text.
unescape_bytes_in() is just like unescape_in() except that it works
on [u8] rather than strings.
§Features
The escape functions are all available with no features enabled.
-
unescape_fast: provide fast version ofunescape(). This does not enable theentitiesfeature automatically.This takes perhaps 2 seconds longer to build than
unescape, but the performance is significantly better in the worst cases. That said, the performance of of theunescapeversion is already pretty good, so I don’t recommend enabling this unless you really need it. -
unescape: provide normal version ofunescape(). This will automatically enable theentitiesfeature. -
entities: buildENTITIESmap. Enabling this will add a dependency on phf and may slow builds by a few seconds.
§Internal features
-
iai: enable iai benchmarks. This should only be used when running benchmarks. See the Benchmarks section in the README. -
bench: enable unescape benchmarks by making internal functions likeunescape_fast()public. This must only be used when running benchmarks. It is required to run unescape benchmarks. See the Benchmarks section in the README. -
_unescape_either: used internally to configure benchmarks. You should not specify this directly. It is automatically enabled whenunescape_fastorunescapeare enabled.
§Minimum supported Rust version
Currently the minimum supported Rust version (MSRV) is 1.60. Future increases in the MSRV will require a major version bump.
Enums§
- Context
unescapeorunescape_fast - The context for an input string.
Constants§
- BARE_
ENTITY_ MAX_ LENGTH entities - Length of longest semicolon-less entity including ‘&’.
- ENTITY_
MAX_ LENGTH entities - Length of longest entity including ‘&’ and possibly ‘;’.
- ENTITY_
MIN_ LENGTH entities - Length of shortest entity including ‘&’ and possibly ‘;’.
- REPLACEMENT_
CHAR_ BYTES - Unicode replacement character (U+FFFD, “�”).
Statics§
- ENTITIES
entities - A map of all valid HTML entities to their expansions.
Functions§
- escape_
all_ quotes - Escape a string including both single and double quotes.
- escape_
all_ quotes_ bytes - Escape a byte string including both single and double quotes.
- escape_
attribute - Escape a string to be used in a quoted attribute.
- escape_
attribute_ bytes - Escape a byte string to be used in a quoted attribute.
- escape_
text - Escape a string used in a text node, i.e. regular text.
- escape_
text_ bytes - Escape a byte string used in a text node, i.e. regular text.
- unescape
unescapeorunescape_fast - Expand all valid entities.
- unescape_
attribute unescapeorunescape_fast - Expand all valid entities in an attribute.
- unescape_
bytes_ in unescapeorunescape_fast - Expand all valid entities in a given context.
- unescape_
in unescapeorunescape_fast - Expand all valid entities in a given context.