Skip to content

Commit

Permalink
Use AsRef<str> instead of String for parameters/arguments (#233)
Browse files Browse the repository at this point in the history
  • Loading branch information
Tyderion authored Dec 6, 2024
1 parent efa3009 commit 6be3c0f
Show file tree
Hide file tree
Showing 6 changed files with 33 additions and 29 deletions.
2 changes: 2 additions & 0 deletions .changeset/beige-phones-end.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
---
---
16 changes: 8 additions & 8 deletions packages/yak-swc/yak_swc/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ where
{
pub fn new(
comments: Option<GenericComments>,
filename: String,
filename: impl AsRef<str>,
dev_mode: bool,
prefix: Option<String>,
) -> Self {
Expand All @@ -122,12 +122,12 @@ where
current_exported: false,
variables: VariableVisitor::new(),
yak_library_imports: None,
naming_convention: NamingConvention::new(filename.clone(), dev_mode, prefix),
naming_convention: NamingConvention::new(filename.as_ref(), dev_mode, prefix),
variable_name_selector_mapping: FxHashMap::default(),
expression_replacement: None,
css_module_identifier: None,
inside_element_with_css_attribute: false,
filename,
filename: filename.as_ref().into(),
comments,
}
}
Expand Down Expand Up @@ -452,8 +452,8 @@ ${{() => {var}}};\n",
.yak_library_imports
.as_mut()
.unwrap()
.get_yak_utility_ident("unitPostFix".to_string()),
unit.to_string(),
.get_yak_utility_ident("unitPostFix"),
unit,
)
} else {
*expr.clone()
Expand Down Expand Up @@ -662,7 +662,7 @@ where
.yak_library_imports
.as_mut()
.unwrap()
.get_yak_utility_ident("mergeCssProp".into()),
.get_yak_utility_ident("mergeCssProp"),
);
}
}
Expand Down Expand Up @@ -1022,7 +1022,7 @@ mod tests {
&|tester| {
visit_mut_pass(TransformVisitor::new(
Some(tester.comments.clone()),
"path/input.tsx".to_string(),
"path/input.tsx",
true,
None,
))
Expand All @@ -1047,7 +1047,7 @@ mod tests {
&|tester| {
visit_mut_pass(TransformVisitor::new(
Some(tester.comments.clone()),
"path/input.tsx".to_string(),
"path/input.tsx",
false,
None,
))
Expand Down
14 changes: 7 additions & 7 deletions packages/yak-swc/yak_swc/src/naming_convention.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,18 @@ pub struct NamingConvention {
/// Use the `generate_unique_name` method to generate a unique name based on a base name.
/// e.g. `generate_unique_name("foo bar")` might return `"foo_bar-01"`, `"foo_bar-02"`, etc.
impl NamingConvention {
pub fn new(file_name: String, dev_mode: bool, prefix: Option<String>) -> Self {
pub fn new(file_name: impl AsRef<str>, dev_mode: bool, prefix: Option<String>) -> Self {
Self {
postfix_counters: FxHashMap::default(),
file_name,
file_name: file_name.as_ref().into(),
file_name_hash: None,
dev_mode,
prefix: prefix.unwrap_or_else(|| {
if dev_mode {
// In dev mode we don't prefix by default as it already uses long unique names
String::from("")
"".into()
} else {
String::from("y")
"y".into()
}
}),
}
Expand Down Expand Up @@ -156,23 +156,23 @@ mod tests {

#[test]
fn css_naming_convention() {
let mut convention = NamingConvention::new("file.css".into(), true, None);
let mut convention = NamingConvention::new("file.css", true, None);
assert_eq!(convention.generate_unique_name("foo"), "foo");
assert_eq!(convention.generate_unique_name("foo"), "foo-01");
assert_eq!(convention.generate_unique_name("foo"), "foo-02");
}

#[test]
fn css_variable_name() {
let mut convention = NamingConvention::new("file.css".into(), false, None);
let mut convention = NamingConvention::new("file.css", false, None);
assert_eq!(convention.get_css_variable_name("foo"), "yoPBkbU");
assert_eq!(convention.get_css_variable_name("foo"), "yoPBkbU1");
assert_eq!(convention.get_css_variable_name(""), "yoPBkbU2");
}

#[test]
fn css_variable_name_dev_mode() {
let mut convention = NamingConvention::new("file.css".into(), true, None);
let mut convention = NamingConvention::new("file.css", true, None);
assert_eq!(convention.get_css_variable_name("foo"), "foo_oPBkbU");
assert_eq!(convention.get_css_variable_name("foo"), "foo_oPBkbU-01");
assert_eq!(convention.get_css_variable_name(""), "var_oPBkbU");
Expand Down
4 changes: 2 additions & 2 deletions packages/yak-swc/yak_swc/src/utils/add_suffix_to_expr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use swc_core::{

/// Adds a suffix to an expression
/// e.g: `({$foo}) => $foo` -> __yak_add_suffix_to_expr(({$foo}) => $foo, "-suffix")
pub fn add_suffix_to_expr(expr: Expr, helper: Ident, suffix: String) -> Expr {
pub fn add_suffix_to_expr(expr: Expr, helper: Ident, suffix: impl AsRef<str>) -> Expr {
// Otherwise, replace the expression with a call to the utility function
Expr::Call(CallExpr {
span: DUMMY_SP,
Expand All @@ -15,7 +15,7 @@ pub fn add_suffix_to_expr(expr: Expr, helper: Ident, suffix: String) -> Expr {
expr.into(),
Expr::Lit(Lit::Str(Str {
span: DUMMY_SP,
value: suffix.into(),
value: suffix.as_ref().into(),
raw: None,
}))
.into(),
Expand Down
12 changes: 7 additions & 5 deletions packages/yak-swc/yak_swc/src/utils/ast_helper.rs
Original file line number Diff line number Diff line change
Expand Up @@ -64,24 +64,26 @@ pub fn member_expr_to_strings(member_expr: &MemberExpr) -> Option<(Ident, Vec<At
}

/// String to MemberProp
pub fn create_member_prop_from_string(s: String) -> MemberProp {
pub fn create_member_prop_from_string(s: impl AsRef<str>) -> MemberProp {
// if the string contains characters that are not allowed in an identifier
// "with space" -> foo["with space"]
if s.contains(|c: char| !c.is_alphanumeric() && c != '_' && c != '$')
|| s.starts_with(|c: char| c.is_ascii_digit())
if s
.as_ref()
.contains(|c: char| !c.is_alphanumeric() && c != '_' && c != '$')
|| s.as_ref().starts_with(|c: char| c.is_ascii_digit())
{
MemberProp::Computed(ComputedPropName {
span: DUMMY_SP,
expr: Box::new(Expr::Lit(Lit::Str(Str {
span: DUMMY_SP,
value: s.into(),
value: s.as_ref().into(),
raw: None,
}))),
})
}
// otherwise "bar" -> foo.bar
else {
MemberProp::Ident(IdentName::new(s.into(), DUMMY_SP))
MemberProp::Ident(IdentName::new(s.as_ref().into(), DUMMY_SP))
}
}

Expand Down
14 changes: 7 additions & 7 deletions packages/yak-swc/yak_swc/src/yak_imports.rs
Original file line number Diff line number Diff line change
Expand Up @@ -124,14 +124,14 @@ impl YakImports {
}

/// Returns the utility function identifier
pub fn get_yak_utility_ident(&mut self, name: String) -> Ident {
if !UTILITIES.contains(&name.as_str()) {
panic!("Utility function not found: {}", name);
pub fn get_yak_utility_ident(&mut self, name: impl AsRef<str>) -> Ident {
if !UTILITIES.contains(&name.as_ref()) {
panic!("Utility function not found: {}", name.as_ref());
}
if let Some(ident) = self.yak_utilities.get(&name) {
if let Some(ident) = self.yak_utilities.get(name.as_ref()) {
ident.clone()
} else {
let prefixed_name = format!("__yak_{}", name);
let prefixed_name = format!("__yak_{}", name.as_ref());
let ident = Ident::from(prefixed_name.clone());
self.yak_utilities.insert(prefixed_name, ident.clone());
ident
Expand Down Expand Up @@ -361,9 +361,9 @@ mod tests {
fn test_yak_import_visitor_utility_ident() {
let visitor = YakImportVisitor::new();
let mut imports: YakImports = visitor.into();
let ident = imports.get_yak_utility_ident("unitPostFix".to_string());
let ident = imports.get_yak_utility_ident("unitPostFix");
assert_eq!(ident.sym, "__yak_unitPostFix");
let ident = imports.get_yak_utility_ident("mergeCssProp".to_string());
let ident = imports.get_yak_utility_ident("mergeCssProp");
assert_eq!(ident.sym, "__yak_mergeCssProp");
}
}

0 comments on commit 6be3c0f

Please sign in to comment.