@notriddle notriddle released this Nov 12, 2017 · 43 commits to master since this release

Assets 2


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)