html: Rename Fragment to Html
This commit is contained in:
parent
9d0f23c8a7
commit
80c71ef454
@ -14,13 +14,13 @@ use tracing::debug;
|
||||
///
|
||||
/// To get the serialized HTML, use its `Display` implementation.
|
||||
#[derive(Debug)]
|
||||
pub struct Fragment {
|
||||
pub struct Html {
|
||||
pub(crate) nodes: Vec<Node>,
|
||||
}
|
||||
|
||||
impl Fragment {
|
||||
/// Construct a new `Fragment` by parsing the given HTML.
|
||||
pub fn parse_html(html: &str) -> Self {
|
||||
impl Html {
|
||||
/// Construct a new `Html` by parsing the given string.
|
||||
pub fn parse(string: &str) -> Self {
|
||||
let sink = Self::default();
|
||||
let mut parser = parse_fragment(
|
||||
sink,
|
||||
@ -28,11 +28,11 @@ impl Fragment {
|
||||
QualName::new(None, ns!(html), local_name!("div")),
|
||||
Vec::new(),
|
||||
);
|
||||
parser.process(html.into());
|
||||
parser.process(string.into());
|
||||
parser.finish()
|
||||
}
|
||||
|
||||
/// Construct a new `Node` with the given data and add it to this `Fragment`.
|
||||
/// Construct a new `Node` with the given data and add it to this `Html`.
|
||||
///
|
||||
/// Returns the index of the new node.
|
||||
pub fn new_node(&mut self, data: NodeData) -> usize {
|
||||
@ -40,7 +40,7 @@ impl Fragment {
|
||||
self.nodes.len() - 1
|
||||
}
|
||||
|
||||
/// Append the given node to the given parent in this `Fragment`.
|
||||
/// Append the given node to the given parent in this `Html`.
|
||||
///
|
||||
/// The node is detached from its previous position.
|
||||
pub fn append_node(&mut self, parent_id: usize, node_id: usize) {
|
||||
@ -56,7 +56,7 @@ impl Fragment {
|
||||
self.nodes[parent_id].last_child = Some(node_id);
|
||||
}
|
||||
|
||||
/// Insert the given node before the given sibling in this `Fragment`.
|
||||
/// Insert the given node before the given sibling in this `Html`.
|
||||
///
|
||||
/// The node is detached from its previous position.
|
||||
pub fn insert_before(&mut self, sibling_id: usize, node_id: usize) {
|
||||
@ -73,7 +73,7 @@ impl Fragment {
|
||||
self.nodes[sibling_id].prev_sibling = Some(node_id);
|
||||
}
|
||||
|
||||
/// Detach the given node from this `Fragment`.
|
||||
/// Detach the given node from this `Html`.
|
||||
pub fn detach(&mut self, node_id: usize) {
|
||||
let (parent, prev_sibling, next_sibling) = {
|
||||
let node = &mut self.nodes[node_id];
|
||||
@ -94,13 +94,13 @@ impl Fragment {
|
||||
}
|
||||
}
|
||||
|
||||
impl Default for Fragment {
|
||||
impl Default for Html {
|
||||
fn default() -> Self {
|
||||
Self { nodes: vec![Node::new(NodeData::Document)] }
|
||||
}
|
||||
}
|
||||
|
||||
impl TreeSink for Fragment {
|
||||
impl TreeSink for Html {
|
||||
type Handle = usize;
|
||||
type Output = Self;
|
||||
|
||||
@ -225,7 +225,7 @@ impl TreeSink for Fragment {
|
||||
}
|
||||
}
|
||||
|
||||
impl Serialize for Fragment {
|
||||
impl Serialize for Html {
|
||||
fn serialize<S>(&self, serializer: &mut S, traversal_scope: TraversalScope) -> io::Result<()>
|
||||
where
|
||||
S: Serializer,
|
||||
@ -248,7 +248,7 @@ impl Serialize for Fragment {
|
||||
}
|
||||
}
|
||||
|
||||
impl fmt::Display for Fragment {
|
||||
impl fmt::Display for Html {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
let mut u8_vec = Vec::new();
|
||||
serialize(
|
||||
@ -306,7 +306,7 @@ impl Node {
|
||||
}
|
||||
|
||||
impl Node {
|
||||
pub(crate) fn serialize<S>(&self, fragment: &Fragment, serializer: &mut S) -> io::Result<()>
|
||||
pub(crate) fn serialize<S>(&self, fragment: &Html, serializer: &mut S) -> io::Result<()>
|
||||
where
|
||||
S: Serializer,
|
||||
{
|
||||
@ -348,7 +348,7 @@ impl Node {
|
||||
#[derive(Debug)]
|
||||
#[allow(clippy::exhaustive_enums)]
|
||||
pub enum NodeData {
|
||||
/// The root node of the `Fragment`.
|
||||
/// The root node of the `Html`.
|
||||
Document,
|
||||
|
||||
/// A text node.
|
||||
@ -374,7 +374,7 @@ pub struct ElementData {
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::Fragment;
|
||||
use super::Html;
|
||||
|
||||
#[test]
|
||||
fn sanity() {
|
||||
@ -384,8 +384,8 @@ mod tests {
|
||||
<p>This is some <em>text</em></p>\
|
||||
</div>\
|
||||
";
|
||||
assert_eq!(Fragment::parse_html(html).to_string(), html);
|
||||
assert_eq!(Html::parse(html).to_string(), html);
|
||||
|
||||
assert_eq!(Fragment::parse_html("").to_string(), "");
|
||||
assert_eq!(Html::parse("").to_string(), "");
|
||||
}
|
||||
}
|
@ -10,10 +10,10 @@
|
||||
#![warn(missing_docs)]
|
||||
#![cfg_attr(docsrs, feature(doc_auto_cfg))]
|
||||
|
||||
mod html_fragment;
|
||||
mod html;
|
||||
mod sanitize;
|
||||
|
||||
pub use self::{
|
||||
html_fragment::{ElementData, Fragment, Node, NodeData},
|
||||
html::{ElementData, Html, Node, NodeData},
|
||||
sanitize::*,
|
||||
};
|
||||
|
@ -3,7 +3,7 @@ use phf::{phf_map, phf_set, Map, Set};
|
||||
use wildmatch::WildMatch;
|
||||
|
||||
use super::{HtmlSanitizerMode, RemoveReplyFallback};
|
||||
use crate::{ElementData, Fragment, NodeData};
|
||||
use crate::{ElementData, Html, NodeData};
|
||||
|
||||
/// A sanitizer to filter [HTML tags and attributes] according to the Matrix specification.
|
||||
///
|
||||
@ -56,8 +56,8 @@ impl HtmlSanitizer {
|
||||
}
|
||||
|
||||
/// Clean the given HTML string with this sanitizer.
|
||||
pub fn clean(&self, html: &str) -> Fragment {
|
||||
let mut fragment = Fragment::parse_html(html);
|
||||
pub fn clean(&self, html: &str) -> Html {
|
||||
let mut fragment = Html::parse(html);
|
||||
|
||||
let root = fragment.nodes[0].first_child.unwrap();
|
||||
let mut next_child = fragment.nodes[root].first_child;
|
||||
@ -69,7 +69,7 @@ impl HtmlSanitizer {
|
||||
fragment
|
||||
}
|
||||
|
||||
fn clean_node(&self, fragment: &mut Fragment, node_id: usize, depth: u32) {
|
||||
fn clean_node(&self, fragment: &mut Html, node_id: usize, depth: u32) {
|
||||
let action = self.node_action(fragment, node_id, depth);
|
||||
|
||||
if action != NodeAction::Remove {
|
||||
@ -94,7 +94,7 @@ impl HtmlSanitizer {
|
||||
}
|
||||
}
|
||||
|
||||
fn node_action(&self, fragment: &Fragment, node_id: usize, depth: u32) -> NodeAction {
|
||||
fn node_action(&self, fragment: &Html, node_id: usize, depth: u32) -> NodeAction {
|
||||
match &fragment.nodes[node_id].data {
|
||||
NodeData::Element(ElementData { name, attrs, .. }) => {
|
||||
let tag: &str = &name.local;
|
||||
|
Loading…
x
Reference in New Issue
Block a user