Skip to content

Commit bbc5539

Browse files
committed
feat: 修复calc对于px字符串的处理
1 parent 5095f15 commit bbc5539

File tree

3 files changed

+33
-1
lines changed

3 files changed

+33
-1
lines changed

index.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export interface ParseOptions {
1010
platformString: string
1111
designWidth?: number
1212
output?: OutputOptions
13+
allowInherit?: boolean
1314
}
1415
export interface ParseResult {
1516
code?: string

src/style_propetries/macros.rs

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,23 @@ macro_rules! generate_expr_lit_color {
7272
macro_rules! generate_expr_lit_calc {
7373
($var:expr, $platform:expr) => {{
7474
use $crate::generate_expr_lit_str;
75-
generate_expr_lit_str!($var.clone())
75+
// 扫描 $var 中是存在px单位,如果存在,替换为lpx
76+
let re = regex::Regex::new(r#"(\d+(?:px|vw|vh))"#).unwrap();
77+
let result = re.replace_all($var.as_str(), |caps: &regex::Captures| {
78+
let value = &caps[1];
79+
let unit = &value[value.len() - 2..];
80+
let parsed_value: i32 = value[..value.len() - 2].parse().unwrap();
81+
if $platform == Platform::Harmony {
82+
if unit == "px" {
83+
format!("{}lpx", parsed_value)
84+
} else {
85+
format!("{}l{}", parsed_value, unit)
86+
}
87+
} else {
88+
format!("{}px", parsed_value)
89+
}
90+
});
91+
generate_expr_lit_str!(result.to_string())
7692

7793
// use swc_core::ecma::ast::*;
7894
// use swc_core::{

src/style_propetries/unit.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,21 @@ pub fn generate_expr_by_length_value(length_value: &LengthValue, platform: Platf
118118
}
119119
}
120120
}
121+
LengthValue::Ex(num) => {
122+
match platform {
123+
Platform::ReactNative => {
124+
handler = Some(RN_CONVERT_STYLE_VU_FN.to_string());
125+
args.push(generate_expr_lit_num!(*num as f64));
126+
args.push(generate_expr_lit_str!("PX"));
127+
}
128+
Platform::Harmony => {
129+
return generate_expr_lit_str!(format!("{}fp", num));
130+
// handler = Some(CONVERT_STYLE_PX_FN.to_string());
131+
// args.push(generate_expr_lit_num!(*num as f64));
132+
// args.push(generate_expr_lit_str!("PX"));
133+
}
134+
}
135+
}
121136
_ => {}
122137
}
123138

0 commit comments

Comments
 (0)