From c98ab024f60def8845a7b1d4e2205f0fd25369ca Mon Sep 17 00:00:00 2001 From: Kevin Batdorf Date: Thu, 12 Dec 2019 23:41:57 +0700 Subject: [PATCH 1/6] add same level option --- src/index.js | 36 +++++++++++------------ tests/config.js | 7 ----- tests/variantGenerator.test.js | 53 ++++++++++++++++++++++++++++++++-- 3 files changed, 68 insertions(+), 28 deletions(-) delete mode 100644 tests/config.js diff --git a/src/index.js b/src/index.js index e4a5bef..2c185d4 100644 --- a/src/index.js +++ b/src/index.js @@ -9,25 +9,23 @@ function addSelectors(container, modifierFunction) { return rules; } -function generator({ addVariant, e }) { - addVariant('direction', ({ container, separator }) => { - const result = container.clone({ nodes: [] }); +module.exports = function({ sameLevel = true } = {}) { + return function({ addVariant, e }) { + addVariant('direction', ({ container, separator }) => { + const result = container.clone({ nodes: [] }); - ['ltr', 'rtl'].forEach(dir => { - result.nodes = result.nodes.concat( - addSelectors(container, className => { - return [ - `[dir='${dir}'] .${dir}${e(separator)}${className}`, - `[dir='${dir}'].${dir}${e(separator)}${className}`, - ]; - }) - ); - }); + ['ltr', 'rtl'].forEach(dir => { + result.nodes = result.nodes.concat( + addSelectors(container, className => { + return [ + `[dir='${dir}'] .${dir}${e(separator)}${className}`, + ... sameLevel ? [`[dir='${dir}'].${dir}${e(separator)}${className}`] : [], + ]; + }) + ); + }); - return result; - }); -} - -module.exports = function() { - return generator; + return result; + }); + } }; diff --git a/tests/config.js b/tests/config.js deleted file mode 100644 index f7060a9..0000000 --- a/tests/config.js +++ /dev/null @@ -1,7 +0,0 @@ -const defaultConfig = require('tailwindcss/defaultConfig'); -const plugin = require('../src/index'); - -module.exports = { - ...defaultConfig, - plugins: [plugin()], -}; diff --git a/tests/variantGenerator.test.js b/tests/variantGenerator.test.js index 5654fef..4a62234 100644 --- a/tests/variantGenerator.test.js +++ b/tests/variantGenerator.test.js @@ -1,6 +1,7 @@ const postcss = require('postcss'); const tailwindcss = require('tailwindcss'); -const config = require('./config'); +const defaultConfig = require('tailwindcss/defaultConfig'); +const plugin = require('../src/index'); test('it generates direction variants', () => { const input = ` @@ -40,10 +41,58 @@ test('it generates direction variants', () => { } `; - return postcss([tailwindcss(config)]) + return postcss([tailwindcss({ ...defaultConfig, plugins: [plugin()] })]) .process(input, { from: undefined }) .then(result => { expect(result.css).toMatchCss(output); expect(result.warnings().length).toBe(0); }); }); + +test('it generates direction variants without same level', () => { + const input = ` + @variants direction { + .banana { color: yellow; } + .tomato { color: red; } + } + `; + + const output = ` + .banana { + color: yellow; + } + + .tomato { + color: red; + } + + [dir='ltr'] .ltr\\:banana { + color: yellow; + } + + [dir='ltr'] .ltr\\:tomato { + color: red; + } + + [dir='rtl'] .rtl\\:banana { + color: yellow; + } + + [dir='rtl'] .rtl\\:tomato { + color: red; + } + `; + + return postcss([tailwindcss({ + ...defaultConfig, + plugins: [ + plugin({ + sameLevel: false + }) + ] + })]).process(input, { from: undefined }) + .then(result => { + expect(result.css).toMatchCss(output); + expect(result.warnings().length).toBe(0); + }); +}); From 2e50325b09e6c3dae5929bc7e7fe456629392a9a Mon Sep 17 00:00:00 2001 From: Kevin Batdorf Date: Thu, 12 Dec 2019 23:44:12 +0700 Subject: [PATCH 2/6] convert spaces to tabs --- src/index.js | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/index.js b/src/index.js index 2c185d4..005bed7 100644 --- a/src/index.js +++ b/src/index.js @@ -11,21 +11,21 @@ function addSelectors(container, modifierFunction) { module.exports = function({ sameLevel = true } = {}) { return function({ addVariant, e }) { - addVariant('direction', ({ container, separator }) => { - const result = container.clone({ nodes: [] }); + addVariant('direction', ({ container, separator }) => { + const result = container.clone({ nodes: [] }); - ['ltr', 'rtl'].forEach(dir => { - result.nodes = result.nodes.concat( - addSelectors(container, className => { - return [ - `[dir='${dir}'] .${dir}${e(separator)}${className}`, - ... sameLevel ? [`[dir='${dir}'].${dir}${e(separator)}${className}`] : [], - ]; - }) - ); - }); + ['ltr', 'rtl'].forEach(dir => { + result.nodes = result.nodes.concat( + addSelectors(container, className => { + return [ + `[dir='${dir}'] .${dir}${e(separator)}${className}`, + ... sameLevel ? [`[dir='${dir}'].${dir}${e(separator)}${className}`] : [], + ]; + }) + ); + }); - return result; - }); + return result; + }); } }; From abb2823ebab413d1bea1655eb8b1f75f09551bea Mon Sep 17 00:00:00 2001 From: Kevin Batdorf Date: Thu, 12 Dec 2019 23:46:01 +0700 Subject: [PATCH 3/6] convert spaces to tabs --- src/index.js | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/index.js b/src/index.js index 005bed7..6acac0f 100644 --- a/src/index.js +++ b/src/index.js @@ -12,20 +12,20 @@ function addSelectors(container, modifierFunction) { module.exports = function({ sameLevel = true } = {}) { return function({ addVariant, e }) { addVariant('direction', ({ container, separator }) => { - const result = container.clone({ nodes: [] }); + const result = container.clone({ nodes: [] }); - ['ltr', 'rtl'].forEach(dir => { - result.nodes = result.nodes.concat( - addSelectors(container, className => { - return [ - `[dir='${dir}'] .${dir}${e(separator)}${className}`, - ... sameLevel ? [`[dir='${dir}'].${dir}${e(separator)}${className}`] : [], - ]; - }) - ); - }); + ['ltr', 'rtl'].forEach(dir => { + result.nodes = result.nodes.concat( + addSelectors(container, className => { + return [ + `[dir='${dir}'] .${dir}${e(separator)}${className}`, + ... sameLevel ? [`[dir='${dir}'].${dir}${e(separator)}${className}`] : [], + ]; + }) + ); + }); - return result; + return result; }); } }; From 3d29f32a42e6136c1a04aedb56101f8e0cdeedac Mon Sep 17 00:00:00 2001 From: Kevin Batdorf Date: Fri, 13 Dec 2019 00:08:52 +0700 Subject: [PATCH 4/6] convert spaces to tabs --- src/index.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/index.js b/src/index.js index 6acac0f..e3d5127 100644 --- a/src/index.js +++ b/src/index.js @@ -16,12 +16,12 @@ module.exports = function({ sameLevel = true } = {}) { ['ltr', 'rtl'].forEach(dir => { result.nodes = result.nodes.concat( - addSelectors(container, className => { - return [ - `[dir='${dir}'] .${dir}${e(separator)}${className}`, - ... sameLevel ? [`[dir='${dir}'].${dir}${e(separator)}${className}`] : [], - ]; - }) + addSelectors(container, className => { + return [ + `[dir='${dir}'] .${dir}${e(separator)}${className}`, + ... sameLevel ? [`[dir='${dir}'].${dir}${e(separator)}${className}`] : [], + ]; + }) ); }); From 70dd04c97b34e5676fba5b4a1c48013c178eee47 Mon Sep 17 00:00:00 2001 From: Kevin Batdorf Date: Fri, 13 Dec 2019 00:10:32 +0700 Subject: [PATCH 5/6] convert spaces to tabs --- src/index.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/index.js b/src/index.js index e3d5127..0afce39 100644 --- a/src/index.js +++ b/src/index.js @@ -18,14 +18,14 @@ module.exports = function({ sameLevel = true } = {}) { result.nodes = result.nodes.concat( addSelectors(container, className => { return [ - `[dir='${dir}'] .${dir}${e(separator)}${className}`, - ... sameLevel ? [`[dir='${dir}'].${dir}${e(separator)}${className}`] : [], + `[dir='${dir}'] .${dir}${e(separator)}${className}`, + ... sameLevel ? [`[dir='${dir}'].${dir}${e(separator)}${className}`] : [], ]; }) ); }); - return result; + return result; }); } }; From 30ffbc767e41c5de0ac3ee260aaabef5b7e2ab81 Mon Sep 17 00:00:00 2001 From: Kevin Batdorf Date: Fri, 13 Dec 2019 00:11:58 +0700 Subject: [PATCH 6/6] convert spaces to tabs --- src/index.js | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/index.js b/src/index.js index 0afce39..59c43c1 100644 --- a/src/index.js +++ b/src/index.js @@ -10,22 +10,22 @@ function addSelectors(container, modifierFunction) { } module.exports = function({ sameLevel = true } = {}) { - return function({ addVariant, e }) { - addVariant('direction', ({ container, separator }) => { - const result = container.clone({ nodes: [] }); + return function({ addVariant, e }) { + addVariant('direction', ({ container, separator }) => { + const result = container.clone({ nodes: [] }); - ['ltr', 'rtl'].forEach(dir => { - result.nodes = result.nodes.concat( - addSelectors(container, className => { - return [ - `[dir='${dir}'] .${dir}${e(separator)}${className}`, - ... sameLevel ? [`[dir='${dir}'].${dir}${e(separator)}${className}`] : [], - ]; - }) - ); - }); + ['ltr', 'rtl'].forEach(dir => { + result.nodes = result.nodes.concat( + addSelectors(container, className => { + return [ + `[dir='${dir}'] .${dir}${e(separator)}${className}`, + ... sameLevel ? [`[dir='${dir}'].${dir}${e(separator)}${className}`] : [], + ]; + }) + ); + }); - return result; - }); - } + return result; + }); + } };