Skip to content

Commit

Permalink
Merge pull request #492 from jaytaph/gosub-384
Browse files Browse the repository at this point in the history
Changing the bytes/CharIterator to the ByteStream
  • Loading branch information
jaytaph committed Jun 25, 2024
2 parents 8aa8e23 + 69f4c79 commit 18f3e80
Show file tree
Hide file tree
Showing 37 changed files with 1,047 additions and 1,434 deletions.
18 changes: 9 additions & 9 deletions benches/tree_iterator.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ use criterion::{criterion_group, criterion_main, Criterion};
use gosub_html5::node::NodeId;
use gosub_html5::parser::document::{Document, DocumentBuilder, TreeIterator};
use gosub_html5::parser::Html5Parser;
use gosub_shared::bytes::CharIterator;
use gosub_shared::byte_stream::ByteStream;

fn wikipedia_main_page(c: &mut Criterion) {
// Criterion can report inconsistent results from run to run in some cases. We attempt to
Expand All @@ -14,13 +14,13 @@ fn wikipedia_main_page(c: &mut Criterion) {
group.significance_level(0.1).sample_size(500);

let html_file = File::open("tests/data/tree_iterator/wikipedia_main.html").unwrap();
let mut char_iter = CharIterator::new();
let _ = char_iter.read_from_file(html_file, Some(gosub_shared::bytes::Encoding::UTF8));
char_iter.set_confidence(gosub_shared::bytes::Confidence::Certain);
let mut stream = ByteStream::new();
let _ = stream.read_from_file(html_file, Some(gosub_shared::byte_stream::Encoding::UTF8));
stream.set_confidence(gosub_shared::byte_stream::Confidence::Certain);

let main_document = DocumentBuilder::new_document(None);
let document = Document::clone(&main_document);
let _ = Html5Parser::parse_document(&mut char_iter, document, None);
let _ = Html5Parser::parse_document(&mut stream, document, None);

group.bench_function("wikipedia main page", |b| {
b.iter(|| {
Expand All @@ -41,13 +41,13 @@ fn stackoverflow_home(c: &mut Criterion) {

// using the main page of (english) wikipedia as a rough estimate of traversing a decently sized website
let html_file = File::open("tests/data/tree_iterator/stackoverflow.html").unwrap();
let mut char_iter = CharIterator::new();
let _ = char_iter.read_from_file(html_file, Some(gosub_shared::bytes::Encoding::UTF8));
char_iter.set_confidence(gosub_shared::bytes::Confidence::Certain);
let mut bytestream = ByteStream::new();
let _ = bytestream.read_from_file(html_file, Some(gosub_shared::byte_stream::Encoding::UTF8));
bytestream.set_confidence(gosub_shared::byte_stream::Confidence::Certain);

let main_document = DocumentBuilder::new_document(None);
let document = Document::clone(&main_document);
let _ = Html5Parser::parse_document(&mut char_iter, document, None);
let _ = Html5Parser::parse_document(&mut bytestream, document, None);

group.bench_function("stackoverflow home", |b| {
b.iter(|| {
Expand Down
11 changes: 6 additions & 5 deletions crates/gosub_bindings/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ pub mod wrapper;
use gosub_html5::parser::document::{Document, DocumentBuilder};
use gosub_html5::parser::Html5Parser;
use gosub_rendering::render_tree::{Node, NodeType, RenderTree, TreeIterator};
use gosub_shared::bytes::{CharIterator, Confidence, Encoding};
use gosub_shared::byte_stream::{ByteStream, Confidence, Encoding};
use wrapper::node::CNode;

/// Initialize a render tree and return an owning pointer to it.
Expand All @@ -30,12 +30,13 @@ pub unsafe extern "C" fn gosub_rendertree_init(html: *const c_char) -> *mut Rend
return ptr::null_mut();
}
};
let mut chars = CharIterator::new();
chars.read_from_str(html_str, Some(Encoding::UTF8));
chars.set_confidence(Confidence::Certain);
let mut stream = ByteStream::new();
stream.read_from_str(html_str, Some(Encoding::UTF8));
stream.set_confidence(Confidence::Certain);
stream.close();

let doc = DocumentBuilder::new_document(None);
let parse_result = Html5Parser::parse_document(&mut chars, Document::clone(&doc), None);
let parse_result = Html5Parser::parse_document(&mut stream, Document::clone(&doc), None);

if parse_result.is_ok() {
let mut rendertree = Box::new(RenderTree::new(&doc));
Expand Down
12 changes: 5 additions & 7 deletions crates/gosub_css3/src/lib.rs
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
use crate::location::Location;
use crate::node::Node;
use crate::parser_config::{Context, ParserConfig};
use crate::tokenizer::Tokenizer;
use gosub_shared::byte_stream::{ByteStream, Encoding, Stream};
use gosub_shared::byte_stream::{ByteStream, Encoding, Location};
use gosub_shared::{timing_start, timing_stop};

pub mod convert;
pub mod location;
mod node;
pub mod parser;
pub mod parser_config;
Expand Down Expand Up @@ -47,11 +45,11 @@ impl<'stream> Css3<'stream> {
pub fn parse(data: &str, config: ParserConfig) -> Result<Node, Error> {
let t_id = timing_start!("css3.parse", config.source.as_deref().unwrap_or(""));

let mut it = ByteStream::new();
it.read_from_str(data, Some(Encoding::UTF8));
it.close();
let mut stream = ByteStream::new();
stream.read_from_str(data, Some(Encoding::UTF8));
stream.close();

let mut parser = Css3::new(&mut it);
let mut parser = Css3::new(&mut stream);
let ret = parser.parse_internal(config);

timing_stop!(t_id);
Expand Down
66 changes: 0 additions & 66 deletions crates/gosub_css3/src/location.rs

This file was deleted.

3 changes: 1 addition & 2 deletions crates/gosub_css3/src/node.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
use core::fmt::{Display, Formatter};
use gosub_shared::byte_stream::Location;
use std::ops::Deref;

use crate::location::Location;

pub type Number = f32;

#[derive(Debug, Clone, PartialEq)]
Expand Down
10 changes: 5 additions & 5 deletions crates/gosub_css3/src/parser/anplusb.rs
Original file line number Diff line number Diff line change
Expand Up @@ -250,15 +250,15 @@ impl Css3<'_> {
#[cfg(test)]
mod test {
use super::*;
use gosub_shared::byte_stream::{ByteStream, Encoding, Stream};
use gosub_shared::byte_stream::{ByteStream, Encoding};

macro_rules! test {
($func:ident, $input:expr, $expected:expr) => {
let mut it = ByteStream::new();
it.read_from_str($input, Some(Encoding::UTF8));
it.close();
let mut stream = ByteStream::new();
stream.read_from_str($input, Some(Encoding::UTF8));
stream.close();

let mut parser = crate::Css3::new(&mut it);
let mut parser = crate::Css3::new(&mut stream);
let result = parser.$func().unwrap();

assert_eq!(result.node_type, $expected);
Expand Down
10 changes: 5 additions & 5 deletions crates/gosub_css3/src/parser/at_rule/supports.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,15 @@ impl Css3<'_> {
#[cfg(test)]
mod tests {
use crate::walker::Walker;
use gosub_shared::byte_stream::{ByteStream, Encoding, Stream};
use gosub_shared::byte_stream::{ByteStream, Encoding};

#[test]
fn test_parse_at_rule_supports_prelude() {
let mut it = ByteStream::new();
it.read_from_str("(display: flex)", Some(Encoding::UTF8));
it.close();
let mut parser = crate::Css3::new(&mut it);
let mut stream = ByteStream::new();
stream.read_from_str("(display: flex)", Some(Encoding::UTF8));
stream.close();

let mut parser = crate::Css3::new(&mut stream);
let node = parser.parse_at_rule_supports_prelude().unwrap();

let w = Walker::new(&node);
Expand Down
10 changes: 5 additions & 5 deletions crates/gosub_css3/src/parser/rule.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,15 +30,15 @@ impl Css3<'_> {
#[cfg(test)]
mod tests {
use crate::walker::Walker;
use gosub_shared::byte_stream::{ByteStream, Encoding, Stream};
use gosub_shared::byte_stream::{ByteStream, Encoding};

macro_rules! test {
($func:ident, $input:expr, $expected:expr) => {
let mut it = ByteStream::new();
it.read_from_str($input, Some(Encoding::UTF8));
it.close();
let mut stream = ByteStream::new();
stream.read_from_str($input, Some(Encoding::UTF8));
stream.close();

let mut parser = crate::Css3::new(&mut it);
let mut parser = crate::Css3::new(&mut stream);
let result = parser.$func().unwrap();

let w = Walker::new(&result);
Expand Down
18 changes: 9 additions & 9 deletions crates/gosub_css3/src/parser/url.rs
Original file line number Diff line number Diff line change
Expand Up @@ -36,15 +36,15 @@ impl Css3<'_> {
#[cfg(test)]
mod tests {
use crate::walker::Walker;
use gosub_shared::byte_stream::{ByteStream, Encoding, Stream};
use gosub_shared::byte_stream::{ByteStream, Encoding};

macro_rules! test {
($func:ident, $input:expr, $expected:expr) => {
let mut it = ByteStream::new();
it.read_from_str($input, Some(Encoding::UTF8));
it.close();
let mut stream = ByteStream::new();
stream.read_from_str($input, Some(Encoding::UTF8));
stream.close();

let mut parser = crate::Css3::new(&mut it);
let mut parser = crate::Css3::new(&mut stream);
let result = parser.$func().unwrap();

let w = Walker::new(&result);
Expand All @@ -54,11 +54,11 @@ mod tests {

macro_rules! test_err {
($func:ident, $input:expr, $expected:expr) => {
let mut it = ByteStream::new();
it.read_from_str($input, Some(Encoding::UTF8));
it.close();
let mut stream = ByteStream::new();
stream.read_from_str($input, Some(Encoding::UTF8));
stream.close();

let mut parser = crate::Css3::new(&mut it);
let mut parser = crate::Css3::new(&mut stream);
let result = parser.$func();

assert_eq!(true, result.is_err());
Expand Down
2 changes: 1 addition & 1 deletion crates/gosub_css3/src/parser_config.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use crate::location::Location;
use gosub_shared::byte_stream::Location;

/// Context defines how the data needs to be parsed
pub enum Context {
Expand Down
Loading

0 comments on commit 18f3e80

Please sign in to comment.