Skip to content

Commit 17319bf

Browse files
committed
Refactor code
1 parent 8535462 commit 17319bf

File tree

3 files changed

+130
-140
lines changed

3 files changed

+130
-140
lines changed

libs/extractor/src/gen_class_name.rs

Lines changed: 19 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,11 @@ fn gen_class_name<'a>(
3535
st.set_style_order(style_order);
3636
}
3737
st.extract(filename).map(|style| {
38-
ast_builder.expression_string_literal(
39-
SPAN,
40-
ast_builder.atom(&match style {
41-
StyleProperty::ClassName(cls) => cls,
42-
StyleProperty::Variable { class_name, .. } => class_name,
43-
}),
44-
None,
45-
)
38+
let v = ast_builder.atom(&match style {
39+
StyleProperty::ClassName(cls) => cls,
40+
StyleProperty::Variable { class_name, .. } => class_name,
41+
});
42+
ast_builder.expression_string_literal(SPAN, v, None)
4643
})
4744
}
4845
ExtractStyleProp::StaticArray(res) => merge_expression_for_class_name(
@@ -147,25 +144,22 @@ pub fn merge_expression_for_class_name<'a>(
147144
let mut qu = oxc_allocator::Vec::new_in(ast_builder.allocator);
148145
for idx in 0..unknown_expr.len() + 1 {
149146
let tail = idx == unknown_expr.len();
150-
qu.push(ast_builder.template_element(
151-
SPAN,
152-
TemplateElementValue {
153-
raw: ast_builder.atom(if idx == 0 {
154-
if class_name.is_empty() {
155-
""
156-
} else {
157-
class_name.push(' ');
158-
class_name.as_str()
159-
}
160-
} else if tail {
147+
let t = TemplateElementValue {
148+
raw: ast_builder.atom(if idx == 0 {
149+
if class_name.is_empty() {
161150
""
162151
} else {
163-
" "
164-
}),
165-
cooked: None,
166-
},
167-
tail,
168-
));
152+
class_name.push(' ');
153+
class_name.as_str()
154+
}
155+
} else if tail {
156+
""
157+
} else {
158+
" "
159+
}),
160+
cooked: None,
161+
};
162+
qu.push(ast_builder.template_element(SPAN, t, tail));
169163
}
170164

171165
Some(ast_builder.expression_template_literal(

libs/extractor/src/gen_style.rs

Lines changed: 67 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -117,32 +117,32 @@ fn gen_style<'a>(
117117
return vec![];
118118
}
119119
for p in collect_c.iter() {
120-
let mut found = false;
121-
for q in collect_a.iter() {
122-
if let (
123-
ObjectPropertyKind::ObjectProperty(p),
124-
ObjectPropertyKind::ObjectProperty(q),
125-
) = (p, q)
126-
&& p.key.name() == q.key.name()
120+
let found = collect_a.iter().any(|q| {
121+
if let ObjectPropertyKind::ObjectProperty(p) = p
122+
&& let ObjectPropertyKind::ObjectProperty(q) = q
127123
{
128-
found = true;
129-
properties.push(ast_builder.object_property_kind_object_property(
130-
SPAN,
131-
PropertyKind::Init,
132-
p.key.clone_in(ast_builder.allocator),
133-
ast_builder.expression_conditional(
124+
let r = p.key.name() == q.key.name();
125+
if r {
126+
properties.push(ast_builder.object_property_kind_object_property(
134127
SPAN,
135-
condition.clone_in(ast_builder.allocator),
136-
p.value.clone_in(ast_builder.allocator),
137-
q.value.clone_in(ast_builder.allocator),
138-
),
139-
false,
140-
false,
141-
false,
142-
));
143-
break;
128+
PropertyKind::Init,
129+
p.key.clone_in(ast_builder.allocator),
130+
ast_builder.expression_conditional(
131+
SPAN,
132+
condition.clone_in(ast_builder.allocator),
133+
p.value.clone_in(ast_builder.allocator),
134+
q.value.clone_in(ast_builder.allocator),
135+
),
136+
false,
137+
false,
138+
false,
139+
));
140+
}
141+
r
142+
} else {
143+
false
144144
}
145-
}
145+
});
146146
if !found && let ObjectPropertyKind::ObjectProperty(p) = p {
147147
properties.push(ast_builder.object_property_kind_object_property(
148148
SPAN,
@@ -157,18 +157,15 @@ fn gen_style<'a>(
157157
}
158158

159159
for q in collect_a.iter() {
160-
let mut found = false;
161-
for p in collect_c.iter() {
162-
if let (
163-
ObjectPropertyKind::ObjectProperty(p),
164-
ObjectPropertyKind::ObjectProperty(q),
165-
) = (p, q)
166-
&& p.key.name() == q.key.name()
160+
let found = collect_c.iter().any(|p| {
161+
if let ObjectPropertyKind::ObjectProperty(p) = p
162+
&& let ObjectPropertyKind::ObjectProperty(q) = q
167163
{
168-
found = true;
169-
break;
164+
p.key.name() == q.key.name()
165+
} else {
166+
false
170167
}
171-
}
168+
});
172169
if !found && let ObjectPropertyKind::ObjectProperty(q) = q {
173170
properties.push(ast_builder.object_property_kind_object_property(
174171
SPAN,
@@ -201,6 +198,42 @@ fn gen_style<'a>(
201198
}
202199

203200
for (key, value) in tmp_map {
201+
let v = if value.len() == 1 {
202+
// do not create object expression when property is single
203+
ast_builder.expression_identifier(SPAN, ast_builder.atom(&value[0].1))
204+
} else {
205+
Expression::ComputedMemberExpression(
206+
ast_builder.alloc_computed_member_expression(
207+
SPAN,
208+
ast_builder.expression_object(
209+
SPAN,
210+
oxc_allocator::Vec::from_iter_in(
211+
value
212+
.into_iter()
213+
.map(|(k, v)| {
214+
ast_builder.object_property_kind_object_property(
215+
SPAN,
216+
PropertyKind::Init,
217+
ast_builder.property_key_static_identifier(
218+
SPAN,
219+
ast_builder.atom(&k),
220+
),
221+
ast_builder
222+
.expression_identifier(SPAN, ast_builder.atom(&v)),
223+
false,
224+
false,
225+
false,
226+
)
227+
})
228+
.collect::<Vec<_>>(),
229+
ast_builder.allocator,
230+
),
231+
),
232+
expression.clone_in(ast_builder.allocator),
233+
false,
234+
),
235+
)
236+
};
204237
properties.push(ast_builder.object_property_kind_object_property(
205238
SPAN,
206239
PropertyKind::Init,
@@ -209,44 +242,7 @@ fn gen_style<'a>(
209242
ast_builder.atom(&key),
210243
None,
211244
)),
212-
if value.len() == 1 {
213-
// do not create object expression when property is single
214-
ast_builder.expression_identifier(SPAN, ast_builder.atom(&value[0].1))
215-
} else {
216-
Expression::ComputedMemberExpression(
217-
ast_builder.alloc_computed_member_expression(
218-
SPAN,
219-
ast_builder.expression_object(
220-
SPAN,
221-
oxc_allocator::Vec::from_iter_in(
222-
value
223-
.into_iter()
224-
.map(|(k, v)| {
225-
ast_builder.object_property_kind_object_property(
226-
SPAN,
227-
PropertyKind::Init,
228-
ast_builder.property_key_static_identifier(
229-
SPAN,
230-
ast_builder.atom(&k),
231-
),
232-
ast_builder.expression_identifier(
233-
SPAN,
234-
ast_builder.atom(&v),
235-
),
236-
false,
237-
false,
238-
false,
239-
)
240-
})
241-
.collect::<Vec<_>>(),
242-
ast_builder.allocator,
243-
),
244-
),
245-
expression.clone_in(ast_builder.allocator),
246-
false,
247-
),
248-
)
249-
},
245+
v,
250246
false,
251247
false,
252248
false,

libs/extractor/src/prop_modify_utils.rs

Lines changed: 44 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -430,51 +430,51 @@ pub fn convert_style_vars<'a>(
430430
let mut prop = obj.properties.remove(idx);
431431

432432
if let ObjectPropertyKind::ObjectProperty(p) = &mut prop {
433-
let name = match &p.key {
434-
PropertyKey::StaticIdentifier(ident) => Some(ident.name),
435-
PropertyKey::StringLiteral(ident) => Some(ident.value),
436-
_ => {
437-
obj.properties.insert(
438-
idx,
439-
ast_builder.object_property_kind_object_property(
433+
let name = if let PropertyKey::StaticIdentifier(ident) = &p.key {
434+
Some(ident.name)
435+
} else if let PropertyKey::StringLiteral(ident) = &p.key {
436+
Some(ident.value)
437+
} else {
438+
obj.properties.insert(
439+
idx,
440+
ast_builder.object_property_kind_object_property(
441+
SPAN,
442+
PropertyKind::Init,
443+
PropertyKey::TemplateLiteral(ast_builder.alloc_template_literal(
440444
SPAN,
441-
PropertyKind::Init,
442-
PropertyKey::TemplateLiteral(ast_builder.alloc_template_literal(
443-
SPAN,
444-
oxc_allocator::Vec::from_array_in(
445-
[
446-
ast_builder.template_element(
447-
SPAN,
448-
TemplateElementValue {
449-
raw: ast_builder.atom("--"),
450-
cooked: None,
451-
},
452-
false,
453-
),
454-
ast_builder.template_element(
455-
SPAN,
456-
TemplateElementValue {
457-
raw: ast_builder.atom(""),
458-
cooked: None,
459-
},
460-
true,
461-
),
462-
],
463-
ast_builder.allocator,
464-
),
465-
oxc_allocator::Vec::from_array_in(
466-
[p.key.to_expression().clone_in(ast_builder.allocator)],
467-
ast_builder.allocator,
468-
),
469-
)),
470-
p.value.clone_in(ast_builder.allocator),
471-
false,
472-
false,
473-
true,
474-
),
475-
);
476-
None
477-
}
445+
oxc_allocator::Vec::from_array_in(
446+
[
447+
ast_builder.template_element(
448+
SPAN,
449+
TemplateElementValue {
450+
raw: ast_builder.atom("--"),
451+
cooked: None,
452+
},
453+
false,
454+
),
455+
ast_builder.template_element(
456+
SPAN,
457+
TemplateElementValue {
458+
raw: ast_builder.atom(""),
459+
cooked: None,
460+
},
461+
true,
462+
),
463+
],
464+
ast_builder.allocator,
465+
),
466+
oxc_allocator::Vec::from_array_in(
467+
[p.key.to_expression().clone_in(ast_builder.allocator)],
468+
ast_builder.allocator,
469+
),
470+
)),
471+
p.value.clone_in(ast_builder.allocator),
472+
false,
473+
false,
474+
true,
475+
),
476+
);
477+
None
478478
};
479479

480480
if let Some(name) = name {

0 commit comments

Comments
 (0)