From 05089ab3495997b8563f7896f8428ef7204c360d Mon Sep 17 00:00:00 2001 From: Taz Jackson Date: Sat, 21 May 2016 23:38:21 +0900 Subject: [PATCH 1/2] Introduce option adding camelize keys to token --- lib/index.js | 7 +++++++ lib/validate.js | 1 + test/api/camelCase.js | 20 ++++++++++++++++++++ test/api/fixture/bem.css | 3 +++ 4 files changed, 31 insertions(+) create mode 100644 test/api/camelCase.js create mode 100644 test/api/fixture/bem.css diff --git a/lib/index.js b/lib/index.js index abd894d..e32e9fe 100644 --- a/lib/index.js +++ b/lib/index.js @@ -5,6 +5,7 @@ const genericNames = require('generic-names'); const globToRegex = require('glob-to-regexp'); const identity = require('lodash').identity; const negate = require('lodash').negate; +const camelCaseFunc = require('lodash').camelCase; const readFileSync = require('fs').readFileSync; const relative = require('path').relative; const resolve = require('path').resolve; @@ -27,6 +28,7 @@ module.exports = function setupHook({ preprocessCss = identity, processCss, processorOpts, + camelCase, append = [], prepend = [], createImportedName, @@ -103,6 +105,11 @@ module.exports = function setupHook({ tokens = lazyResult.root.tokens; + if (camelCase) { + tokens = Object.assign({}, tokens, + ...Object.keys(tokens).map(key => ({ [camelCaseFunc(key)]: tokens[key] }))) + } + if (!debugMode) { // updating cache tokensByFile[filename] = tokens; diff --git a/lib/validate.js b/lib/validate.js index 9ddc925..01c0cc1 100644 --- a/lib/validate.js +++ b/lib/validate.js @@ -10,6 +10,7 @@ const rules = { preprocessCss: 'function', processCss: 'function', processorOpts: 'object', + camelCase: 'boolean', // plugins append: 'array', prepend: 'array', diff --git a/test/api/camelCase.js b/test/api/camelCase.js new file mode 100644 index 0000000..290aafd --- /dev/null +++ b/test/api/camelCase.js @@ -0,0 +1,20 @@ +const detachHook = require('../sugar').detachHook; +const dropCache = require('../sugar').dropCache; +const identity = require('lodash').lodash; + +suite('api/camelCase', () => { + test('should add camel case keys in token', () => { + const tokens = require('./fixture/bem.css'); + assert.deepEqual(tokens, { + blockElementModifier: '_test_api_fixture_bem__block__element--modifier', + 'block__element--modifier': '_test_api_fixture_bem__block__element--modifier', + }); + }); + + setup(() => hook({ camelCase: true })); + + teardown(() => { + detachHook('.css'); + dropCache('./api/fixture/bem.css'); + }); +}); diff --git a/test/api/fixture/bem.css b/test/api/fixture/bem.css new file mode 100644 index 0000000..4b89dd9 --- /dev/null +++ b/test/api/fixture/bem.css @@ -0,0 +1,3 @@ +.block__element--modifier { + background: #1e2a35; +} From 34a7f793771c637f975b4326d3038181c778c5d1 Mon Sep 17 00:00:00 2001 From: Taz Jackson Date: Sun, 22 May 2016 01:12:16 +0900 Subject: [PATCH 2/2] Remove redundant require --- test/api/camelCase.js | 1 - 1 file changed, 1 deletion(-) diff --git a/test/api/camelCase.js b/test/api/camelCase.js index 290aafd..98e5e16 100644 --- a/test/api/camelCase.js +++ b/test/api/camelCase.js @@ -1,6 +1,5 @@ const detachHook = require('../sugar').detachHook; const dropCache = require('../sugar').dropCache; -const identity = require('lodash').lodash; suite('api/camelCase', () => { test('should add camel case keys in token', () => {