Skip to content

Commit c93dae9

Browse files
Tomekmularczykgiuseppeg
authored andcommitted
Better matchers for placeholders (#9)
Fixes #8
1 parent ae096fb commit c93dae9

File tree

2 files changed

+13
-14
lines changed

2 files changed

+13
-14
lines changed

index.js

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,8 @@ const sass = require('node-sass')
22

33
module.exports = (css, settings) => {
44
const cssWithPlaceholders = css
5-
.replace(/:\s*%%styled-jsx-placeholder-(\d+)%%/g, (_, id) =>
6-
`: styled-jsx-placeholder-${id}`
7-
)
8-
.replace(/%%styled-jsx-placeholder-(\d+)%%\s*{/g, (_, id) =>
9-
`styled-jsx-placeholder-${id} {`
5+
.replace(/%%styled-jsx-placeholder-(\d+)%%(\w*\s*[);{])/g, (_, id, p1) =>
6+
`styled-jsx-placeholder-${id}-${p1}`
107
)
118
.replace(/%%styled-jsx-placeholder-(\d+)%%/g, (_, id) =>
129
`/*%%styled-jsx-placeholder-${id}%%*/`
@@ -17,11 +14,8 @@ module.exports = (css, settings) => {
1714
}, settings.sassOptions)).css.toString()
1815

1916
return preprocessed
20-
.replace(/:\s*styled-jsx-placeholder-(\d+)/g, (_, id) =>
21-
`: %%styled-jsx-placeholder-${id}%%`
22-
)
23-
.replace(/styled-jsx-placeholder-(\d+)\s*{/g, (_, id) =>
24-
`%%styled-jsx-placeholder-${id}%% {`
17+
.replace(/styled-jsx-placeholder-(\d+)-(\w*\s*[);{])/g, (_, id, p1) =>
18+
`%%styled-jsx-placeholder-${id}%%${p1}`
2519
)
2620
.replace(/\/\*%%styled-jsx-placeholder-(\d+)%%\*\//g, (_, id) =>
2721
`%%styled-jsx-placeholder-${id}%%`

test.js

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,18 @@ describe('styled-jsx-plugin-sass', () => {
3030

3131
it('works with placeholders', () => {
3232
assert.equal(
33-
plugin('p { img { display: block } color: %%styled-jsx-placeholder-0%%; } %%styled-jsx-placeholder-1%%', {}).trim(),
33+
plugin(`
34+
p { img { display: block } color: %%styled-jsx-placeholder-0%%; border-bottom: 1px solid %%styled-jsx-placeholder-0%%; }
35+
%%styled-jsx-placeholder-1%%`,
36+
{}
37+
).trim(),
3438
cleanup(`
3539
p {
36-
color: %%styled-jsx-placeholder-0%%; }
40+
color: %%styled-jsx-placeholder-0%%;
41+
border-bottom: 1px solid %%styled-jsx-placeholder-0%%; }
3742
p img {
3843
display: block; }
39-
44+
4045
%%styled-jsx-placeholder-1%%
4146
`)
4247
)
@@ -50,7 +55,7 @@ describe('styled-jsx-plugin-sass', () => {
5055
@media %%styled-jsx-placeholder-0%% { color: red; }
5156
@media (min-width: %%styled-jsx-placeholder-0%%px) { color: blue; }
5257
@media (min-width: %%styled-jsx-placeholder-0%%) { color: yellow; }
53-
}`,
58+
}`,
5459
{}
5560
).trim(),
5661
cleanup(`

0 commit comments

Comments
 (0)