Skip to content

Commit 1a104ea

Browse files
authored
Fix spread attribute (#102)
* Upgrade pug-lexer * Add tests for spread attribute
1 parent 01568b2 commit 1a104ea

File tree

4 files changed

+59
-7
lines changed

4 files changed

+59
-7
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
"he": "^1.2.0",
2525
"pug-error": "^1.3.2",
2626
"pug-filters": "^3.0.1",
27-
"pug-lexer": "^4.0.0",
27+
"pug-lexer": "^4.1.0",
2828
"pug-parser": "^5.0.0",
2929
"pug-strip-comments": "^1.0.3"
3030
},

src/__tests__/__snapshots__/attributes-transformation.test.js.snap

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ module.exports = (
2020
first: true
2121
}}
2222
/>
23+
<div {...object} after=\\"after\\" />
24+
<div before=\\"before\\" {...object} />
25+
<div before=\\"before\\" {...object} after=\\"after\\" />
2326
<div className=\\"mix one two\\" />
2427
<div className={\\"mix \\" + 100} />
2528
<div className={\\"mix \\" + array} />
@@ -34,6 +37,9 @@ module.exports = (
3437
}
3538
}
3639
/>
40+
<div {...object} after=\\"after\\" className=\\"mix\\" />
41+
<div before=\\"before\\" {...object} className=\\"mix\\" />
42+
<div before=\\"before\\" {...object} after=\\"after\\" className=\\"mix\\" />
3743
</div>
3844
);
3945
"
@@ -84,6 +90,22 @@ exports[`html output: generated html 1`] = `
8490
}
8591
}
8692
/>
93+
<div
94+
after="after"
95+
first="one-in-object"
96+
second="two-in-object"
97+
/>
98+
<div
99+
before="before"
100+
first="one-in-object"
101+
second="two-in-object"
102+
/>
103+
<div
104+
after="after"
105+
before="before"
106+
first="one-in-object"
107+
second="two-in-object"
108+
/>
87109
<div
88110
className="mix one two"
89111
/>
@@ -111,7 +133,26 @@ exports[`html output: generated html 1`] = `
111133
<div
112134
className="mix [object Object]"
113135
/>
136+
<div
137+
after="after"
138+
className="mix"
139+
first="one-in-object"
140+
second="two-in-object"
141+
/>
142+
<div
143+
before="before"
144+
className="mix"
145+
first="one-in-object"
146+
second="two-in-object"
147+
/>
148+
<div
149+
after="after"
150+
before="before"
151+
className="mix"
152+
first="one-in-object"
153+
second="two-in-object"
154+
/>
114155
</div>
115156
`;
116157

117-
exports[`static html output: static html 1`] = `"<div><div class=\\"one two\\"></div><div class=\\"one two\\"></div><div class=\\"100\\"></div><div class=\\"arr-one,arr-two\\"></div><div class=\\"[object Object]\\"></div><div class=\\"one,two\\"></div><div class=\\"one two\\"></div><div class=\\"[object Object]\\"></div><div class=\\"mix one two\\"></div><div class=\\"mix 100\\"></div><div class=\\"mix arr-one,arr-two\\"></div><div class=\\"mix [object Object]\\"></div><div class=\\"mix,one,two\\"></div><div class=\\"mix one two\\"></div><div class=\\"mix [object Object]\\"></div></div>"`;
158+
exports[`static html output: static html 1`] = `"<div><div class=\\"one two\\"></div><div class=\\"one two\\"></div><div class=\\"100\\"></div><div class=\\"arr-one,arr-two\\"></div><div class=\\"[object Object]\\"></div><div class=\\"one,two\\"></div><div class=\\"one two\\"></div><div class=\\"[object Object]\\"></div><div first=\\"one-in-object\\" second=\\"two-in-object\\" after=\\"after\\"></div><div before=\\"before\\" first=\\"one-in-object\\" second=\\"two-in-object\\"></div><div before=\\"before\\" first=\\"one-in-object\\" second=\\"two-in-object\\" after=\\"after\\"></div><div class=\\"mix one two\\"></div><div class=\\"mix 100\\"></div><div class=\\"mix arr-one,arr-two\\"></div><div class=\\"mix [object Object]\\"></div><div class=\\"mix,one,two\\"></div><div class=\\"mix one two\\"></div><div class=\\"mix [object Object]\\"></div><div first=\\"one-in-object\\" second=\\"two-in-object\\" after=\\"after\\" class=\\"mix\\"></div><div before=\\"before\\" first=\\"one-in-object\\" second=\\"two-in-object\\" class=\\"mix\\"></div><div before=\\"before\\" first=\\"one-in-object\\" second=\\"two-in-object\\" after=\\"after\\" class=\\"mix\\"></div></div>"`;

src/__tests__/attributes-transformation.input.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,9 @@ module.exports = pug`
1515
div(className=['one', 'two'])
1616
div(className=['one', 'two'].join(' '))
1717
div(className={first: true})
18+
div(...object after="after")
19+
div(before="before" ...object)
20+
div(before="before" ...object after="after")
1821
1922
.mix(className="one two")
2023
.mix(className=100)
@@ -23,4 +26,7 @@ module.exports = pug`
2326
.mix(className=['one', 'two'])
2427
.mix(className=['one', 'two'].join(' '))
2528
.mix(className={first: true})
29+
.mix(...object after="after")
30+
.mix(before="before" ...object)
31+
.mix(before="before" ...object after="after")
2632
`;

yarn.lock

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4289,6 +4289,11 @@ pug-error@^1.3.2:
42894289
resolved "https://registry.yarnpkg.com/pug-error/-/pug-error-1.3.2.tgz#53ae7d9d29bb03cf564493a026109f54c47f5f26"
42904290
integrity sha1-U659nSm7A89WRJOgJhCfVMR/XyY=
42914291

4292+
pug-error@^1.3.3:
4293+
version "1.3.3"
4294+
resolved "https://registry.yarnpkg.com/pug-error/-/pug-error-1.3.3.tgz#f342fb008752d58034c185de03602dd9ffe15fa6"
4295+
integrity sha512-qE3YhESP2mRAWMFJgKdtT5D7ckThRScXRwkfo+Erqga7dyJdY3ZquspprMCj/9sJ2ijm5hXFWQE/A3l4poMWiQ==
4296+
42924297
pug-filters@^3.0.1:
42934298
version "3.1.0"
42944299
resolved "https://registry.yarnpkg.com/pug-filters/-/pug-filters-3.1.0.tgz#27165555bc04c236e4aa2b0366246dfa021b626e"
@@ -4302,14 +4307,14 @@ pug-filters@^3.0.1:
43024307
resolve "^1.1.6"
43034308
uglify-js "^2.6.1"
43044309

4305-
pug-lexer@^4.0.0:
4306-
version "4.0.0"
4307-
resolved "https://registry.yarnpkg.com/pug-lexer/-/pug-lexer-4.0.0.tgz#210c18457ef2e1760242740c5e647bd794cec278"
4308-
integrity sha1-IQwYRX7y4XYCQnQMXmR715TOwng=
4310+
pug-lexer@^4.1.0:
4311+
version "4.1.0"
4312+
resolved "https://registry.yarnpkg.com/pug-lexer/-/pug-lexer-4.1.0.tgz#531cde48c7c0b1fcbbc2b85485c8665e31489cfd"
4313+
integrity sha512-i55yzEBtjm0mlplW4LoANq7k3S8gDdfC6+LThGEvsK4FuobcKfDAwt6V4jKPH9RtiE3a2Akfg5UpafZ1OksaPA==
43094314
dependencies:
43104315
character-parser "^2.1.1"
43114316
is-expression "^3.0.0"
4312-
pug-error "^1.3.2"
4317+
pug-error "^1.3.3"
43134318

43144319
pug-parser@^5.0.0:
43154320
version "5.0.0"

0 commit comments

Comments
 (0)