Skip to content

Commit cb61810

Browse files
committed
Refactor code
1 parent 679ec14 commit cb61810

File tree

5 files changed

+61
-35
lines changed

5 files changed

+61
-35
lines changed

libs/extractor/src/visit.rs

Lines changed: 27 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -531,45 +531,37 @@ impl<'a> VisitMut<'a> for DevupVisitor<'a> {
531531
{
532532
let property_name = name.name.to_string();
533533
for name in disassemble_property(&property_name) {
534-
if duplicate_set.contains(&name) {
535-
continue;
536-
}
537-
duplicate_set.insert(name.clone());
538-
if property_name == "styleOrder" {
539-
style_order = jsx_expression_to_number(attr.value.as_ref().unwrap())
540-
.map(|n| n as u8);
541-
continue;
542-
}
543-
if property_name == "props" {
544-
if let Some(value) = attr.value.as_ref()
545-
&& let JSXAttributeValue::ExpressionContainer(expr) = value
546-
&& let Some(expression) = expr.expression.as_expression()
547-
{
548-
props = Some(expression.clone_in(self.ast.allocator));
549-
}
550-
continue;
551-
}
552-
if property_name == "styleVars" {
553-
if let Some(value) = attr.value.as_ref()
554-
&& let JSXAttributeValue::ExpressionContainer(expr) = value
555-
&& let Some(expression) = expr.expression.as_expression()
556-
{
557-
style_vars = Some(expression.clone_in(self.ast.allocator));
534+
if !duplicate_set.contains(&name) {
535+
duplicate_set.insert(name.clone());
536+
if property_name == "styleOrder" {
537+
style_order =
538+
jsx_expression_to_number(attr.value.as_ref().unwrap())
539+
.map(|n| n as u8);
540+
} else if property_name == "props" {
541+
if let Some(value) = attr.value.as_ref()
542+
&& let JSXAttributeValue::ExpressionContainer(expr) = value
543+
&& let Some(expression) = expr.expression.as_expression()
544+
{
545+
props = Some(expression.clone_in(self.ast.allocator));
546+
}
547+
} else if property_name == "styleVars" {
548+
if let Some(value) = attr.value.as_ref()
549+
&& let JSXAttributeValue::ExpressionContainer(expr) = value
550+
&& let Some(expression) = expr.expression.as_expression()
551+
{
552+
style_vars = Some(expression.clone_in(self.ast.allocator));
553+
}
554+
} else if let Some(at) = &mut attr.value {
555+
let ExtractResult { styles, tag, .. } =
556+
extract_style_from_jsx(&self.ast, &name, at);
557+
props_styles.extend(styles.into_iter().rev());
558+
tag_name = tag.unwrap_or(tag_name);
558559
}
559-
continue;
560-
}
561-
562-
if let Some(at) = &mut attr.value {
563-
let ExtractResult { styles, tag, .. } =
564-
extract_style_from_jsx(&self.ast, &name, at);
565-
props_styles.extend(styles.into_iter().rev());
566-
tag_name = tag.unwrap_or(tag_name);
567-
continue;
568560
}
569561
}
570-
continue;
562+
} else {
563+
attrs.insert(i, attr);
571564
}
572-
attrs.insert(i, attr);
573565
}
574566

575567
kind.extract()

libs/sheet/src/lib.rs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -683,6 +683,7 @@ mod tests {
683683
use crate::theme::{ColorTheme, Typography};
684684

685685
use super::*;
686+
use extractor::{ExtractOption, extract};
686687
use insta::assert_debug_snapshot;
687688

688689
#[test]
@@ -786,6 +787,12 @@ mod tests {
786787
assert_debug_snapshot!(sheet.create_css(None, false).split("*/").nth(1).unwrap());
787788
}
788789

790+
#[test]
791+
fn test_import_css() {
792+
let sheet = StyleSheet::default();
793+
assert_debug_snapshot!(sheet.create_css(Some("index.tsx"), true));
794+
}
795+
789796
#[test]
790797
fn test_create_css() {
791798
let mut sheet = StyleSheet::default();
@@ -1731,4 +1738,16 @@ mod tests {
17311738

17321739
assert_debug_snapshot!(css.split("*/").nth(1).unwrap());
17331740
}
1741+
1742+
#[test]
1743+
fn test_update_styles() {
1744+
let mut sheet = StyleSheet::default();
1745+
sheet.update_styles(&HashSet::new(), "index.tsx", true);
1746+
assert_debug_snapshot!(sheet.create_css(Some("index.tsx"), true));
1747+
1748+
let mut sheet = StyleSheet::default();
1749+
let output = extract("index.tsx", "import {Box,globalCss} from '@devup-ui/core';<Box w={1} h={variable} />;globalCss`div{color:red}`;globalCss({div:{display:flex},fontFaces:[{fontFamily:'Roboto',src:'url(/fonts/Roboto-Regular.ttf)'}]})", ExtractOption { package: "@devup-ui/core".to_string(), css_dir: "@devup-ui/core".to_string(), single_css: true, import_main_css: false }).unwrap();
1750+
sheet.update_styles(&output.styles, "index.tsx", true);
1751+
assert_debug_snapshot!(sheet.create_css(None, true).split("*/").nth(1).unwrap());
1752+
}
17341753
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
source: libs/sheet/src/lib.rs
3+
expression: "sheet.create_css(Some(\"index.tsx\"), true)"
4+
---
5+
"@import \"./devup-ui.css\";"
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
source: libs/sheet/src/lib.rs
3+
expression: "sheet.create_css(None, true).split(\"*/\").nth(1).unwrap()"
4+
---
5+
"@layer b;@font-face{font-family:Roboto;src:url(/fonts/Roboto-Regular.ttf)}div{color:red}@layer b{div{display:var(--e)}}.b{height:var(--c)}.a{width:4px}"
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
source: libs/sheet/src/lib.rs
3+
expression: "sheet.create_css(Some(\"index.tsx\"), true)"
4+
---
5+
"@import \"./devup-ui.css\";"

0 commit comments

Comments
 (0)