postcss-normalize-string 4.0.0-rc.2 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/index.js +44 -53
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -50,7 +50,7 @@ console.log(postcss(normalize({preferredQuote: 'single'})).process(css).css);
|
|
|
50
50
|
|
|
51
51
|
## Contributors
|
|
52
52
|
|
|
53
|
-
See [CONTRIBUTORS.md](https://github.com/
|
|
53
|
+
See [CONTRIBUTORS.md](https://github.com/cssnano/cssnano/blob/master/CONTRIBUTORS.md).
|
|
54
54
|
|
|
55
55
|
## License
|
|
56
56
|
|
package/dist/index.js
CHANGED
|
@@ -18,57 +18,53 @@ var _has2 = _interopRequireDefault(_has);
|
|
|
18
18
|
|
|
19
19
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
20
20
|
|
|
21
|
-
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
|
|
22
|
-
|
|
23
21
|
/*
|
|
24
22
|
* Constants (parser usage)
|
|
25
23
|
*/
|
|
26
24
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
25
|
+
const SINGLE_QUOTE = '\''.charCodeAt(0);
|
|
26
|
+
const DOUBLE_QUOTE = '"'.charCodeAt(0);
|
|
27
|
+
const BACKSLASH = '\\'.charCodeAt(0);
|
|
28
|
+
const NEWLINE = '\n'.charCodeAt(0);
|
|
29
|
+
const SPACE = ' '.charCodeAt(0);
|
|
30
|
+
const FEED = '\f'.charCodeAt(0);
|
|
31
|
+
const TAB = '\t'.charCodeAt(0);
|
|
32
|
+
const CR = '\r'.charCodeAt(0);
|
|
35
33
|
|
|
36
|
-
|
|
34
|
+
const WORD_END = /[ \n\t\r\f'"\\]/g;
|
|
37
35
|
|
|
38
36
|
/*
|
|
39
37
|
* Constants (node type strings)
|
|
40
38
|
*/
|
|
41
39
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
40
|
+
const C_STRING = 'string';
|
|
41
|
+
const C_ESCAPED_SINGLE_QUOTE = 'escapedSingleQuote';
|
|
42
|
+
const C_ESCAPED_DOUBLE_QUOTE = 'escapedDoubleQuote';
|
|
43
|
+
const C_SINGLE_QUOTE = 'singleQuote';
|
|
44
|
+
const C_DOUBLE_QUOTE = 'doubleQuote';
|
|
45
|
+
const C_NEWLINE = 'newline';
|
|
46
|
+
const C_SINGLE = 'single';
|
|
49
47
|
|
|
50
48
|
/*
|
|
51
49
|
* Literals
|
|
52
50
|
*/
|
|
53
51
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
52
|
+
const L_SINGLE_QUOTE = `'`;
|
|
53
|
+
const L_DOUBLE_QUOTE = `"`;
|
|
54
|
+
const L_NEWLINE = `\\\n`;
|
|
57
55
|
|
|
58
56
|
/*
|
|
59
57
|
* Parser nodes
|
|
60
58
|
*/
|
|
61
59
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
60
|
+
const T_ESCAPED_SINGLE_QUOTE = { type: C_ESCAPED_SINGLE_QUOTE, value: `\\'` };
|
|
61
|
+
const T_ESCAPED_DOUBLE_QUOTE = { type: C_ESCAPED_DOUBLE_QUOTE, value: `\\"` };
|
|
62
|
+
const T_SINGLE_QUOTE = { type: C_SINGLE_QUOTE, value: L_SINGLE_QUOTE };
|
|
63
|
+
const T_DOUBLE_QUOTE = { type: C_DOUBLE_QUOTE, value: L_DOUBLE_QUOTE };
|
|
64
|
+
const T_NEWLINE = { type: C_NEWLINE, value: L_NEWLINE };
|
|
67
65
|
|
|
68
66
|
function stringify(ast) {
|
|
69
|
-
return ast.nodes.reduce(
|
|
70
|
-
var value = _ref.value;
|
|
71
|
-
|
|
67
|
+
return ast.nodes.reduce((str, { value }) => {
|
|
72
68
|
// Collapse multiple line strings automatically
|
|
73
69
|
if (value === L_NEWLINE) {
|
|
74
70
|
return str;
|
|
@@ -78,13 +74,11 @@ function stringify(ast) {
|
|
|
78
74
|
}
|
|
79
75
|
|
|
80
76
|
function parse(str) {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
var pos = 0;
|
|
85
|
-
var len = str.length;
|
|
77
|
+
let code, next, value;
|
|
78
|
+
let pos = 0;
|
|
79
|
+
let len = str.length;
|
|
86
80
|
|
|
87
|
-
|
|
81
|
+
const ast = {
|
|
88
82
|
nodes: [],
|
|
89
83
|
types: {
|
|
90
84
|
escapedSingleQuote: 0,
|
|
@@ -173,8 +167,7 @@ function parse(str) {
|
|
|
173
167
|
}
|
|
174
168
|
|
|
175
169
|
function changeWrappingQuotes(node, ast) {
|
|
176
|
-
|
|
177
|
-
|
|
170
|
+
const { types } = ast;
|
|
178
171
|
if (types[C_SINGLE_QUOTE] || types[C_DOUBLE_QUOTE]) {
|
|
179
172
|
return;
|
|
180
173
|
}
|
|
@@ -187,14 +180,14 @@ function changeWrappingQuotes(node, ast) {
|
|
|
187
180
|
node.quote = L_SINGLE_QUOTE;
|
|
188
181
|
}
|
|
189
182
|
|
|
190
|
-
ast.nodes = ast.nodes.reduce(
|
|
183
|
+
ast.nodes = ast.nodes.reduce((newAst, child) => {
|
|
191
184
|
if (child.type === C_ESCAPED_DOUBLE_QUOTE && node.quote === L_SINGLE_QUOTE) {
|
|
192
|
-
return [
|
|
185
|
+
return [...newAst, T_DOUBLE_QUOTE];
|
|
193
186
|
}
|
|
194
187
|
if (child.type === C_ESCAPED_SINGLE_QUOTE && node.quote === L_DOUBLE_QUOTE) {
|
|
195
|
-
return [
|
|
188
|
+
return [...newAst, T_SINGLE_QUOTE];
|
|
196
189
|
}
|
|
197
|
-
return [
|
|
190
|
+
return [...newAst, child];
|
|
198
191
|
}, []);
|
|
199
192
|
}
|
|
200
193
|
|
|
@@ -202,11 +195,11 @@ function normalize(value, preferredQuote) {
|
|
|
202
195
|
if (!value || !value.length) {
|
|
203
196
|
return value;
|
|
204
197
|
}
|
|
205
|
-
return (0, _postcssValueParser2.default)(value).walk(
|
|
198
|
+
return (0, _postcssValueParser2.default)(value).walk(child => {
|
|
206
199
|
if (child.type !== C_STRING) {
|
|
207
200
|
return;
|
|
208
201
|
}
|
|
209
|
-
|
|
202
|
+
const ast = parse(child.value);
|
|
210
203
|
if (ast.quotes) {
|
|
211
204
|
changeWrappingQuotes(child, ast);
|
|
212
205
|
} else if (preferredQuote === C_SINGLE) {
|
|
@@ -218,24 +211,22 @@ function normalize(value, preferredQuote) {
|
|
|
218
211
|
}).toString();
|
|
219
212
|
}
|
|
220
213
|
|
|
221
|
-
|
|
214
|
+
const params = {
|
|
222
215
|
rule: 'selector',
|
|
223
216
|
decl: 'value',
|
|
224
217
|
atrule: 'params'
|
|
225
218
|
};
|
|
226
219
|
|
|
227
|
-
exports.default = _postcss2.default.plugin('postcss-normalize-string',
|
|
228
|
-
|
|
220
|
+
exports.default = _postcss2.default.plugin('postcss-normalize-string', opts => {
|
|
221
|
+
const { preferredQuote } = Object.assign({}, {
|
|
229
222
|
preferredQuote: 'double'
|
|
230
|
-
}, opts)
|
|
231
|
-
preferredQuote = _Object$assign.preferredQuote;
|
|
232
|
-
|
|
233
|
-
return function (css) {
|
|
234
|
-
css.walk(function (node) {
|
|
235
|
-
var type = node.type;
|
|
223
|
+
}, opts);
|
|
236
224
|
|
|
225
|
+
return css => {
|
|
226
|
+
css.walk(node => {
|
|
227
|
+
const { type } = node;
|
|
237
228
|
if ((0, _has2.default)(params, type)) {
|
|
238
|
-
|
|
229
|
+
const param = params[type];
|
|
239
230
|
node[param] = normalize(node[param], preferredQuote);
|
|
240
231
|
}
|
|
241
232
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "postcss-normalize-string",
|
|
3
|
-
"version": "4.0.0
|
|
3
|
+
"version": "4.0.0",
|
|
4
4
|
"description": "Normalize wrapping quotes for CSS string literals.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"files": [
|
|
@@ -18,24 +18,24 @@
|
|
|
18
18
|
"license": "MIT",
|
|
19
19
|
"devDependencies": {
|
|
20
20
|
"babel-cli": "^6.0.0",
|
|
21
|
-
"cross-env": "^
|
|
21
|
+
"cross-env": "^5.0.0"
|
|
22
22
|
},
|
|
23
|
-
"homepage": "https://github.com/
|
|
23
|
+
"homepage": "https://github.com/cssnano/cssnano",
|
|
24
24
|
"author": {
|
|
25
25
|
"name": "Ben Briggs",
|
|
26
26
|
"email": "beneb.info@gmail.com",
|
|
27
27
|
"url": "http://beneb.info"
|
|
28
28
|
},
|
|
29
|
-
"repository": "
|
|
29
|
+
"repository": "cssnano/cssnano",
|
|
30
30
|
"dependencies": {
|
|
31
31
|
"has": "^1.0.0",
|
|
32
32
|
"postcss": "^6.0.0",
|
|
33
33
|
"postcss-value-parser": "^3.0.0"
|
|
34
34
|
},
|
|
35
35
|
"bugs": {
|
|
36
|
-
"url": "https://github.com/
|
|
36
|
+
"url": "https://github.com/cssnano/cssnano/issues"
|
|
37
37
|
},
|
|
38
38
|
"engines": {
|
|
39
|
-
"node": ">=
|
|
39
|
+
"node": ">=6.9.0"
|
|
40
40
|
}
|
|
41
41
|
}
|