diff --git a/gen/_common.ts b/gen/_common.ts index 7f303b8..dcbcf77 100644 --- a/gen/_common.ts +++ b/gen/_common.ts @@ -1,7 +1,7 @@ import { mkdirSync, writeFileSync } from "fs"; import { join } from "path"; -export const RUST_OUT_DIR = join(__dirname, "..", "rust", "common", "src", "gen"); +export const RUST_OUT_DIR = join(__dirname, "..", "rust", "common", "gen"); try { mkdirSync(RUST_OUT_DIR); diff --git a/gen/attrs.ts b/gen/attrs.ts index e947ca1..dd5c76d 100644 --- a/gen/attrs.ts +++ b/gen/attrs.ts @@ -21,7 +21,7 @@ const rsTagAttr = ({ let code = ` use lazy_static::lazy_static; use std::collections::HashMap; -use crate::spec::tag::ns::Namespace; +use crate::common::spec::tag::ns::Namespace; pub struct AttributeMinification { pub boolean: bool, diff --git a/gen/trie.ts b/gen/trie.ts index 5240b6d..bde76f7 100644 --- a/gen/trie.ts +++ b/gen/trie.ts @@ -159,7 +159,7 @@ export class TrieBuilder { ).join(", "); const value = node.value === undefined ? "None" : `Some(${node.value})`; - const varValue = `&crate::pattern::TrieNode { + const varValue = `&crate::common::pattern::TrieNode { offset: ${firstIdx}, value: ${value}, children: &[${children}], @@ -171,7 +171,7 @@ export class TrieBuilder { const name = `${this.name}_NODE_${this.nextId++}`; this.variables.push( - `static ${name}: &crate::pattern::TrieNode<${this.valueType}> = ${varValue};` + `static ${name}: &crate::common::pattern::TrieNode<${this.valueType}> = ${varValue};` ); this.codeCache.set(varValue, name); return name; diff --git a/rust/common/.gitignore b/rust/common/.gitignore index d14a1cf..2c41ac3 100644 --- a/rust/common/.gitignore +++ b/rust/common/.gitignore @@ -1,3 +1 @@ -/Cargo.lock -/src/gen/ -/target +/gen/ diff --git a/rust/common/Cargo.toml b/rust/common/Cargo.toml deleted file mode 100644 index f421cc4..0000000 --- a/rust/common/Cargo.toml +++ /dev/null @@ -1,14 +0,0 @@ -[package] -name = "minify-html-common" -publish = false -version = "0.0.1" -authors = ["Wilson Lin "] -homepage = "https://github.com/wilsonzlin/minify-html" -repository = "https://github.com/wilsonzlin/minify-html.git" -edition = "2018" -include = ["/src/**/*", "/Cargo.toml"] - -[dependencies] -aho-corasick = "0.7" -lazy_static = "1.4" -memchr = "2" diff --git a/rust/common/src/lib.rs b/rust/common/mod.rs similarity index 100% rename from rust/common/src/lib.rs rename to rust/common/mod.rs diff --git a/rust/common/src/pattern.rs b/rust/common/pattern.rs similarity index 100% rename from rust/common/src/pattern.rs rename to rust/common/pattern.rs diff --git a/rust/common/src/spec/mod.rs b/rust/common/spec/mod.rs similarity index 100% rename from rust/common/src/spec/mod.rs rename to rust/common/spec/mod.rs diff --git a/rust/common/src/spec/script.rs b/rust/common/spec/script.rs similarity index 100% rename from rust/common/src/spec/script.rs rename to rust/common/spec/script.rs diff --git a/rust/common/src/spec/tag/mod.rs b/rust/common/spec/tag/mod.rs similarity index 100% rename from rust/common/src/spec/tag/mod.rs rename to rust/common/spec/tag/mod.rs diff --git a/rust/common/src/spec/tag/ns.rs b/rust/common/spec/tag/ns.rs similarity index 100% rename from rust/common/src/spec/tag/ns.rs rename to rust/common/spec/tag/ns.rs diff --git a/rust/common/src/spec/tag/omission.rs b/rust/common/spec/tag/omission.rs similarity index 100% rename from rust/common/src/spec/tag/omission.rs rename to rust/common/spec/tag/omission.rs diff --git a/rust/common/src/spec/tag/void.rs b/rust/common/spec/tag/void.rs similarity index 100% rename from rust/common/src/spec/tag/void.rs rename to rust/common/spec/tag/void.rs diff --git a/rust/common/src/spec/tag/whitespace.rs b/rust/common/spec/tag/whitespace.rs similarity index 100% rename from rust/common/src/spec/tag/whitespace.rs rename to rust/common/spec/tag/whitespace.rs diff --git a/rust/common/src/tests/mod.rs b/rust/common/tests/mod.rs similarity index 100% rename from rust/common/src/tests/mod.rs rename to rust/common/tests/mod.rs diff --git a/rust/common/src/whitespace.rs b/rust/common/whitespace.rs similarity index 95% rename from rust/common/src/whitespace.rs rename to rust/common/whitespace.rs index 81ed0ae..a0b4ee7 100644 --- a/rust/common/src/whitespace.rs +++ b/rust/common/whitespace.rs @@ -1,4 +1,4 @@ -use crate::gen::codepoints::WHITESPACE; +use crate::common::gen::codepoints::WHITESPACE; pub fn left_trim(val: &mut Vec) { let mut len = 0; diff --git a/rust/main/Cargo.toml b/rust/main/Cargo.toml index 5b40a1a..154b8c9 100644 --- a/rust/main/Cargo.toml +++ b/rust/main/Cargo.toml @@ -25,4 +25,3 @@ crossbeam = { version = "0.7", optional = true } esbuild-rs = { version = "0.12.18", optional = true } lazy_static = "1.4" memchr = "2" -minify-html-common = { path = "../common" } diff --git a/rust/main/src/ast/mod.rs b/rust/main/src/ast/mod.rs index 0b72121..0e29d50 100644 --- a/rust/main/src/ast/mod.rs +++ b/rust/main/src/ast/mod.rs @@ -2,7 +2,7 @@ use std::collections::HashMap; use std::fmt::{Debug, Formatter}; use std::str::from_utf8; -use minify_html_common::spec::tag::ns::Namespace; +use crate::common::spec::tag::ns::Namespace; #[derive(Copy, Clone, Eq, PartialEq, Debug)] pub enum ElementClosingTag { diff --git a/rust/main/src/common b/rust/main/src/common new file mode 120000 index 0000000..dc879ab --- /dev/null +++ b/rust/main/src/common @@ -0,0 +1 @@ +../../common \ No newline at end of file diff --git a/rust/main/src/entity/decode.rs b/rust/main/src/entity/decode.rs index 443d37a..e2c02c0 100644 --- a/rust/main/src/entity/decode.rs +++ b/rust/main/src/entity/decode.rs @@ -17,11 +17,11 @@ use std::char::from_u32; use memchr::memchr; -use minify_html_common::gen::codepoints::{ +use crate::common::gen::codepoints::{ Lookup, ALPHANUMERIC_OR_EQUALS, DIGIT, HEX_DIGIT, LOWER_HEX_ALPHA, UPPER_HEX_ALPHA, }; -use minify_html_common::gen::entities::{EntityType, ENTITY}; -use minify_html_common::pattern::TrieNodeMatch; +use crate::common::gen::entities::{EntityType, ENTITY}; +use crate::common::pattern::TrieNodeMatch; enum Decoded { Ignored, diff --git a/rust/main/src/entity/encode.rs b/rust/main/src/entity/encode.rs index 72a4d64..1391cb1 100644 --- a/rust/main/src/entity/encode.rs +++ b/rust/main/src/entity/encode.rs @@ -2,11 +2,11 @@ use aho_corasick::{AhoCorasick, AhoCorasickBuilder, MatchKind}; use lazy_static::lazy_static; use memchr::memchr; -use minify_html_common::gen::codepoints::ALPHANUMERIC_OR_EQUALS; -use minify_html_common::gen::entities::{ +use crate::common::gen::codepoints::ALPHANUMERIC_OR_EQUALS; +use crate::common::gen::entities::{ EntityType, ENTITY, SHORTER_ENCODED_ENTITIES_DECODED, SHORTER_ENCODED_ENTITIES_ENCODED, }; -use minify_html_common::pattern::TrieNodeMatch; +use crate::common::pattern::TrieNodeMatch; lazy_static! { static ref SHORTER_ENCODED_ENTITIES_ENCODED_SEARCHER: AhoCorasick = AhoCorasickBuilder::new() diff --git a/rust/main/src/lib.rs b/rust/main/src/lib.rs index bda5984..548dae3 100644 --- a/rust/main/src/lib.rs +++ b/rust/main/src/lib.rs @@ -2,11 +2,12 @@ pub use crate::cfg::Cfg; use crate::minify::content::minify_content; use crate::parse::content::parse_content; use crate::parse::Code; -use minify_html_common::spec::tag::ns::Namespace; -use minify_html_common::spec::tag::EMPTY_SLICE; +use crate::common::spec::tag::ns::Namespace; +use crate::common::spec::tag::EMPTY_SLICE; mod ast; mod cfg; +mod common; mod entity; mod minify; mod parse; diff --git a/rust/main/src/minify/attr.rs b/rust/main/src/minify/attr.rs index 70c537a..74d6095 100644 --- a/rust/main/src/minify/attr.rs +++ b/rust/main/src/minify/attr.rs @@ -8,12 +8,12 @@ use { use crate::entity::encode::encode_entities; use crate::Cfg; -use minify_html_common::gen::attrs::ATTRS; -use minify_html_common::gen::codepoints::DIGIT; -use minify_html_common::pattern::Replacer; -use minify_html_common::spec::script::JAVASCRIPT_MIME_TYPES; -use minify_html_common::spec::tag::ns::Namespace; -use minify_html_common::whitespace::{collapse_whitespace, left_trim, right_trim}; +use crate::common::gen::attrs::ATTRS; +use crate::common::gen::codepoints::DIGIT; +use crate::common::pattern::Replacer; +use crate::common::spec::script::JAVASCRIPT_MIME_TYPES; +use crate::common::spec::tag::ns::Namespace; +use crate::common::whitespace::{collapse_whitespace, left_trim, right_trim}; fn build_double_quoted_replacer() -> Replacer { let mut patterns = Vec::>::new(); diff --git a/rust/main/src/minify/content.rs b/rust/main/src/minify/content.rs index 31d6926..de72fd3 100644 --- a/rust/main/src/minify/content.rs +++ b/rust/main/src/minify/content.rs @@ -10,12 +10,12 @@ use crate::minify::css::minify_css; use crate::minify::element::minify_element; use crate::minify::instruction::minify_instruction; use crate::minify::js::minify_js; -use minify_html_common::gen::codepoints::TAG_NAME_CHAR; -use minify_html_common::pattern::Replacer; -use minify_html_common::spec::tag::whitespace::{ +use crate::common::gen::codepoints::TAG_NAME_CHAR; +use crate::common::pattern::Replacer; +use crate::common::spec::tag::whitespace::{ get_whitespace_minification_for_tag, WhitespaceMinification, }; -use minify_html_common::whitespace::{ +use crate::common::whitespace::{ collapse_whitespace, is_all_whitespace, left_trim, right_trim, }; diff --git a/rust/main/src/minify/element.rs b/rust/main/src/minify/element.rs index aa71aea..f283ea5 100644 --- a/rust/main/src/minify/element.rs +++ b/rust/main/src/minify/element.rs @@ -4,8 +4,8 @@ use crate::ast::{ElementClosingTag, NodeData}; use crate::cfg::Cfg; use crate::minify::attr::{minify_attr, AttrMinified}; use crate::minify::content::minify_content; -use minify_html_common::spec::tag::ns::Namespace; -use minify_html_common::spec::tag::omission::{can_omit_as_before, can_omit_as_last_node}; +use crate::common::spec::tag::ns::Namespace; +use crate::common::spec::tag::omission::{can_omit_as_before, can_omit_as_last_node}; #[derive(Copy, Clone, Eq, PartialEq)] enum LastAttr { diff --git a/rust/main/src/parse/content.rs b/rust/main/src/parse/content.rs index 6fe737f..f454f20 100644 --- a/rust/main/src/parse/content.rs +++ b/rust/main/src/parse/content.rs @@ -10,10 +10,10 @@ use crate::parse::content::ContentType::*; use crate::parse::element::{parse_element, parse_tag, peek_tag_name}; use crate::parse::instruction::parse_instruction; use crate::parse::Code; -use minify_html_common::gen::codepoints::TAG_NAME_CHAR; -use minify_html_common::spec::tag::ns::Namespace; -use minify_html_common::spec::tag::omission::{can_omit_as_before, can_omit_as_last_node}; -use minify_html_common::spec::tag::void::VOID_TAGS; +use crate::common::gen::codepoints::TAG_NAME_CHAR; +use crate::common::spec::tag::ns::Namespace; +use crate::common::spec::tag::omission::{can_omit_as_before, can_omit_as_last_node}; +use crate::common::spec::tag::void::VOID_TAGS; #[derive(Copy, Clone, Eq, PartialEq)] enum ContentType { diff --git a/rust/main/src/parse/element.rs b/rust/main/src/parse/element.rs index b161c2a..a418c0c 100644 --- a/rust/main/src/parse/element.rs +++ b/rust/main/src/parse/element.rs @@ -8,13 +8,13 @@ use crate::parse::style::parse_style_content; use crate::parse::textarea::parse_textarea_content; use crate::parse::title::parse_title_content; use crate::parse::Code; -use minify_html_common::gen::codepoints::{ +use crate::common::gen::codepoints::{ ATTR_QUOTE, DOUBLE_QUOTE, NOT_UNQUOTED_ATTR_VAL_CHAR, SINGLE_QUOTE, TAG_NAME_CHAR, WHITESPACE, WHITESPACE_OR_SLASH, WHITESPACE_OR_SLASH_OR_EQUALS_OR_RIGHT_CHEVRON, }; -use minify_html_common::spec::script::JAVASCRIPT_MIME_TYPES; -use minify_html_common::spec::tag::ns::Namespace; -use minify_html_common::spec::tag::void::VOID_TAGS; +use crate::common::spec::script::JAVASCRIPT_MIME_TYPES; +use crate::common::spec::tag::ns::Namespace; +use crate::common::spec::tag::void::VOID_TAGS; use std::fmt::{Debug, Formatter}; use std::str::from_utf8; diff --git a/rust/main/src/parse/mod.rs b/rust/main/src/parse/mod.rs index 4a018be..23abfd6 100644 --- a/rust/main/src/parse/mod.rs +++ b/rust/main/src/parse/mod.rs @@ -1,4 +1,4 @@ -use minify_html_common::gen::codepoints::Lookup; +use crate::common::gen::codepoints::Lookup; pub mod bang; pub mod comment; diff --git a/rust/main/src/parse/tests/element.rs b/rust/main/src/parse/tests/element.rs index 2f34e15..9545e1b 100644 --- a/rust/main/src/parse/tests/element.rs +++ b/rust/main/src/parse/tests/element.rs @@ -3,8 +3,8 @@ use std::collections::HashMap; use crate::ast::{ElementClosingTag, NodeData}; use crate::parse::element::{parse_element, parse_tag, ParsedTag}; use crate::parse::Code; -use minify_html_common::spec::tag::ns::Namespace; -use minify_html_common::spec::tag::EMPTY_SLICE; +use crate::common::spec::tag::ns::Namespace; +use crate::common::spec::tag::EMPTY_SLICE; #[test] fn test_parse_tag() { diff --git a/rust/onepass/Cargo.toml b/rust/onepass/Cargo.toml index 6a27ce8..d312354 100644 --- a/rust/onepass/Cargo.toml +++ b/rust/onepass/Cargo.toml @@ -25,4 +25,3 @@ crossbeam = { version = "0.7", optional = true } esbuild-rs = { version = "0.12.18", optional = true } lazy_static = "1.4" memchr = "2" -minify-html-common = { path = "../common" } diff --git a/rust/onepass/src/common b/rust/onepass/src/common new file mode 120000 index 0000000..dc879ab --- /dev/null +++ b/rust/onepass/src/common @@ -0,0 +1 @@ +../../common \ No newline at end of file diff --git a/rust/onepass/src/lib.rs b/rust/onepass/src/lib.rs index 3ab0edb..395dfc2 100644 --- a/rust/onepass/src/lib.rs +++ b/rust/onepass/src/lib.rs @@ -3,9 +3,10 @@ use crate::err::debug_repr; pub use crate::err::{Error, ErrorType, FriendlyError}; use crate::proc::Processor; use crate::unit::content::process_content; -use minify_html_common::spec::tag::ns::Namespace; +use crate::common::spec::tag::ns::Namespace; mod cfg; +mod common; mod err; #[macro_use] mod proc; diff --git a/rust/onepass/src/proc/entity.rs b/rust/onepass/src/proc/entity.rs index 274c4f3..d43bcb8 100644 --- a/rust/onepass/src/proc/entity.rs +++ b/rust/onepass/src/proc/entity.rs @@ -16,11 +16,11 @@ use std::char::from_u32; use crate::proc::Processor; -use minify_html_common::gen::codepoints::{ +use crate::common::gen::codepoints::{ Lookup, ALPHANUMERIC_OR_EQUALS, DIGIT, HEX_DIGIT, LOWER_HEX_ALPHA, UPPER_HEX_ALPHA, }; -use minify_html_common::gen::entities::{EntityType, ENTITY}; -use minify_html_common::pattern::TrieNodeMatch; +use crate::common::gen::entities::{EntityType, ENTITY}; +use crate::common::pattern::TrieNodeMatch; enum Parsed { // This includes numeric entities that were invalid and decoded to 0xFFFD. diff --git a/rust/onepass/src/proc/mod.rs b/rust/onepass/src/proc/mod.rs index 2baffd0..6d1c69f 100644 --- a/rust/onepass/src/proc/mod.rs +++ b/rust/onepass/src/proc/mod.rs @@ -15,8 +15,8 @@ use crate::err::{debug_repr, Error, ErrorType, ProcessingResult}; use crate::proc::range::ProcessorRange; use crate::proc::MatchAction::*; use crate::proc::MatchMode::*; -use minify_html_common::gen::codepoints::Lookup; -use minify_html_common::spec::tag::EMPTY_SLICE; +use crate::common::gen::codepoints::Lookup; +use crate::common::spec::tag::EMPTY_SLICE; pub mod checkpoint; pub mod entity; diff --git a/rust/onepass/src/unit/attr/mod.rs b/rust/onepass/src/unit/attr/mod.rs index 454b244..7a3766c 100644 --- a/rust/onepass/src/unit/attr/mod.rs +++ b/rust/onepass/src/unit/attr/mod.rs @@ -7,9 +7,9 @@ use crate::proc::Processor; use crate::unit::attr::value::{ process_attr_value, skip_attr_value, DelimiterType, ProcessedAttrValue, }; -use minify_html_common::gen::attrs::ATTRS; -use minify_html_common::gen::codepoints::{WHATWG_ATTR_NAME_CHAR, WHITESPACE}; -use minify_html_common::spec::tag::ns::Namespace; +use crate::common::gen::attrs::ATTRS; +use crate::common::gen::codepoints::{WHATWG_ATTR_NAME_CHAR, WHITESPACE}; +use crate::common::spec::tag::ns::Namespace; mod value; diff --git a/rust/onepass/src/unit/attr/value.rs b/rust/onepass/src/unit/attr/value.rs index 2d23ecd..9638c14 100644 --- a/rust/onepass/src/unit/attr/value.rs +++ b/rust/onepass/src/unit/attr/value.rs @@ -9,7 +9,7 @@ use crate::proc::range::ProcessorRange; use crate::proc::MatchAction::*; use crate::proc::MatchMode::*; use crate::proc::Processor; -use minify_html_common::gen::codepoints::{ +use crate::common::gen::codepoints::{ ATTR_QUOTE, DIGIT, DOUBLE_QUOTE, NOT_UNQUOTED_ATTR_VAL_CHAR, SINGLE_QUOTE, WHITESPACE, }; @@ -20,7 +20,7 @@ lazy_static! { m.insert(b'\'', b"'"); m.insert(b'"', b"""); m.insert(b'>', b">"); - // Whitespace characters as defined by spec in minify_html_common::spec::codepoint::is_whitespace. + // Whitespace characters as defined by spec in crate::common::spec::codepoint::is_whitespace. m.insert(b'\x09', b" "); m.insert(b'\x0a', b" "); m.insert(b'\x0c', b" "); diff --git a/rust/onepass/src/unit/content.rs b/rust/onepass/src/unit/content.rs index 5d29250..98a85f4 100644 --- a/rust/onepass/src/unit/content.rs +++ b/rust/onepass/src/unit/content.rs @@ -10,10 +10,10 @@ use crate::unit::bang::process_bang; use crate::unit::comment::process_comment; use crate::unit::instruction::process_instruction; use crate::unit::tag::{process_tag, MaybeClosingTag}; -use minify_html_common::gen::codepoints::{TAG_NAME_CHAR, WHITESPACE}; -use minify_html_common::spec::tag::ns::Namespace; -use minify_html_common::spec::tag::omission::{can_omit_as_before, can_omit_as_last_node}; -use minify_html_common::spec::tag::whitespace::{ +use crate::common::gen::codepoints::{TAG_NAME_CHAR, WHITESPACE}; +use crate::common::spec::tag::ns::Namespace; +use crate::common::spec::tag::omission::{can_omit_as_before, can_omit_as_last_node}; +use crate::common::spec::tag::whitespace::{ get_whitespace_minification_for_tag, WhitespaceMinification, }; diff --git a/rust/onepass/src/unit/tag.rs b/rust/onepass/src/unit/tag.rs index 5acd641..70c274a 100644 --- a/rust/onepass/src/unit/tag.rs +++ b/rust/onepass/src/unit/tag.rs @@ -10,11 +10,11 @@ use crate::unit::content::process_content; use crate::unit::script::process_script; use crate::unit::style::process_style; use lazy_static::lazy_static; -use minify_html_common::gen::attrs::{AttributeMinification, ATTRS}; -use minify_html_common::gen::codepoints::{TAG_NAME_CHAR, WHITESPACE}; -use minify_html_common::spec::tag::ns::Namespace; -use minify_html_common::spec::tag::omission::{can_omit_as_before, can_omit_as_last_node}; -use minify_html_common::spec::tag::void::VOID_TAGS; +use crate::common::gen::attrs::{AttributeMinification, ATTRS}; +use crate::common::gen::codepoints::{TAG_NAME_CHAR, WHITESPACE}; +use crate::common::spec::tag::ns::Namespace; +use crate::common::spec::tag::omission::{can_omit_as_before, can_omit_as_last_node}; +use crate::common::spec::tag::void::VOID_TAGS; use std::collections::HashSet; lazy_static! {