Skip to content

Commit 19f019d

Browse files
committed
3.3.2 fix in brakets .class bug
1 parent 9052943 commit 19f019d

10 files changed

+57
-32
lines changed

.commithash

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
c12ea91e0c1d4407ab1ff5ba628f3922147fadc6
1+
90529430922b4b3bbb27c70264157f1fae71eb62

dist/cssobj-plugin-localize.amd.js

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,19 @@ function isString(value) {
1616
}
1717

1818
// split selector with splitter, aware of css attributes
19-
function splitSelector (sel, splitter) {
19+
function splitSelector (sel, splitter, inBracket) {
2020
if (sel.indexOf(splitter) < 0) return [sel]
2121
for (var c, i = 0, n = 0, instr = '', prev = 0, d = []; c = sel.charAt(i); i++) {
2222
if (instr) {
23-
if (c == instr) instr = '';
23+
if (c == instr && sel.charAt(i-1)!='\\') instr = '';
2424
continue
2525
}
2626
if (c == '"' || c == '\'') instr = c;
27-
if (c == '(' || c == '[') n++;
28-
if (c == ')' || c == ']') n--;
27+
/* istanbul ignore if */
28+
if(!inBracket){
29+
if (c == '(' || c == '[') n++;
30+
if (c == ')' || c == ']') n--;
31+
}
2932
if (!n && c == splitter) d.push(sel.substring(prev, i)), prev = i + 1;
3033
}
3134
return d.concat(sel.substring(prev))
@@ -55,7 +58,7 @@ function cssobj_plugin_selector_localize(option) {
5558

5659
var parseSel = function(str) {
5760
if(!isString(str)) return str
58-
var part = splitSelector(str, '.');
61+
var part = splitSelector(str, '.', true);
5962
var sel=part[0];
6063
for(var i = 1, p, pos, len = part.length; i < len; i++) {
6164
p = part[i];

dist/cssobj-plugin-localize.cjs.js

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,19 @@ function isString(value) {
1616
}
1717

1818
// split selector with splitter, aware of css attributes
19-
function splitSelector (sel, splitter) {
19+
function splitSelector (sel, splitter, inBracket) {
2020
if (sel.indexOf(splitter) < 0) return [sel]
2121
for (var c, i = 0, n = 0, instr = '', prev = 0, d = []; c = sel.charAt(i); i++) {
2222
if (instr) {
23-
if (c == instr) instr = '';
23+
if (c == instr && sel.charAt(i-1)!='\\') instr = '';
2424
continue
2525
}
2626
if (c == '"' || c == '\'') instr = c;
27-
if (c == '(' || c == '[') n++;
28-
if (c == ')' || c == ']') n--;
27+
/* istanbul ignore if */
28+
if(!inBracket){
29+
if (c == '(' || c == '[') n++;
30+
if (c == ')' || c == ']') n--;
31+
}
2932
if (!n && c == splitter) d.push(sel.substring(prev, i)), prev = i + 1;
3033
}
3134
return d.concat(sel.substring(prev))
@@ -55,7 +58,7 @@ function cssobj_plugin_selector_localize(option) {
5558

5659
var parseSel = function(str) {
5760
if(!isString(str)) return str
58-
var part = splitSelector(str, '.');
61+
var part = splitSelector(str, '.', true);
5962
var sel=part[0];
6063
for(var i = 1, p, pos, len = part.length; i < len; i++) {
6164
p = part[i];

dist/cssobj-plugin-localize.es.js

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,19 @@ function isString(value) {
1414
}
1515

1616
// split selector with splitter, aware of css attributes
17-
function splitSelector (sel, splitter) {
17+
function splitSelector (sel, splitter, inBracket) {
1818
if (sel.indexOf(splitter) < 0) return [sel]
1919
for (var c, i = 0, n = 0, instr = '', prev = 0, d = []; c = sel.charAt(i); i++) {
2020
if (instr) {
21-
if (c == instr) instr = '';
21+
if (c == instr && sel.charAt(i-1)!='\\') instr = '';
2222
continue
2323
}
2424
if (c == '"' || c == '\'') instr = c;
25-
if (c == '(' || c == '[') n++;
26-
if (c == ')' || c == ']') n--;
25+
/* istanbul ignore if */
26+
if(!inBracket){
27+
if (c == '(' || c == '[') n++;
28+
if (c == ')' || c == ']') n--;
29+
}
2730
if (!n && c == splitter) d.push(sel.substring(prev, i)), prev = i + 1;
2831
}
2932
return d.concat(sel.substring(prev))
@@ -53,7 +56,7 @@ function cssobj_plugin_selector_localize(option) {
5356

5457
var parseSel = function(str) {
5558
if(!isString(str)) return str
56-
var part = splitSelector(str, '.');
59+
var part = splitSelector(str, '.', true);
5760
var sel=part[0];
5861
for(var i = 1, p, pos, len = part.length; i < len; i++) {
5962
p = part[i];

dist/cssobj-plugin-localize.iife.js

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,19 @@ function isString(value) {
1717
}
1818

1919
// split selector with splitter, aware of css attributes
20-
function splitSelector (sel, splitter) {
20+
function splitSelector (sel, splitter, inBracket) {
2121
if (sel.indexOf(splitter) < 0) return [sel]
2222
for (var c, i = 0, n = 0, instr = '', prev = 0, d = []; c = sel.charAt(i); i++) {
2323
if (instr) {
24-
if (c == instr) instr = '';
24+
if (c == instr && sel.charAt(i-1)!='\\') instr = '';
2525
continue
2626
}
2727
if (c == '"' || c == '\'') instr = c;
28-
if (c == '(' || c == '[') n++;
29-
if (c == ')' || c == ']') n--;
28+
/* istanbul ignore if */
29+
if(!inBracket){
30+
if (c == '(' || c == '[') n++;
31+
if (c == ')' || c == ']') n--;
32+
}
3033
if (!n && c == splitter) d.push(sel.substring(prev, i)), prev = i + 1;
3134
}
3235
return d.concat(sel.substring(prev))
@@ -56,7 +59,7 @@ function cssobj_plugin_selector_localize(option) {
5659

5760
var parseSel = function(str) {
5861
if(!isString(str)) return str
59-
var part = splitSelector(str, '.');
62+
var part = splitSelector(str, '.', true);
6063
var sel=part[0];
6164
for(var i = 1, p, pos, len = part.length; i < len; i++) {
6265
p = part[i];

dist/cssobj-plugin-localize.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/cssobj-plugin-localize.umd.js

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,19 @@ function isString(value) {
2020
}
2121

2222
// split selector with splitter, aware of css attributes
23-
function splitSelector (sel, splitter) {
23+
function splitSelector (sel, splitter, inBracket) {
2424
if (sel.indexOf(splitter) < 0) return [sel]
2525
for (var c, i = 0, n = 0, instr = '', prev = 0, d = []; c = sel.charAt(i); i++) {
2626
if (instr) {
27-
if (c == instr) instr = '';
27+
if (c == instr && sel.charAt(i-1)!='\\') instr = '';
2828
continue
2929
}
3030
if (c == '"' || c == '\'') instr = c;
31-
if (c == '(' || c == '[') n++;
32-
if (c == ')' || c == ']') n--;
31+
/* istanbul ignore if */
32+
if(!inBracket){
33+
if (c == '(' || c == '[') n++;
34+
if (c == ')' || c == ']') n--;
35+
}
3336
if (!n && c == splitter) d.push(sel.substring(prev, i)), prev = i + 1;
3437
}
3538
return d.concat(sel.substring(prev))
@@ -59,7 +62,7 @@ function cssobj_plugin_selector_localize(option) {
5962

6063
var parseSel = function(str) {
6164
if(!isString(str)) return str
62-
var part = splitSelector(str, '.');
65+
var part = splitSelector(str, '.', true);
6366
var sel=part[0];
6467
for(var i = 1, p, pos, len = part.length; i < len; i++) {
6568
p = part[i];

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "cssobj-plugin-localize",
3-
"version": "3.3.1",
3+
"version": "3.3.2",
44
"description": "Localize class name for cssobj",
55
"main": "dist/cssobj-plugin-localize.cjs.js",
66
"browser": "dist/cssobj-plugin-localize.umd.js",

src/cssobj-plugin-localize.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export default function cssobj_plugin_selector_localize(option) {
2424

2525
var parseSel = function(str) {
2626
if(!isString(str)) return str
27-
var part = splitSelector(str, '.')
27+
var part = splitSelector(str, '.', true)
2828
var sel=part[0]
2929
for(var i = 1, p, pos, len = part.length; i < len; i++) {
3030
p = part[i]

test/test.js

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ describe('Test plugin selector localize', function() {
6565
expect(ret).match(/body .nav_space_ .item_space_/)
6666

6767
expect(result.mapSel('.nav')).equal('.nav_space_')
68-
expect(result.mapSel('.nav a[href=abc.html]')).equal('.nav_space_ a[href=abc.html]')
68+
expect(result.mapSel('.nav a[href="abc.html"]')).equal('.nav_space_ a[href="abc.html"]')
6969

7070
expect(result.mapSel('.item')).equal('.item_space_')
7171

@@ -124,7 +124,7 @@ describe('Test plugin selector localize', function() {
124124

125125
/* since 2.1.0 below will not supported */
126126
// expect(ret).equal('@support (prefix=(._space_abc)), [xyz=._space_abc], url=(._space_abc)')
127-
expect(ret).equal('@support (prefix=(.abc)), [xyz=.abc], url=(.abc)')
127+
expect(ret).equal('@support (prefix=(.abc_space_)), [xyz=.abc_space_], url=(.abc_space_)')
128128

129129
})
130130

@@ -156,7 +156,7 @@ describe('Test plugin selector localize', function() {
156156
var ret = loc('.nav a[title=".sdf].abc .!def"]', {}, result)
157157
expect(ret).equal('.nav_space_ a[title=".sdf].abc .!def"]')
158158

159-
expect(result.mapSel('.item[.!xyz.abc.def]')).equal('.item_space_[.!xyz.abc.def]')
159+
expect(result.mapSel('.item[.!xyz.abc.def]')).equal('.item_space_[.xyz.abc_space_.def_space_]')
160160
})
161161

162162
it('should work right with ! symbol and localNames', function() {
@@ -219,4 +219,14 @@ describe('Test plugin selector localize', function() {
219219

220220
})
221221

222+
223+
it('should mapClass within ()', ()=>{
224+
var loc = lib({space:'_space_'}).selector
225+
var result = {}
226+
227+
var ret = loc(`.a:not(.b,.c),div[x=".a,a\\"b,.b"],p`, {}, result)
228+
expect(ret).equal('.a_space_:not(.b_space_,.c_space_),div[x=".a,a\\"b,.b"],p')
229+
230+
})
231+
222232
})

0 commit comments

Comments
 (0)