Ammonia Versions Save

Repair and secure untrusted HTML

v3.1.0

4 years ago
  • feature: Whitelist generic attribute prefix
  • chore: Update html5ever to 0.25
  • feature: support adding attribute values to elements

v3.0.0

4 years ago

v2.1.2

4 years ago
  • Fix a memory leak caused by certain node types.

v2.1.1

5 years ago
  • Bump dependencies

v2.1.0

5 years ago
  • Bump minimum supported Rust version to 1.30.
  • Fix a potential DoS attack from pathologically nested input.

v2.0.0

5 years ago
  • Add "script" and "style" to the default set of clean content tags
  • Make all iterator-accepting APIs use IntoIterator and Borrow, so that you can pass slices directly to them.

v1.2.0

5 years ago

v1.1.0

6 years ago

v1.0.1

6 years ago
  • Bump dependencies

v1.0.0

6 years ago

Migrating

In 0.7 and earlier, you would call Ammonia::clean and get a string out:

let a: String = Ammonia::new().clean(&input);

The 1.0 API is more flexible, returning a Document struct that can be written to a writer as well as a string. It's also been renamed from ammonia::Ammonia to ammonia::Builder. So the equivalent is:

let a: Builder = Builder::new().clean(&input).to_string();

Changes since 0.7

  • Breaking change: The Ammonia struct is now called Builder and uses that pattern for better forward compatibility
  • Breaking change: The Builder::clean() method now returns a Documentstruct instead of a String (you can use the Document::to_string method to obtain a String)
  • Breaking change: keep_cleaned_elements has changed from being an off-by-default option to the only supported behavior
  • Breaking change: Using a tag with allowed_classes means that the class attribute is banned from tag_attributes (it used to be required)
  • Breaking change: The default set of allowed elements and attributes was expanded
  • Added support for reading the input from a stream
  • Added UrlRelative::Custom, allowing you to write your own relative URL resolver
  • Changed UrlRelative::RewriteWithBase take a custom URL. This made the url crate a public dependency.
  • Added id_prefix, which can be used to avoid element id collisions with the rest of the page
  • Added property getters to Builder, to see what everything is currently set to
  • Added property modifiers, to change the existing whitelist (instead of completely replacing it)

Changes since 1.0-rc3

  • Changed over to use Read and Write implementations directly, instead of using references to them (&mut T where T: Read implements Read, and the same is true for Write, so the direct version still allows the user to use references, so it's strictly more flexible)