Skip to content

Commit

Permalink
refactor: remove string cache (#8)
Browse files Browse the repository at this point in the history
  • Loading branch information
Boshen authored May 29, 2024
1 parent 342b371 commit 51403d8
Show file tree
Hide file tree
Showing 16 changed files with 1,428 additions and 1,765 deletions.
161 changes: 0 additions & 161 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@ nom = "7.1"
once_cell = "1.19"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
string_cache = "0.8"
thiserror = "1.0"

[dev-dependencies]
Expand Down
30 changes: 13 additions & 17 deletions src/data/caniuse.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use crate::data::browser_name::BrowserNameAtom;
use crate::data::BrowserName;
use ahash::AHashMap;
use once_cell::sync::Lazy;
use std::borrow::Cow;
Expand All @@ -11,7 +11,7 @@ pub const OP_MOB_BLINK_FIRST: u32 = 14;

#[derive(Clone, Debug)]
pub struct BrowserStat {
pub name: BrowserNameAtom,
pub name: BrowserName,
pub version_list: Vec<VersionDetail>,
}

Expand All @@ -22,13 +22,13 @@ pub struct VersionDetail {
pub release_date: Option<i64>,
}

pub type CaniuseData = AHashMap<BrowserNameAtom, BrowserStat>;
pub type CaniuseData = AHashMap<BrowserName, BrowserStat>;

pub use crate::generated::caniuse_browsers::CANIUSE_BROWSERS;
pub use crate::generated::caniuse_global_usage::CANIUSE_GLOBAL_USAGE;

pub static BROWSER_VERSION_ALIASES: Lazy<
AHashMap<BrowserNameAtom, AHashMap<&'static str, &'static str>>,
AHashMap<BrowserName, AHashMap<&'static str, &'static str>>,
> = Lazy::new(|| {
let mut aliases = CANIUSE_BROWSERS
.iter()
Expand All @@ -53,11 +53,11 @@ pub static BROWSER_VERSION_ALIASES: Lazy<
if aliases.is_empty() {
None
} else {
Some((name.clone(), aliases))
Some((*name, aliases))
}
})
.collect::<AHashMap<BrowserNameAtom, _>>();
let _ = aliases.insert("op_mob".into(), {
.collect::<AHashMap<BrowserName, _>>();
let _ = aliases.insert("op_mob", {
let mut aliases = AHashMap::new();
let _ = aliases.insert("59", "58");
aliases
Expand All @@ -66,8 +66,8 @@ pub static BROWSER_VERSION_ALIASES: Lazy<
});

static ANDROID_TO_DESKTOP: Lazy<BrowserStat> = Lazy::new(|| {
let chrome = CANIUSE_BROWSERS.get(&"chrome".into()).unwrap();
let mut android = CANIUSE_BROWSERS.get(&"android".into()).unwrap().clone();
let chrome = CANIUSE_BROWSERS.get(&"chrome").unwrap();
let mut android = CANIUSE_BROWSERS.get("android").unwrap().clone();

android.version_list = android
.version_list
Expand Down Expand Up @@ -102,7 +102,7 @@ static ANDROID_TO_DESKTOP: Lazy<BrowserStat> = Lazy::new(|| {
});

static OPERA_MOBILE_TO_DESKTOP: Lazy<BrowserStat> =
Lazy::new(|| CANIUSE_BROWSERS.get(&"opera".into()).unwrap().clone());
Lazy::new(|| CANIUSE_BROWSERS.get("opera").unwrap().clone());

pub fn get_browser_stat(
name: &str,
Expand All @@ -121,18 +121,14 @@ pub fn get_browser_stat(
"android" => Some(("android", &ANDROID_TO_DESKTOP)),
"op_mob" => Some(("op_mob", &OPERA_MOBILE_TO_DESKTOP)),
_ => CANIUSE_BROWSERS
.get(&desktop_name.into())
.get(desktop_name)
.map(|stat| (get_mobile_by_desktop_name(desktop_name), stat)),
}
} else {
CANIUSE_BROWSERS
.get(&name.into())
.map(|stat| (&*stat.name, stat))
CANIUSE_BROWSERS.get(name).map(|stat| (stat.name, stat))
}
} else {
CANIUSE_BROWSERS
.get(&name.into())
.map(|stat| (&*stat.name, stat))
CANIUSE_BROWSERS.get(name).map(|stat| (stat.name, stat))
}
}

Expand Down
4 changes: 2 additions & 2 deletions src/data/caniuse/features.rs
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
use super::BrowserNameAtom;
use super::BrowserName;
use ahash::AHashMap;
use indexmap::IndexMap;

type Feature = AHashMap<BrowserNameAtom, IndexMap<&'static str, u8>>;
type Feature = AHashMap<BrowserName, IndexMap<&'static str, u8>>;

pub fn get_feature_stat(name: &str) -> Option<&'static Feature> {
crate::generated::caniuse_feature_matching::_get_feature_stat(name)
Expand Down
46 changes: 22 additions & 24 deletions src/data/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,33 +2,31 @@ pub mod caniuse;
pub mod electron;
pub mod node;

pub type BrowserName = &'static str;

#[doc(hidden)]
#[allow(unused)]
pub mod browser_name {
use crate::browser_name_atom;
pub use crate::generated::browser_name_atom::*;

pub fn decode_browser_name(id: u8) -> BrowserNameAtom {
pub fn decode_browser_name(id: u8) -> super::BrowserName {
match id {
1 => browser_name_atom!("ie"),
2 => browser_name_atom!("edge"),
3 => browser_name_atom!("firefox"),
4 => browser_name_atom!("chrome"),
5 => browser_name_atom!("safari"),
6 => browser_name_atom!("opera"),
7 => browser_name_atom!("ios_saf"),
8 => browser_name_atom!("op_mini"),
9 => browser_name_atom!("android"),
10 => browser_name_atom!("bb"),
11 => browser_name_atom!("op_mob"),
12 => browser_name_atom!("and_chr"),
13 => browser_name_atom!("and_ff"),
14 => browser_name_atom!("ie_mob"),
15 => browser_name_atom!("and_uc"),
16 => browser_name_atom!("samsung"),
17 => browser_name_atom!("and_qq"),
18 => browser_name_atom!("baidu"),
19 => browser_name_atom!("kaios"),
1 => "ie",
2 => "edge",
3 => "firefox",
4 => "chrome",
5 => "safari",
6 => "opera",
7 => "ios_saf",
8 => "op_mini",
9 => "android",
10 => "bb",
11 => "op_mob",
12 => "and_chr",
13 => "and_ff",
14 => "ie_mob",
15 => "and_uc",
16 => "samsung",
17 => "and_qq",
18 => "baidu",
19 => "kaios",
_ => unreachable!("cannot recognize browser id"),
}
}
Expand Down
1 change: 0 additions & 1 deletion src/generated.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#![allow(missing_docs, dead_code, clippy::pedantic)]
pub mod browser_name_atom;
pub mod caniuse_browsers;
pub mod caniuse_feature_matching;
pub mod caniuse_global_usage;
Expand Down
Loading

0 comments on commit 51403d8

Please sign in to comment.