Skip to content

Commit 401d70a

Browse files
committed
Refactor code
1 parent 3a172fa commit 401d70a

5 files changed

Lines changed: 161 additions & 11 deletions

File tree

‎libs/extractor/src/as_visit.rs‎

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ impl<'a> AsVisitor<'a> {
2222
}
2323

2424
fn change_element_name<'a>(ast: &AstBuilder<'a>, element: &mut JSXElement<'a>, element_name: &str) {
25-
println!("change_element_name: {:?}", element);
2625
let element_name = ast.jsx_element_name_identifier(SPAN, ast.atom(element_name));
2726
element.opening_element.name = element_name.clone_in(ast.allocator);
2827
if let Some(el) = &mut element.closing_element {
@@ -36,25 +35,21 @@ impl<'a> VisitMut<'a> for AsVisitor<'a> {
3635
let mut element = self.element.clone_in(self.ast.allocator);
3736
change_element_name(&self.ast, &mut element, &element_name);
3837
*it = Expression::JSXElement(self.ast.alloc(element));
39-
return;
4038
} else if let Expression::Identifier(ident) = it {
4139
let element_name = ident.name.to_string();
42-
if element_name == "undefined" {
43-
return;
40+
if element_name != "undefined" {
41+
let mut element = self.element.clone_in(self.ast.allocator);
42+
change_element_name(&self.ast, &mut element, &element_name);
43+
*it = Expression::JSXElement(self.ast.alloc(element));
4444
}
45-
let mut element = self.element.clone_in(self.ast.allocator);
46-
change_element_name(&self.ast, &mut element, &element_name);
47-
*it = Expression::JSXElement(self.ast.alloc(element));
48-
return;
4945
} else if let Expression::ConditionalExpression(conditional) = it {
5046
self.visit_expression(&mut conditional.consequent);
5147
self.visit_expression(&mut conditional.alternate);
52-
return;
5348
} else if let Expression::ComputedMemberExpression(member) = it {
5449
self.visit_expression(&mut member.object);
55-
return;
50+
} else {
51+
walk_expression(self, it);
5652
}
57-
walk_expression(self, it);
5853
}
5954

6055
fn visit_object_property(&mut self, it: &mut oxc_ast::ast::ObjectProperty<'a>) {

‎libs/extractor/src/lib.rs‎

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3723,6 +3723,27 @@ e(o, { className: "a", bg: variable, style: { color: "blue" }, ...props })
37233723
));
37243724
}
37253725

3726+
#[test]
3727+
#[serial]
3728+
fn with_prefix() {
3729+
reset_class_map();
3730+
assert_debug_snapshot!(ToBTreeSet::from(
3731+
extract(
3732+
"test.jsx",
3733+
r#"import {Flex} from '@devup-ui/core'
3734+
<Flex MozTabSize={4} WebkitLineClamp={4} msBorderRadius={4} />
3735+
"#,
3736+
ExtractOption {
3737+
package: "@devup-ui/core".to_string(),
3738+
css_dir: "@devup-ui/core".to_string(),
3739+
single_css: true,
3740+
import_main_css: false,
3741+
}
3742+
)
3743+
.unwrap()
3744+
));
3745+
}
3746+
37263747
#[test]
37273748
#[serial]
37283749
fn optimize_aspect_ratio() {
@@ -7009,4 +7030,46 @@ keyframes({
70097030
.unwrap()
70107031
));
70117032
}
7033+
7034+
#[test]
7035+
#[serial]
7036+
fn import_main_css() {
7037+
reset_class_map();
7038+
assert_debug_snapshot!(ToBTreeSet::from(
7039+
extract(
7040+
"test.tsx",
7041+
r#"import {Box} from '@devup-ui/core'
7042+
<Box padding={1} margin={2} />
7043+
"#,
7044+
ExtractOption {
7045+
package: "@devup-ui/core".to_string(),
7046+
css_dir: "@devup-ui/core".to_string(),
7047+
single_css: false,
7048+
import_main_css: true
7049+
}
7050+
)
7051+
.unwrap()
7052+
));
7053+
}
7054+
7055+
#[test]
7056+
#[serial]
7057+
fn optimize_multi_css_value() {
7058+
reset_class_map();
7059+
assert_debug_snapshot!(ToBTreeSet::from(
7060+
extract(
7061+
"test.tsx",
7062+
r#"import {Box} from '@devup-ui/core'
7063+
<Box fontFamily="Roboto, Arial, sans-serif" />
7064+
"#,
7065+
ExtractOption {
7066+
package: "@devup-ui/core".to_string(),
7067+
css_dir: "@devup-ui/core".to_string(),
7068+
single_css: false,
7069+
import_main_css: false
7070+
}
7071+
)
7072+
.unwrap()
7073+
));
7074+
}
70127075
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
---
2+
source: libs/extractor/src/lib.rs
3+
expression: "ToBTreeSet::from(extract(\"test.tsx\",\nr#\"import {Box} from '@devup-ui/core'\n <Box padding={1} margin={2} />\n \"#,\nExtractOption\n{\n package: \"@devup-ui/core\".to_string(), css_dir:\n \"@devup-ui/core\".to_string(), single_css: false, import_main_css: true\n}).unwrap())"
4+
---
5+
ToBTreeSet {
6+
styles: {
7+
Static(
8+
ExtractStaticStyle {
9+
property: "margin",
10+
value: "8px",
11+
level: 0,
12+
selector: None,
13+
style_order: None,
14+
},
15+
),
16+
Static(
17+
ExtractStaticStyle {
18+
property: "padding",
19+
value: "4px",
20+
level: 0,
21+
selector: None,
22+
style_order: None,
23+
},
24+
),
25+
},
26+
code: "import \"@devup-ui/core/devup-ui.css\";\nimport \"@devup-ui/core/devup-ui-0.css\";\n<div className=\"a-a a-b\" />;\n",
27+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
---
2+
source: libs/extractor/src/lib.rs
3+
expression: "ToBTreeSet::from(extract(\"test.tsx\",\nr#\"import {Box} from '@devup-ui/core'\n <Box fontFamily=\"Roboto, Arial, sans-serif\" />\n \"#,\nExtractOption\n{\n package: \"@devup-ui/core\".to_string(), css_dir:\n \"@devup-ui/core\".to_string(), single_css: false, import_main_css: false\n}).unwrap())"
4+
---
5+
ToBTreeSet {
6+
styles: {
7+
Static(
8+
ExtractStaticStyle {
9+
property: "font-family",
10+
value: "Roboto,Arial,sans-serif",
11+
level: 0,
12+
selector: None,
13+
style_order: None,
14+
},
15+
),
16+
},
17+
code: "import \"@devup-ui/core/devup-ui-0.css\";\n<div className=\"a-a\" />;\n",
18+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
---
2+
source: libs/extractor/src/lib.rs
3+
expression: "ToBTreeSet::from(extract(\"test.jsx\",\nr#\"import {Flex} from '@devup-ui/core'\n <Flex MozTabSize={4} WebkitLineClamp={4} msBorderRadius={4} />\n \"#,\nExtractOption\n{\n package: \"@devup-ui/core\".to_string(), css_dir:\n \"@devup-ui/core\".to_string(), single_css: true, import_main_css: false,\n}).unwrap())"
4+
---
5+
ToBTreeSet {
6+
styles: {
7+
Static(
8+
ExtractStaticStyle {
9+
property: "-moz-tab-size",
10+
value: "16px",
11+
level: 0,
12+
selector: None,
13+
style_order: None,
14+
},
15+
),
16+
Static(
17+
ExtractStaticStyle {
18+
property: "-ms-border-radius",
19+
value: "16px",
20+
level: 0,
21+
selector: None,
22+
style_order: None,
23+
},
24+
),
25+
Static(
26+
ExtractStaticStyle {
27+
property: "-webkit-line-clamp",
28+
value: "4",
29+
level: 0,
30+
selector: None,
31+
style_order: None,
32+
},
33+
),
34+
Static(
35+
ExtractStaticStyle {
36+
property: "display",
37+
value: "flex",
38+
level: 0,
39+
selector: None,
40+
style_order: Some(
41+
0,
42+
),
43+
},
44+
),
45+
},
46+
code: "import \"@devup-ui/core/devup-ui.css\";\n<div className=\"a b c d\" />;\n",
47+
}

0 commit comments

Comments
 (0)