Skip to content

Commit 5711efe

Browse files
Tomekmularczykgiuseppeg
authored andcommitted
Bugfix/media-query and selectors placeholders (#6)
Fixes #4 and #7
1 parent 939b4e2 commit 5711efe

File tree

3 files changed

+1028
-9
lines changed

3 files changed

+1028
-9
lines changed

index.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,11 @@ 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}()`
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} {`
710
)
811
.replace(/%%styled-jsx-placeholder-(\d+)%%/g, (_, id) =>
912
`/*%%styled-jsx-placeholder-${id}%%*/`
@@ -14,9 +17,12 @@ module.exports = (css, settings) => {
1417
}, settings.sassOptions)).css.toString()
1518

1619
return preprocessed
17-
.replace(/\:\s*styled-jsx-placeholder-(\d+)\(\)/g, (_, id) =>
20+
.replace(/:\s*styled-jsx-placeholder-(\d+)/g, (_, id) =>
1821
`: %%styled-jsx-placeholder-${id}%%`
1922
)
23+
.replace(/styled-jsx-placeholder-(\d+)\s*{/g, (_, id) =>
24+
`%%styled-jsx-placeholder-${id}%% {`
25+
)
2026
.replace(/\/\*%%styled-jsx-placeholder-(\d+)%%\*\//g, (_, id) =>
2127
`%%styled-jsx-placeholder-${id}%%`
2228
)

test.js

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,16 @@ describe('styled-jsx-plugin-sass', () => {
1818
)
1919
})
2020

21+
it("does not add space after variable placeholder", () => {
22+
assert.equal(
23+
plugin('p { img { color: %%styled-jsx-placeholder-0%%px; } }', {}).trim(),
24+
cleanup(`
25+
p img {
26+
color: %%styled-jsx-placeholder-0%%px; }
27+
`)
28+
)
29+
})
30+
2131
it('works with placeholders', () => {
2232
assert.equal(
2333
plugin('p { img { display: block } color: %%styled-jsx-placeholder-0%%; } %%styled-jsx-placeholder-1%%', {}).trim(),
@@ -32,6 +42,45 @@ describe('styled-jsx-plugin-sass', () => {
3242
)
3343
})
3444

45+
it('works with media queries placeholders', () => {
46+
assert.equal(
47+
plugin(`
48+
p {
49+
display: block;
50+
@media %%styled-jsx-placeholder-0%% { color: red; }
51+
@media (min-width: %%styled-jsx-placeholder-0%%px) { color: blue; }
52+
@media (min-width: %%styled-jsx-placeholder-0%%) { color: yellow; }
53+
}`,
54+
{}
55+
).trim(),
56+
cleanup(`
57+
p {
58+
display: block; }
59+
@media %%styled-jsx-placeholder-0%% {
60+
p {
61+
color: red; } }
62+
@media (min-width: %%styled-jsx-placeholder-0%%px) {
63+
p {
64+
color: blue; } }
65+
@media (min-width: %%styled-jsx-placeholder-0%%) {
66+
p {
67+
color: yellow; } }
68+
`)
69+
)
70+
})
71+
72+
it('works with selectors placeholders', () => {
73+
assert.equal(
74+
plugin('p { display: block; %%styled-jsx-placeholder-0%% { color: red; } }', {}).trim(),
75+
cleanup(`
76+
p {
77+
display: block; }
78+
p %%styled-jsx-placeholder-0%% {
79+
color: red; }
80+
`)
81+
)
82+
})
83+
3584
it('works with @import', () => {
3685
assert.equal(
3786
plugin('@import "fixture"; p { color: red }', {}).trim(),
@@ -57,5 +106,5 @@ describe('styled-jsx-plugin-sass', () => {
57106
padding: 0.3em; }
58107
`)
59108
)
60-
});
109+
})
61110
})

0 commit comments

Comments
 (0)