UPDATE: Use regex-lite crate instead of of regex
This removes almost 1Mb form the generated wasm(!!!)
This commit is contained in:
committed by
Nicolás Hatcher Andrés
parent
430b420435
commit
472740f296
13
Cargo.lock
generated
13
Cargo.lock
generated
@@ -1,6 +1,6 @@
|
|||||||
# This file is automatically @generated by Cargo.
|
# This file is automatically @generated by Cargo.
|
||||||
# It is not intended for manual editing.
|
# It is not intended for manual editing.
|
||||||
version = 3
|
version = 4
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "adler"
|
name = "adler"
|
||||||
@@ -401,6 +401,7 @@ dependencies = [
|
|||||||
"once_cell",
|
"once_cell",
|
||||||
"rand",
|
"rand",
|
||||||
"regex",
|
"regex",
|
||||||
|
"regex-lite",
|
||||||
"ryu",
|
"ryu",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
@@ -498,9 +499,9 @@ checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "parse-zoneinfo"
|
name = "parse-zoneinfo"
|
||||||
version = "0.3.0"
|
version = "0.3.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "c705f256449c60da65e11ff6626e0c16a0a0b96aaa348de61376b249bc340f41"
|
checksum = "1f2a05b18d44e2957b88f96ba460715e295bc1d7510468a2f3d3b44535d26c24"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"regex",
|
"regex",
|
||||||
]
|
]
|
||||||
@@ -734,6 +735,12 @@ dependencies = [
|
|||||||
"regex-syntax",
|
"regex-syntax",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "regex-lite"
|
||||||
|
version = "0.1.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "53a49587ad06b26609c52e423de037e7f57f20d53535d66e08c695f347df952a"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "regex-syntax"
|
name = "regex-syntax"
|
||||||
version = "0.8.3"
|
version = "0.8.3"
|
||||||
|
|||||||
@@ -15,11 +15,17 @@ serde = { version = "1.0", features = ["derive"] }
|
|||||||
ryu = "1.0"
|
ryu = "1.0"
|
||||||
chrono = "0.4"
|
chrono = "0.4"
|
||||||
chrono-tz = "0.9"
|
chrono-tz = "0.9"
|
||||||
regex = "1.0"
|
regex = { version = "1.0", optional = true}
|
||||||
|
regex-lite = { version = "0.1.6", optional = true}
|
||||||
once_cell = "1.16.0"
|
once_cell = "1.16.0"
|
||||||
bitcode = "0.6.0"
|
bitcode = "0.6.0"
|
||||||
csv = "1.3.0"
|
csv = "1.3.0"
|
||||||
|
|
||||||
|
[features]
|
||||||
|
default = ["use_regex_full"]
|
||||||
|
use_regex_full = ["regex"]
|
||||||
|
use_regex_lite = ["regex-lite"]
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
serde_json = "1.0"
|
serde_json = "1.0"
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
use regex::{escape, Regex};
|
#[cfg(feature = "use_regex_lite")]
|
||||||
|
use regex_lite as regex;
|
||||||
|
|
||||||
use crate::{calc_result::CalcResult, expressions::token::is_english_error_string};
|
use crate::{calc_result::CalcResult, expressions::token::is_english_error_string};
|
||||||
|
|
||||||
@@ -86,7 +87,7 @@ pub(crate) fn from_wildcard_to_regex(
|
|||||||
exact: bool,
|
exact: bool,
|
||||||
) -> Result<regex::Regex, regex::Error> {
|
) -> Result<regex::Regex, regex::Error> {
|
||||||
// 1. Escape all
|
// 1. Escape all
|
||||||
let reg = &escape(wildcard);
|
let reg = ®ex::escape(wildcard);
|
||||||
|
|
||||||
// 2. We convert the escaped '?' into '.' (matches a single character)
|
// 2. We convert the escaped '?' into '.' (matches a single character)
|
||||||
let reg = ®.replace("\\?", ".");
|
let reg = ®.replace("\\?", ".");
|
||||||
@@ -109,9 +110,9 @@ pub(crate) fn from_wildcard_to_regex(
|
|||||||
|
|
||||||
// And we have a valid Perl regex! (As Kim Kardashian said before me: "I know, right?")
|
// And we have a valid Perl regex! (As Kim Kardashian said before me: "I know, right?")
|
||||||
if exact {
|
if exact {
|
||||||
return Regex::new(&format!("^{}$", reg));
|
return regex::Regex::new(&format!("^{}$", reg));
|
||||||
}
|
}
|
||||||
Regex::new(reg)
|
regex::Regex::new(reg)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// NUMBERS ///
|
/// NUMBERS ///
|
||||||
@@ -203,7 +204,7 @@ fn result_is_not_equal_to_bool(calc_result: &CalcResult, target: bool) -> bool {
|
|||||||
|
|
||||||
/// Note that strings are case insensitive. `target` must always be lower case.
|
/// Note that strings are case insensitive. `target` must always be lower case.
|
||||||
|
|
||||||
pub(crate) fn result_matches_regex(calc_result: &CalcResult, reg: &Regex) -> bool {
|
pub(crate) fn result_matches_regex(calc_result: &CalcResult, reg: ®ex::Regex) -> bool {
|
||||||
match calc_result {
|
match calc_result {
|
||||||
CalcResult::String(s) => reg.is_match(&s.to_lowercase()),
|
CalcResult::String(s) => reg.is_match(&s.to_lowercase()),
|
||||||
_ => false,
|
_ => false,
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ crate-type = ["cdylib"]
|
|||||||
# Uses `../ironcalc/base` when used locally, and uses
|
# Uses `../ironcalc/base` when used locally, and uses
|
||||||
# the inicated version from crates.io when published.
|
# the inicated version from crates.io when published.
|
||||||
# https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#multiple-locations
|
# https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#multiple-locations
|
||||||
ironcalc_base = { path = "../../base", version = "0.2" }
|
ironcalc_base = { path = "../../base", version = "0.2", features = ["use_regex_lite"] }
|
||||||
serde = { version = "1.0", features = ["derive"] }
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
wasm-bindgen = "0.2.92"
|
wasm-bindgen = "0.2.92"
|
||||||
serde-wasm-bindgen = "0.4"
|
serde-wasm-bindgen = "0.4"
|
||||||
|
|||||||
Reference in New Issue
Block a user