Skip to content

Commit

Permalink
fix: incorrect handling of non-mutated class names (#448)
Browse files Browse the repository at this point in the history
  • Loading branch information
joscha authored and bebraw committed Mar 10, 2017
1 parent 9504ea5 commit 0eedd9f
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 19 deletions.
37 changes: 24 additions & 13 deletions lib/compile-exports.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,21 +17,32 @@ module.exports = function compileExports(result, importItemMatcher, camelCaseKey
function addEntry(k) {
res.push("\t" + JSON.stringify(k) + ": " + valueAsString);
}
if (camelCaseKeys !== 'only' && camelCaseKeys !== 'dashesOnly') {
addEntry(key);
}

var targetKey;
if (camelCaseKeys === true || camelCaseKeys === 'only') {
targetKey = camelCase(key);
if (targetKey !== key) {
addEntry(targetKey);
}
} else if (camelCaseKeys === 'dashes' || camelCaseKeys === 'dashesOnly') {
targetKey = dashesCamelCase(key);
if (targetKey !== key) {
addEntry(targetKey);
}
switch(camelCaseKeys) {
case true:
addEntry(key);
targetKey = camelCase(key);
if (targetKey !== key) {
addEntry(targetKey);
}
break;
case 'dashes':
addEntry(key);
targetKey = dashesCamelCase(key);
if (targetKey !== key) {
addEntry(targetKey);
}
break;
case 'only':
addEntry(camelCase(key));
break;
case 'dashesOnly':
addEntry(dashesCamelCase(key));
break;
default:
addEntry(key);
break;
}
return res;
}, []).join(",\n");
Expand Down
13 changes: 7 additions & 6 deletions test/camelCaseTest.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ var testRaw = require("./helpers").testRaw;

describe("camelCase", function() {
var css = ".btn-info_is-disabled { color: blue; }";
var mixedCss = ".btn-info_is-disabled { color: blue; } .simple { color: red; }";
var exports = {
with: [
[1, "._1L-rnCOXCE_7H94L5XT4uB { color: blue; }", ""]
Expand All @@ -16,24 +17,24 @@ describe("camelCase", function() {
[1, "._1L-rnCOXCE_7H94L5XT4uB { color: blue; }", ""]
],
withoutOnly: [
[1, "._1L-rnCOXCE_7H94L5XT4uB { color: blue; }", ""]
[1, "._1L-rnCOXCE_7H94L5XT4uB { color: blue; } .KKtodWG-IuEaequFjAsoJ { color: red; }", ""]
],
dashesOnly: [
[1, "._1L-rnCOXCE_7H94L5XT4uB { color: blue; }", ""]
[1, "._1L-rnCOXCE_7H94L5XT4uB { color: blue; } .KKtodWG-IuEaequFjAsoJ { color: red; }", ""]
]
};
exports.with.locals = {'btn-info_is-disabled': '_1L-rnCOXCE_7H94L5XT4uB'};
exports.without.locals = {btnInfoIsDisabled: '_1L-rnCOXCE_7H94L5XT4uB', 'btn-info_is-disabled': '_1L-rnCOXCE_7H94L5XT4uB'};
exports.dashes.locals = {btnInfo_isDisabled: '_1L-rnCOXCE_7H94L5XT4uB', 'btn-info_is-disabled': '_1L-rnCOXCE_7H94L5XT4uB'};
exports.withoutOnly.locals = {btnInfoIsDisabled: '_1L-rnCOXCE_7H94L5XT4uB'};
exports.dashesOnly.locals = {btnInfo_isDisabled: '_1L-rnCOXCE_7H94L5XT4uB'};
exports.withoutOnly.locals = {btnInfoIsDisabled: '_1L-rnCOXCE_7H94L5XT4uB', simple: 'KKtodWG-IuEaequFjAsoJ'};
exports.dashesOnly.locals = {btnInfo_isDisabled: '_1L-rnCOXCE_7H94L5XT4uB', simple: 'KKtodWG-IuEaequFjAsoJ'};
test("with", css, exports.with, "?modules");
test("without", css, exports.without, "?modules&camelCase");
test("dashes", css, exports.dashes, "?modules&camelCase=dashes");
// Remove this option in v1.0.0 and make the removal of the original classname the default behaviour. See #440.
test("withoutOnly", css, exports.withoutOnly, "?modules&camelCase=only");
test("withoutOnly", mixedCss, exports.withoutOnly, "?modules&camelCase=only");
// Remove this option in v1.0.0 and make the removal of the original classname the default behaviour. See #440.
test("dashesOnly", css, exports.dashesOnly, "?modules&camelCase=dashesOnly");
test("dashesOnly", mixedCss, exports.dashesOnly, "?modules&camelCase=dashesOnly");

testRaw("withoutRaw", '.a {}', 'exports.locals = {\n\t"a": "_1buUQJccBRS2-2i27LCoDf"\n};', "?modules&camelCase");
testRaw("dashesRaw", '.a {}', 'exports.locals = {\n\t"a": "_1buUQJccBRS2-2i27LCoDf"\n};', "?modules&camelCase=dashes");
Expand Down

0 comments on commit 0eedd9f

Please sign in to comment.