50 lines
1.9 KiB
Rust
50 lines
1.9 KiB
Rust
#![doc(html_favicon_url = "https://ruma.dev/favicon.ico")]
|
|
#![doc(html_logo_url = "https://ruma.dev/images/logo.png")]
|
|
//! Opinionated HTML parsing and manipulating library.
|
|
//!
|
|
//! Like the rest of the Ruma crates, this crate is primarily meant to be used for
|
|
//! the Matrix protocol. It should be able to be used to interact with any HTML
|
|
//! document but will offer APIs focused on specificities of HTML in the Matrix
|
|
//! specification..
|
|
//!
|
|
//! # Features
|
|
//!
|
|
//! * `matrix` - Allow to convert HTML elements data into enums with variants for elements and
|
|
//! attributes [suggested by the Matrix Specification][spec].
|
|
//!
|
|
//! [spec]: https://spec.matrix.org/latest/client-server-api/#mroommessage-msgtypes
|
|
|
|
#![warn(missing_docs)]
|
|
#![cfg_attr(docsrs, feature(doc_auto_cfg))]
|
|
|
|
pub use html5ever::{tendril::StrTendril, Attribute, LocalName, Namespace, Prefix, QualName};
|
|
|
|
mod helpers;
|
|
mod html;
|
|
mod sanitizer_config;
|
|
|
|
pub use self::{helpers::*, html::*, sanitizer_config::*};
|
|
|
|
/// What [HTML elements and attributes] should be kept by the sanitizer.
|
|
///
|
|
/// [HTML elements and attributes]: https://spec.matrix.org/latest/client-server-api/#mroommessage-msgtypes
|
|
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
|
|
#[allow(clippy::exhaustive_enums)]
|
|
pub enum HtmlSanitizerMode {
|
|
/// Keep only the elements and attributes suggested in the Matrix specification.
|
|
///
|
|
/// In addition to filtering elements and attributes listed in the Matrix specification, it
|
|
/// also removes elements that are nested more than 100 levels deep.
|
|
///
|
|
/// Deprecated elements and attributes are also replaced when applicable.
|
|
Strict,
|
|
|
|
/// Like `Strict` mode, with additional elements and attributes that are not yet included in
|
|
/// the spec, but are reasonable to keep.
|
|
///
|
|
/// Differences with `Strict` mode:
|
|
///
|
|
/// * The `matrix` scheme is allowed in links.
|
|
Compat,
|
|
}
|