Skip to content

Commit 68f17af

Browse files
authored
Merge pull request #247 from wechat-miniprogram/feat-format-wx-inline
Optimize stringify output
2 parents 4a994a1 + b066085 commit 68f17af

File tree

3 files changed

+182
-95
lines changed

3 files changed

+182
-95
lines changed

glass-easel-template-compiler/src/parse/tag.rs

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4270,9 +4270,21 @@ mod test {
42704270
"<block wx:for='{{ a }}'> abc </block>",
42714271
r#"<block wx:for="{{a}}"> abc </block>"#
42724272
);
4273+
case!(
4274+
"<block wx:for='{{ a }}'> <!-- abc --> <div> abc </div> </block>",
4275+
r#"<div wx:for="{{a}}"> abc </div>"#
4276+
);
4277+
case!(
4278+
"<block wx:for='{{ a }}'> <div let:a='{{ 1 }}'> abc </div> </block>",
4279+
r#"<block wx:for="{{a}}"><div let:a="{{1}}"> abc </div></block>"#
4280+
);
4281+
case!(
4282+
"<block wx:for='{{ a }}'> <div slot:a> abc </div> </block>",
4283+
r#"<block wx:for="{{a}}"><div slot:a> abc </div></block>"#
4284+
);
42734285
case!(
42744286
"<div wx:for='{{ a }}'> a </div>",
4275-
r#"<block wx:for="{{a}}"><div> a </div></block>"#
4287+
r#"<div wx:for="{{a}}"> a </div>"#
42764288
);
42774289
case!(
42784290
"<block wx:for='{{ a }}' wx:for-index='i' wx:for-item='j' wx:key='t'></block>",
@@ -4306,15 +4318,19 @@ mod test {
43064318
);
43074319
case!(
43084320
"<block wx:if='{{a}}'> abc </block><div wx:else/>",
4309-
r#"<block wx:if="{{a}}"> abc </block><block wx:else><div/></block>"#
4321+
r#"<block wx:if="{{a}}"> abc </block><div wx:else/>"#
43104322
);
43114323
case!(
43124324
"<block wx:if='{{a}}'> abc </block><div wx:elif='{{ b }}'/>",
4313-
r#"<block wx:if="{{a}}"> abc </block><block wx:elif="{{b}}"><div/></block>"#
4325+
r#"<block wx:if="{{a}}"> abc </block><div wx:elif="{{b}}"/>"#
43144326
);
43154327
case!(
43164328
"<block wx:if='{{a}}'> abc </block><div wx:elif='{{ b }}'/><block wx:else>A</block>",
4317-
r#"<block wx:if="{{a}}"> abc </block><block wx:elif="{{b}}"><div/></block><block wx:else>A</block>"#
4329+
r#"<block wx:if="{{a}}"> abc </block><div wx:elif="{{b}}"/><block wx:else>A</block>"#
4330+
);
4331+
case!(
4332+
"<block wx:if='{{a}}'> <div/> </block> <block wx:elif='{{ b }}'> <div/> </block> <block wx:else> <div/> </block>",
4333+
r#"<div wx:if="{{a}}"/><div wx:elif="{{b}}"/><div wx:else/>"#
43184334
);
43194335
case!(
43204336
"<block wx:elif='{{a}}'> abc </block>",
@@ -4336,7 +4352,7 @@ mod test {
43364352
);
43374353
case!(
43384354
"<block wx:if=''/><div wx:for='' wx:else />",
4339-
r#"<block wx:if/><block wx:for><div/></block>"#,
4355+
r#"<block wx:if/><div wx:for/>"#,
43404356
ParseErrorKind::InvalidAttribute,
43414357
32..39
43424358
);
@@ -4635,14 +4651,14 @@ mod test {
46354651
let src = r#"
46364652
<div wx:for="{{list}}" hidden="{{item}}" change:hidden="{{item}}" data:a="{{index}}"/>
46374653
"#;
4638-
let expect = r#"<block wx:for="{{list}}" wx:for-item="_$0" wx:for-index="_$1"><div hidden="{{_$0}}" change:hidden="{{_$0}}" data:a="{{_$1}}"/></block>"#;
4654+
let expect = r#"<div wx:for="{{list}}" wx:for-item="_$0" wx:for-index="_$1" hidden="{{_$0}}" change:hidden="{{_$0}}" data:a="{{_$1}}"/>"#;
46394655
check_with_mangling(src, expect);
46404656
let src = r#"
46414657
<block wx:for="{{list}}">
46424658
<div wx:for="{{item}}" />
46434659
</block>
46444660
"#;
4645-
let expect = r#"<block wx:for="{{list}}" wx:for-item="_$0" wx:for-index="_$1"><block wx:for="{{_$0}}" wx:for-item="_$2" wx:for-index="_$3"><div/></block></block>"#;
4661+
let expect = r#"<block wx:for="{{list}}" wx:for-item="_$0" wx:for-index="_$1"><div wx:for="{{_$0}}" wx:for-item="_$2" wx:for-index="_$3"/></block>"#;
46464662
check_with_mangling(src, expect);
46474663
let src = r#"
46484664
<block wx:for="{{list}}">
@@ -4664,7 +4680,7 @@ mod test {
46644680
let src = r#"
46654681
<slot wx:for="{{list}}" name="{{index}}" />
46664682
"#;
4667-
let expect = r#"<block wx:for="{{list}}" wx:for-item="_$0" wx:for-index="_$1"><slot name="{{_$1}}"/></block>"#;
4683+
let expect = r#"<slot wx:for="{{list}}" wx:for-item="_$0" wx:for-index="_$1" name="{{_$1}}"/>"#;
46684684
check_with_mangling(src, expect);
46694685
}
46704686

glass-easel-template-compiler/src/stringify/stringifier.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -241,7 +241,7 @@ impl<'s, 't, 'u, W: FmtWrite> StringifierLine<'s, 't, 'u, W> {
241241
location: &Range<Position>,
242242
) -> FmtResult {
243243
let name = self.block.get_scope_name(index).to_string();
244-
self.write_token(&name, Some(&name), location)
244+
self.write_token_state(&name, Some(&name), location, StringifierLineState::Normal)
245245
}
246246

247247
pub(super) fn write_token(

0 commit comments

Comments
 (0)