Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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)

AltStyle によって変換されたページ (->オリジナル) /