Skip to content

Commit

Permalink
fixed clippy formatting and issues
Browse files Browse the repository at this point in the history
  • Loading branch information
jaytaph committed Sep 29, 2024
1 parent 9ad5ea8 commit 3dac2f9
Show file tree
Hide file tree
Showing 27 changed files with 423 additions and 408 deletions.
21 changes: 11 additions & 10 deletions benches/tree_iterator.rs
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
use std::fs::File;

use criterion::{criterion_group, criterion_main, Criterion};
use gosub_html5::node::NodeId;
use gosub_html5::parser::document::{Document, DocumentBuilder, TreeIterator};
use gosub_css3::system::Css3System;
use gosub_html5::document::builder::DocumentBuilderImpl;
use gosub_html5::document::document_impl::TreeIterator;
use gosub_html5::parser::Html5Parser;
use gosub_shared::byte_stream::{ByteStream, Encoding};
use gosub_shared::node::NodeId;
use gosub_shared::traits::document::DocumentBuilder;

fn wikipedia_main_page(c: &mut Criterion) {
// Criterion can report inconsistent results from run to run in some cases. We attempt to
Expand All @@ -17,13 +20,12 @@ fn wikipedia_main_page(c: &mut Criterion) {
let mut stream = ByteStream::new(Encoding::UTF8, None);
let _ = stream.read_from_file(html_file);

let main_document = DocumentBuilder::new_document(None);
let document = Document::clone(&main_document);
let _ = Html5Parser::parse_document(&mut stream, document, None);
let doc_handle = <DocumentBuilderImpl as DocumentBuilder<Css3System>>::new_document(None);
let _ = Html5Parser::parse_document(&mut stream, doc_handle.clone(), None);

group.bench_function("wikipedia main page", |b| {
b.iter(|| {
let tree_iterator = TreeIterator::new(&main_document);
let tree_iterator = TreeIterator::new(doc_handle.clone());
let _ = tree_iterator.collect::<Vec<NodeId>>();
})
});
Expand All @@ -43,13 +45,12 @@ fn stackoverflow_home(c: &mut Criterion) {
let mut bytestream = ByteStream::new(Encoding::UTF8, None);
let _ = bytestream.read_from_file(html_file);

let main_document = DocumentBuilder::new_document(None);
let document = Document::clone(&main_document);
let _ = Html5Parser::parse_document(&mut bytestream, document, None);
let doc_handle = <DocumentBuilderImpl as DocumentBuilder<Css3System>>::new_document(None);
let _ = Html5Parser::parse_document(&mut bytestream, doc_handle.clone(), None);

group.bench_function("stackoverflow home", |b| {
b.iter(|| {
let tree_iterator = TreeIterator::new(&main_document);
let tree_iterator = TreeIterator::new(doc_handle.clone());
let _ = tree_iterator.collect::<Vec<NodeId>>();
})
});
Expand Down
5 changes: 1 addition & 4 deletions crates/gosub_css3/src/matcher/styling.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@ use gosub_shared::document::DocumentHandle;
use gosub_shared::node::NodeId;
use gosub_shared::traits::css3::{CssOrigin, CssPropertyMap, CssSystem};
use gosub_shared::traits::document::Document;
use gosub_shared::traits::node::ClassList;
use gosub_shared::traits::node::ElementDataType;
use gosub_shared::traits::node::Node;
use itertools::Itertools;
use std::cmp::Ordering;
use std::collections::HashMap;
use gosub_shared::traits::node::ClassList;

use crate::matcher::property_definitions::get_css_definitions;
use crate::stylesheet::{Combinator, CssSelector, CssSelectorPart, CssValue, MatcherType, Specificity};
Expand Down Expand Up @@ -620,7 +620,6 @@ impl CssProperties {
impl CssPropertyMap for CssProperties {
type Property = CssProperty;


fn insert_inherited(&mut self, name: &str, value: Self::Property) {
self.properties.entry(name.to_string()).or_insert(value);
}
Expand Down Expand Up @@ -654,8 +653,6 @@ impl CssPropertyMap for CssProperties {
}
}



#[cfg(test)]
mod tests {
use super::*;
Expand Down
9 changes: 5 additions & 4 deletions crates/gosub_css3/src/system.rs
Original file line number Diff line number Diff line change
Expand Up @@ -99,9 +99,12 @@ impl CssSystem for Css3System {
}
}


impl Css3System {
fn resolve_inheritance<T: RenderTree<Self>>(tree: &mut T, node_id: T::NodeId, inherit_props: &Vec<(String, CssValue)>) {
fn resolve_inheritance<T: RenderTree<Self>>(
tree: &mut T,
node_id: T::NodeId,
inherit_props: &Vec<(String, CssValue)>,
) {
let Some(current_node) = tree.get_node_mut(node_id) else {
return;
};
Expand Down Expand Up @@ -143,15 +146,13 @@ impl Css3System {
}
}


pub fn prop_is_inherit(name: &str) -> bool {
get_css_definitions()
.find_property(name)
.map(|def| def.inherited)
.unwrap_or(false)
}


pub fn add_property_to_map(
css_map_entry: &mut CssProperties,
sheet: &crate::stylesheet::CssStylesheet,
Expand Down
4 changes: 2 additions & 2 deletions crates/gosub_html5/src/document.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
pub mod builder;
pub mod document_impl;
pub mod fragment;
pub mod builder;
pub mod task_queue;
pub mod query;
pub mod task_queue;
5 changes: 3 additions & 2 deletions crates/gosub_html5/src/document/builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ use url::Url;
use crate::document::document_impl::DocumentImpl;
use crate::node::HTML_NAMESPACE;
use crate::DocumentHandle;
use gosub_shared::traits::document::DocumentBuilder;
use gosub_shared::traits::document::{Document, DocumentType};
use gosub_shared::traits::node::{Node, QuirksMode};
use gosub_shared::traits::document::DocumentBuilder;

/// This struct will be used to create a fully initialized document or document fragment
pub struct DocumentBuilderImpl {}
Expand Down Expand Up @@ -36,7 +36,8 @@ impl<C: CssSystem> DocumentBuilder<C> for DocumentBuilderImpl {
HashMap::new(),
context_node.location(),
);
let mut fragment_handle = <Self::Document as Document<C>>::new(DocumentType::HTML, None, Some(fragment_root_node));
let mut fragment_handle =
<Self::Document as Document<C>>::new(DocumentType::HTML, None, Some(fragment_root_node));

// let context_node = context_node.clone();
match quirks_mode {
Expand Down
56 changes: 30 additions & 26 deletions crates/gosub_html5/src/document/document_impl.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
use crate::DocumentHandle;
use core::fmt::Debug;
use gosub_shared::traits::document::{Document as OtherDocument, Document, DocumentType};
use std::cell::RefCell;
use std::collections::hash_map::Entry;
use gosub_shared::traits::document::{Document as OtherDocument, Document, DocumentType};
use std::collections::HashMap;
use std::fmt;
use std::fmt::{Display, Formatter};
Expand All @@ -11,6 +11,7 @@ use url::Url;

use crate::document::builder::DocumentBuilderImpl;
use crate::document::fragment::DocumentFragmentImpl;
use crate::document::task_queue::is_valid_id_attribute_value;
use crate::node::arena::NodeArena;
use crate::node::data::comment::CommentData;
use crate::node::data::doctype::DocTypeData;
Expand All @@ -24,7 +25,6 @@ use gosub_shared::node::NodeId;
use gosub_shared::traits::css3::CssSystem;
use gosub_shared::traits::node::Node;
use gosub_shared::traits::node::QuirksMode;
use crate::document::task_queue::is_valid_id_attribute_value;

/// Defines a document
#[derive(Debug)]
Expand Down Expand Up @@ -105,14 +105,15 @@ impl<C: CssSystem> Document<C> for DocumentImpl<C> {
self.doctype
}


/// Fetches a node by id or returns None when no node with this ID is found
fn node_by_id(&self, node_id: NodeId) -> Option<&Self::Node> {
self.arena.node_ref(node_id)
}

fn node_by_named_id(&self, id: &str) -> Option<&Self::Node> {
self.named_id_elements.get(id).and_then(|node_id| self.arena.node_ref(*node_id))
self.named_id_elements
.get(id)
.and_then(|node_id| self.arena.node_ref(*node_id))
}

fn stylesheets(&self) -> &Vec<C::Stylesheet> {
Expand Down Expand Up @@ -155,7 +156,7 @@ impl<C: CssSystem> Document<C> for DocumentImpl<C> {
} else {
parent_node.insert(node_id, position);
}
},
}
None => {
// No position given, add to end of the children list
parent_node.push(node_id);
Expand Down Expand Up @@ -204,7 +205,7 @@ impl<C: CssSystem> Document<C> for DocumentImpl<C> {
}

fn update_node(&mut self, node: Self::Node) {
if ! node.is_registered() {
if !node.is_registered() {
log::warn!("Node is not registered to the arena");
return;
}
Expand All @@ -214,7 +215,7 @@ impl<C: CssSystem> Document<C> for DocumentImpl<C> {
}

fn update_node_ref(&mut self, node: &Self::Node) {
if ! node.is_registered() {
if !node.is_registered() {
log::warn!("Node is not registered to the arena");
return;
}
Expand Down Expand Up @@ -359,7 +360,13 @@ impl<C: CssSystem> Document<C> for DocumentImpl<C> {
NodeImpl::new(
handle.clone(),
location,
&NodeDataTypeInternal::Element(ElementData::new(handle.clone(), name, namespace, attributes, class_list)),
&NodeDataTypeInternal::Element(ElementData::new(
handle.clone(),
name,
namespace,
attributes,
class_list,
)),
)
}

Expand All @@ -385,7 +392,7 @@ impl<C: CssSystem> DocumentImpl<C> {

/// Update document's named id structure when the node has ID elements
fn on_document_node_mutation_update_named_id(&mut self, node: &NodeImpl<C>) {
if ! node.is_element_node() {
if !node.is_element_node() {
return;
}

Expand All @@ -396,7 +403,7 @@ impl<C: CssSystem> DocumentImpl<C> {
match self.named_id_elements.entry(id_value.clone()) {
Entry::Vacant(entry) => {
entry.insert(node.id());
},
}
Entry::Occupied(_) => {}
}
}
Expand Down Expand Up @@ -605,20 +612,20 @@ impl<D: Document<C>, C: CssSystem> Iterator for TreeIterator<D, C> {

#[cfg(test)]
mod tests {
use crate::document::query::DocumentQuery;
use crate::parser::query::Query;
use super::*;
use crate::document::builder::DocumentBuilderImpl;
use gosub_css3::system::Css3System;
use crate::document::query::DocumentQuery;
use crate::document::task_queue::DocumentTaskQueue;
use crate::node::HTML_NAMESPACE;
use crate::parser::query::Query;
use crate::parser::tree_builder::TreeBuilder;
use gosub_css3::system::Css3System;
use gosub_shared::byte_stream::Location;
use gosub_shared::traits::document::DocumentBuilder;
use gosub_shared::traits::node::ClassList;
use gosub_shared::traits::node::ElementDataType;
use gosub_shared::traits::node::NodeType;
use gosub_shared::traits::node::ClassList;
use std::collections::HashMap;
use crate::parser::tree_builder::TreeBuilder;

type Document = DocumentImpl<Css3System>;

Expand Down Expand Up @@ -743,8 +750,7 @@ mod tests {

#[test]
fn document_task_queue() {
let doc_handle: DocumentHandle<DocumentImpl<Css3System>, Css3System> =
DocumentBuilderImpl::new_document(None);
let doc_handle: DocumentHandle<DocumentImpl<Css3System>, Css3System> = DocumentBuilderImpl::new_document(None);

// Using task queue to create the following structure initially:
// <div>
Expand Down Expand Up @@ -1020,7 +1026,7 @@ mod tests {
drop(binding);

let doc_read = doc_handle.get();
let Some(data)= doc_read.node_by_id(node_id).unwrap().get_element_data() else {
let Some(data) = doc_read.node_by_id(node_id).unwrap().get_element_data() else {
panic!()
};
assert_eq!(data.attributes().get("key").unwrap(), "value");
Expand Down Expand Up @@ -1076,8 +1082,7 @@ mod tests {

#[test]
fn task_queue_insert_class_attribute() {
let doc_handle: DocumentHandle<DocumentImpl<Css3System>, Css3System> =
DocumentBuilderImpl::new_document(None);
let doc_handle: DocumentHandle<DocumentImpl<Css3System>, Css3System> = DocumentBuilderImpl::new_document(None);

let mut task_queue = DocumentTaskQueue::new(doc_handle.clone());
let div_id = task_queue.create_element("div", NodeId::root(), None, HTML_NAMESPACE, Location::default());
Expand All @@ -1096,8 +1101,7 @@ mod tests {

#[test]
fn uninitialized_query() {
let doc_handle: DocumentHandle<DocumentImpl<Css3System>, Css3System> =
DocumentBuilderImpl::new_document(None);
let doc_handle: DocumentHandle<DocumentImpl<Css3System>, Css3System> = DocumentBuilderImpl::new_document(None);

let query = Query::new();
let found_ids = DocumentQuery::query(doc_handle.clone(), &query);
Expand Down Expand Up @@ -2185,7 +2189,7 @@ mod tests {
);
let p_id = doc_handle.get_mut().register_node_at(p_node, div_id_2, None);

let text_node = Document::new_text_node(doc_handle.clone(),"first p tag", Location::default());
let text_node = Document::new_text_node(doc_handle.clone(), "first p tag", Location::default());
let text_id = doc_handle.get_mut().register_node_at(text_node, p_id, None);

let p_node_2 = Document::new_element_node(
Expand All @@ -2197,7 +2201,7 @@ mod tests {
);
let p_id_2 = doc_handle.get_mut().register_node_at(p_node_2, div_id_2, None);

let text_node_2 = Document::new_text_node(doc_handle.clone(),"second p tag", Location::default());
let text_node_2 = Document::new_text_node(doc_handle.clone(), "second p tag", Location::default());
let text_id_2 = doc_handle.get_mut().register_node_at(text_node_2, p_id_2, None);
let p_node_3 = Document::new_element_node(
doc_handle.clone(),
Expand All @@ -2208,7 +2212,7 @@ mod tests {
);
let p_id_3 = doc_handle.get_mut().register_node_at(p_node_3, div_id, None);

let text_node_3 = Document::new_text_node(doc_handle.clone(),"third p tag", Location::default());
let text_node_3 = Document::new_text_node(doc_handle.clone(), "third p tag", Location::default());
let text_id_3 = doc_handle.get_mut().register_node_at(text_node_3, p_id_3, None);

let tree_iterator = TreeIterator::new(doc_handle.clone());
Expand Down Expand Up @@ -2259,7 +2263,7 @@ mod tests {
"div_1",
Some(HTML_NAMESPACE),
HashMap::new(),
Location::default()
Location::default(),
);
let div_id_2 = doc_handle.get_mut().register_node_at(div_node_2, NodeId::root(), None);

Expand Down
Loading

0 comments on commit 3dac2f9

Please sign in to comment.