@prettier/plugin-pug
Advanced tools
Comparing version 1.0.10 to 1.0.11
# Next | ||
[diff](https://github.com/prettier/plugin-pug/compare/1.0.10...master) | ||
[diff](https://github.com/prettier/plugin-pug/compare/1.0.11...master) | ||
# 1.0.11 | ||
[diff](https://github.com/prettier/plugin-pug/compare/1.0.10...1.0.11) | ||
- Handle `yield` token ([94fdc0c]) | ||
- Handle `slash` token ([194f103]) | ||
- Dont format `code` if formatter produces error ([e105bae]) | ||
- Dont format `code` is multiline ([49b4b4c]) | ||
- Fix code slicing ([8478562]) | ||
- Fix whitespace issues ([b7d26c7]) | ||
- Fix whitespace after `interpolation` and `call` ([7670ade]) | ||
- Fix whitespace after `filter` token ([4ac7812]) | ||
- Fix missing `key` for `each` token ([aff4969]) | ||
- Fix whitespace before `start-pug-interpolation`token ([09e96a3]) | ||
- Fix escaping of non-interpolated `text` ([e5c3944]) | ||
- Fix only text body ([c32a8d1]) | ||
- Fix indent after newline for `interpolated-code` token ([bfb90c6]) | ||
- Fix partial quoted surrounded `attribute` token ([20be986]) | ||
[94fdc0c]: https://github.com/prettier/plugin-pug/commit/94fdc0cd708ad011ee609908d1a3cfe53c796688 | ||
[194f103]: https://github.com/prettier/plugin-pug/commit/194f1036b0406a4844f921d122769b91d4d2f899 | ||
[e105bae]: https://github.com/prettier/plugin-pug/commit/e105bae5707fda5978317ba461c978f9b0be48d1 | ||
[49b4b4c]: https://github.com/prettier/plugin-pug/commit/49b4b4cdec7d3bdea079c8a801aece71524ce011 | ||
[8478562]: https://github.com/prettier/plugin-pug/commit/8478562a7401927a276f9d80f6db6c7b4ff7a27e | ||
[b7d26c7]: https://github.com/prettier/plugin-pug/commit/b7d26c7692b1146cb2717175a092d48bf9673e1e | ||
[7670ade]: https://github.com/prettier/plugin-pug/commit/7670adec9370cff64cbeda83f553988fbebd5b7f | ||
[4ac7812]: https://github.com/prettier/plugin-pug/commit/4ac7812d0f98ad41431173e017ecf80577e5ea16 | ||
[aff4969]: https://github.com/prettier/plugin-pug/commit/aff4969872bd06f91db474ebaa7715200d82637b | ||
[09e96a3]: https://github.com/prettier/plugin-pug/commit/09e96a38750f86f5de6fe31f4cd55a0f4ac76b4c | ||
[e5c3944]: https://github.com/prettier/plugin-pug/commit/e5c3944e634906b10c641a801f1afeb301cf4a80 | ||
[c32a8d1]: https://github.com/prettier/plugin-pug/commit/c32a8d170604b8a308ba70730066d5c644487193 | ||
[bfb90c6]: https://github.com/prettier/plugin-pug/commit/bfb90c6a4c06b58fb1593255448bc403b375c2d4 | ||
[20be986]: https://github.com/prettier/plugin-pug/commit/20be986be4303c379f76acdd30d8b1a99bc2e30b | ||
# 1.0.10 | ||
@@ -6,0 +40,0 @@ |
@@ -125,3 +125,3 @@ "use strict"; | ||
var printWidth = _a.printWidth, singleQuote = _a.singleQuote, tabWidth = _a.tabWidth, useTabs = _a.useTabs, attributeSeparator = _a.attributeSeparator, semi = _a.semi; | ||
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q; | ||
var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r; | ||
var tokens = path.stack[0]; | ||
@@ -142,2 +142,5 @@ var result = ''; | ||
var codeInterpolationOptions = { singleQuote: !singleQuote, printWidth: 9000 }; | ||
if (((_b = tokens[0]) === null || _b === void 0 ? void 0 : _b.type) === 'text') { | ||
result += '| '; | ||
} | ||
var _loop_1 = function (index) { | ||
@@ -157,3 +160,3 @@ var token = tokens[index]; | ||
case 'start-attributes': | ||
if (((_b = nextToken) === null || _b === void 0 ? void 0 : _b.type) === 'attribute') { | ||
if (((_c = nextToken) === null || _c === void 0 ? void 0 : _c.type) === 'attribute') { | ||
previousAttributeRemapped = false; | ||
@@ -178,49 +181,55 @@ startAttributePosition = result.length; | ||
case 'attribute': { | ||
if (token.name === 'class' && | ||
typeof token.val === 'string' && | ||
(token.val.startsWith('"') || token.val.startsWith("'"))) { | ||
var val = token.val; | ||
val = val.substring(1, val.length - 1); | ||
val = val.trim(); | ||
val = val.replace(/\s\s+/g, ' '); | ||
var classes = val.split(' '); | ||
var specialClasses = []; | ||
var validClassNameRegex = /^-?[_a-zA-Z]+[_a-zA-Z0-9-]*$/; | ||
for (var _i = 0, classes_1 = classes; _i < classes_1.length; _i++) { | ||
var className = classes_1[_i]; | ||
if (!validClassNameRegex.test(className)) { | ||
specialClasses.push(className); | ||
continue; | ||
if (typeof token.val === 'string') { | ||
var surroundedByQuotes = (token.val.startsWith('"') && token.val.endsWith('"')) || | ||
(token.val.startsWith("'") && token.val.endsWith("'")); | ||
if (surroundedByQuotes) { | ||
if (token.name === 'class') { | ||
var val = token.val; | ||
val = val.substring(1, val.length - 1); | ||
val = val.trim(); | ||
val = val.replace(/\s\s+/g, ' '); | ||
var classes = val.split(' '); | ||
var specialClasses = []; | ||
var validClassNameRegex = /^-?[_a-zA-Z]+[_a-zA-Z0-9-]*$/; | ||
for (var _i = 0, classes_1 = classes; _i < classes_1.length; _i++) { | ||
var className = classes_1[_i]; | ||
if (!validClassNameRegex.test(className)) { | ||
specialClasses.push(className); | ||
continue; | ||
} | ||
var position = startAttributePosition; | ||
result = [ | ||
result.slice(0, position), | ||
"." + className, | ||
result.slice(position) | ||
].join(''); | ||
startAttributePosition += 1 + className.length; | ||
result = result.replace(/div\./, '.'); | ||
} | ||
if (specialClasses.length > 0) { | ||
token.val = makeString(specialClasses.join(' '), singleQuote ? "'" : '"', false); | ||
previousAttributeRemapped = false; | ||
} | ||
else { | ||
previousAttributeRemapped = true; | ||
break; | ||
} | ||
} | ||
var position = startAttributePosition; | ||
result = [result.slice(0, position), "." + className, result.slice(position)].join(''); | ||
startAttributePosition += 1 + className.length; | ||
result = result.replace(/div\./, '.'); | ||
else if (token.name === 'id') { | ||
var val = token.val; | ||
val = val.substring(1, val.length - 1); | ||
val = val.trim(); | ||
var position = startTagPosition; | ||
result = [result.slice(0, position), "#" + val, result.slice(position)].join(''); | ||
startAttributePosition += 1 + val.length; | ||
result = result.replace(/div#/, '#'); | ||
if (previousToken.type === 'attribute' && previousToken.name !== 'class') { | ||
previousAttributeRemapped = true; | ||
} | ||
break; | ||
} | ||
} | ||
if (specialClasses.length > 0) { | ||
token.val = makeString(specialClasses.join(' '), singleQuote ? "'" : '"', false); | ||
previousAttributeRemapped = false; | ||
} | ||
else { | ||
previousAttributeRemapped = true; | ||
break; | ||
} | ||
} | ||
else if (token.name === 'id' && | ||
typeof token.val === 'string' && | ||
(token.val.startsWith('"') || token.val.startsWith("'"))) { | ||
var val = token.val; | ||
val = val.substring(1, val.length - 1); | ||
val = val.trim(); | ||
var position = startTagPosition; | ||
result = [result.slice(0, position), "#" + val, result.slice(position)].join(''); | ||
startAttributePosition += 1 + val.length; | ||
result = result.replace(/div#/, '#'); | ||
if (previousToken.type === 'attribute' && previousToken.name !== 'class') { | ||
previousAttributeRemapped = true; | ||
} | ||
break; | ||
} | ||
var hasNormalPreviousToken = previousNormalAttributeToken(tokens, index); | ||
if (((_c = previousToken) === null || _c === void 0 ? void 0 : _c.type) === 'attribute' && | ||
if (((_d = previousToken) === null || _d === void 0 ? void 0 : _d.type) === 'attribute' && | ||
(!previousAttributeRemapped || hasNormalPreviousToken)) { | ||
@@ -307,6 +316,6 @@ if (alwaysUseAttributeSeparator || /^(\(|\[|:).*/.test(token.name)) { | ||
} | ||
else if (((_d = previousToken) === null || _d === void 0 ? void 0 : _d.type) === 'attribute') { | ||
else if (((_e = previousToken) === null || _e === void 0 ? void 0 : _e.type) === 'attribute') { | ||
result += ')'; | ||
} | ||
if (((_e = nextToken) === null || _e === void 0 ? void 0 : _e.type) === 'text' || ((_f = nextToken) === null || _f === void 0 ? void 0 : _f.type) === 'path') { | ||
if (((_f = nextToken) === null || _f === void 0 ? void 0 : _f.type) === 'text' || ((_g = nextToken) === null || _g === void 0 ? void 0 : _g.type) === 'path') { | ||
result += ' '; | ||
@@ -321,3 +330,3 @@ } | ||
case 'outdent': | ||
if (((_g = previousToken) === null || _g === void 0 ? void 0 : _g.type) !== 'outdent') { | ||
if (((_h = previousToken) === null || _h === void 0 ? void 0 : _h.type) !== 'outdent') { | ||
if (token.loc.start.line - previousToken.loc.end.line > 1) { | ||
@@ -333,3 +342,3 @@ result += '\n'; | ||
result += "." + token.val; | ||
if (((_h = nextToken) === null || _h === void 0 ? void 0 : _h.type) === 'text') { | ||
if (((_j = nextToken) === null || _j === void 0 ? void 0 : _j.type) === 'text') { | ||
result += ' '; | ||
@@ -346,2 +355,5 @@ } | ||
result = printIndent(previousToken, result, indent, indentLevel); | ||
if (previousToken && !['newline', 'indent', 'outdent'].includes(previousToken.type)) { | ||
result += ' '; | ||
} | ||
result += "//" + (token.buffer ? '' : '-') + token.val.replace(/\s\s+/g, ' '); | ||
@@ -362,3 +374,3 @@ if (nextToken.type === 'start-pipeless-text') { | ||
if (pipelessText) { | ||
switch ((_j = previousToken) === null || _j === void 0 ? void 0 : _j.type) { | ||
switch ((_k = previousToken) === null || _k === void 0 ? void 0 : _k.type) { | ||
case 'newline': | ||
@@ -386,3 +398,3 @@ result += indent.repeat(indentLevel); | ||
val = val.replace(/\s\s+/g, ' '); | ||
switch ((_k = previousToken) === null || _k === void 0 ? void 0 : _k.type) { | ||
switch ((_l = previousToken) === null || _l === void 0 ? void 0 : _l.type) { | ||
case 'newline': | ||
@@ -395,3 +407,3 @@ result += indent.repeat(indentLevel); | ||
result += '|'; | ||
if (/.*\S.*/.test(token.val)) { | ||
if (/.*\S.*/.test(token.val) || ((_m = nextToken) === null || _m === void 0 ? void 0 : _m.type) === 'start-pug-interpolation') { | ||
result += ' '; | ||
@@ -417,3 +429,4 @@ } | ||
} | ||
if (((_l = previousToken) === null || _l === void 0 ? void 0 : _l.type) === 'tag' || ((_m = previousToken) === null || _m === void 0 ? void 0 : _m.type) === 'id') { | ||
val = val.replace(/^#(\{|\[)/g, '\\#$1'); | ||
if (['tag', 'id', 'interpolation', 'call', '&attributes', 'filter'].includes((_o = previousToken) === null || _o === void 0 ? void 0 : _o.type)) { | ||
val = " " + val; | ||
@@ -428,8 +441,13 @@ } | ||
case 'interpolated-code': | ||
switch ((_o = previousToken) === null || _o === void 0 ? void 0 : _o.type) { | ||
switch ((_p = previousToken) === null || _p === void 0 ? void 0 : _p.type) { | ||
case 'tag': | ||
case 'class': | ||
case 'end-attributes': | ||
result += ' '; | ||
break; | ||
case 'start-pug-interpolation': | ||
result += '| '; | ||
break; | ||
case 'indent': | ||
case 'newline': | ||
result = printIndent(previousToken, result, indent, indentLevel); | ||
@@ -453,4 +471,13 @@ result += '| '; | ||
var val = token.val; | ||
val = prettier_1.format(val, __assign(__assign({ parser: 'babel' }, codeInterpolationOptions), { semi: useSemi, endOfLine: 'lf' })); | ||
val = val.slice(0, -1); | ||
try { | ||
var valBackup = val; | ||
val = prettier_1.format(val, __assign(__assign({ parser: 'babel' }, codeInterpolationOptions), { semi: useSemi, endOfLine: 'lf' })); | ||
val = val.slice(0, -1); | ||
if (val.includes('\n')) { | ||
val = valBackup; | ||
} | ||
} | ||
catch (error) { | ||
logger.warn(error); | ||
} | ||
result += " " + val; | ||
@@ -469,3 +496,3 @@ break; | ||
var _indent = ''; | ||
switch ((_p = previousToken) === null || _p === void 0 ? void 0 : _p.type) { | ||
switch ((_q = previousToken) === null || _q === void 0 ? void 0 : _q.type) { | ||
case 'newline': | ||
@@ -505,2 +532,3 @@ case 'outdent': | ||
result += token.mode; | ||
result += ' '; | ||
} | ||
@@ -513,3 +541,3 @@ result += token.val; | ||
case 'path': | ||
if (((_q = previousToken) === null || _q === void 0 ? void 0 : _q.type) === 'include') { | ||
if (['include', 'filter'].includes((_r = previousToken) === null || _r === void 0 ? void 0 : _r.type)) { | ||
result += ' '; | ||
@@ -526,2 +554,3 @@ } | ||
case 'interpolation': | ||
result = printIndent(previousToken, result, indent, indentLevel); | ||
result += "#{" + token.val + "}"; | ||
@@ -534,2 +563,3 @@ break; | ||
case 'filter': | ||
result = printIndent(previousToken, result, indent, indentLevel); | ||
result += ":" + token.val; | ||
@@ -598,3 +628,7 @@ break; | ||
result = printIndent(previousToken, result, indent, indentLevel); | ||
result += "each " + token.val + " in " + token.code; | ||
result += "each " + token.val; | ||
if (token.key !== null) { | ||
result += ", " + token.key; | ||
} | ||
result += " in " + token.code; | ||
break; | ||
@@ -628,2 +662,9 @@ case 'while': | ||
break; | ||
case 'yield': | ||
result = printIndent(previousToken, result, indent, indentLevel); | ||
result += 'yield'; | ||
break; | ||
case 'slash': | ||
result += '/'; | ||
break; | ||
default: | ||
@@ -655,2 +696,2 @@ throw new Error('Unhandled token: ' + JSON.stringify(token)); | ||
exports.defaultOptions = exports.plugin.defaultOptions; | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBLHFDQUErRjtBQUMvRiwrQkFBaUM7QUFFakMseUVBQXdFO0FBQ3hFLG1DQUEwRDtBQUMxRCxxQ0FBcUc7QUFFN0YsSUFBQSx1Q0FBVSxDQUFVO0FBRTVCLElBQU0sTUFBTSxHQUFXLHFCQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDN0MsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsS0FBSyxNQUFNLEVBQUU7SUFDcEMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxpQkFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0NBQ25DO0FBRUQsU0FBUyw0QkFBNEIsQ0FBQyxNQUFlLEVBQUUsS0FBYTtJQUNuRSxLQUFLLElBQUksQ0FBQyxHQUFXLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUMzQyxJQUFNLEtBQUssR0FBVSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0IsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLGtCQUFrQixFQUFFO1lBQ3RDLE9BQU87U0FDUDtRQUNELElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxXQUFXLEVBQUU7WUFDL0IsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLElBQUksRUFBRTtnQkFDbEQsT0FBTyxLQUFLLENBQUM7YUFDYjtTQUNEO0tBQ0Q7SUFDRCxPQUFPO0FBQ1IsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLGFBQW9CLEVBQUUsTUFBYyxFQUFFLE1BQWMsRUFBRSxXQUFtQjs7SUFDN0YsY0FBUSxhQUFhLDBDQUFFLElBQUksRUFBRTtRQUM1QixLQUFLLFNBQVMsQ0FBQztRQUNmLEtBQUssU0FBUztZQUNiLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFB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 | ||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBLHFDQUErRjtBQUMvRiwrQkFBaUM7QUFFakMseUVBQXdFO0FBQ3hFLG1DQUEwRDtBQUMxRCxxQ0FBcUc7QUFFN0YsSUFBQSx1Q0FBVSxDQUFVO0FBRTVCLElBQU0sTUFBTSxHQUFXLHFCQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDN0MsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsS0FBSyxNQUFNLEVBQUU7SUFDcEMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxpQkFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0NBQ25DO0FBRUQsU0FBUyw0QkFBNEIsQ0FBQyxNQUFlLEVBQUUsS0FBYTtJQUNuRSxLQUFLLElBQUksQ0FBQyxHQUFXLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUMzQyxJQUFNLEtBQUssR0FBVSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0IsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLGtCQUFrQixFQUFFO1lBQ3RDLE9BQU87U0FDUDtRQUNELElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxXQUFXLEVBQUU7WUFDL0IsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLElBQUksRUFBRTtnQkFDbEQsT0FBTyxLQUFLLENBQUM7YUFDYjtTQUNEO0tBQ0Q7SUFDRCxPQUFPO0FBQ1IsQ0FBQztBQUVELFNBQVMsV0FBVyxDQUFDLGFBQW9CLEVBQUUsTUFBYyxFQUFFLE1BQWMsRUFBRSxXQUFtQjs7SUFDN0YsY0FBUSxhQUFhLDBDQUFFLElBQUksRUFBRTtRQUM1QixLQUFLLFNBQVMsQ0FBQztRQUNmLEtBQUssU0FBUztZQUNiLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFB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 |
{ | ||
"name": "@prettier/plugin-pug", | ||
"version": "1.0.10", | ||
"version": "1.0.11", | ||
"description": "Prettier Pug Plugin", | ||
@@ -35,8 +35,8 @@ "main": "dist/index.js", | ||
"@types/jest": "~24.0.23", | ||
"@types/node": "~12.12.7", | ||
"@types/prettier": "~1.18.3", | ||
"@typescript-eslint/eslint-plugin": "~2.7.0", | ||
"@typescript-eslint/parser": "~2.7.0", | ||
"eslint": "~6.6.0", | ||
"eslint-config-prettier": "~6.5.0", | ||
"@types/node": "~12.12.12", | ||
"@types/prettier": "~1.19.0", | ||
"@typescript-eslint/eslint-plugin": "~2.8.0", | ||
"@typescript-eslint/parser": "~2.8.0", | ||
"eslint": "~6.7.0", | ||
"eslint-config-prettier": "~6.7.0", | ||
"eslint-plugin-prettier": "~3.1.1", | ||
@@ -46,3 +46,3 @@ "jest": "~24.9.0", | ||
"prettier": "1.19.1", | ||
"ts-jest": "~24.1.0", | ||
"ts-jest": "~24.2.0", | ||
"typescript": "~3.7.2" | ||
@@ -49,0 +49,0 @@ }, |
167
src/index.ts
@@ -149,2 +149,6 @@ import { Doc, FastPath, format, Options, Parser, ParserOptions, Plugin, util } from 'prettier'; | ||
if (tokens[0]?.type === 'text') { | ||
result += '| '; | ||
} | ||
for (let index: number = 0; index < tokens.length; index++) { | ||
@@ -184,53 +188,60 @@ const token: Token = tokens[index]; | ||
case 'attribute': { | ||
if ( | ||
token.name === 'class' && | ||
typeof token.val === 'string' && | ||
(token.val.startsWith('"') || token.val.startsWith("'")) | ||
) { | ||
// Handle class attribute | ||
let val = token.val; | ||
val = val.substring(1, val.length - 1); | ||
val = val.trim(); | ||
val = val.replace(/\s\s+/g, ' '); | ||
const classes: string[] = val.split(' '); | ||
const specialClasses: string[] = []; | ||
const validClassNameRegex: RegExp = /^-?[_a-zA-Z]+[_a-zA-Z0-9-]*$/; | ||
for (const className of classes) { | ||
if (!validClassNameRegex.test(className)) { | ||
specialClasses.push(className); | ||
continue; | ||
if (typeof token.val === 'string') { | ||
const surroundedByQuotes: boolean = | ||
(token.val.startsWith('"') && token.val.endsWith('"')) || | ||
(token.val.startsWith("'") && token.val.endsWith("'")); | ||
if (surroundedByQuotes) { | ||
if (token.name === 'class') { | ||
// Handle class attribute | ||
let val = token.val; | ||
val = val.substring(1, val.length - 1); | ||
val = val.trim(); | ||
val = val.replace(/\s\s+/g, ' '); | ||
const classes: string[] = val.split(' '); | ||
const specialClasses: string[] = []; | ||
const validClassNameRegex: RegExp = /^-?[_a-zA-Z]+[_a-zA-Z0-9-]*$/; | ||
for (const className of classes) { | ||
if (!validClassNameRegex.test(className)) { | ||
specialClasses.push(className); | ||
continue; | ||
} | ||
// Write css-class in front of attributes | ||
const position: number = startAttributePosition; | ||
result = [ | ||
result.slice(0, position), | ||
`.${className}`, | ||
result.slice(position) | ||
].join(''); | ||
startAttributePosition += 1 + className.length; | ||
result = result.replace(/div\./, '.'); | ||
} | ||
if (specialClasses.length > 0) { | ||
token.val = makeString( | ||
specialClasses.join(' '), | ||
singleQuote ? "'" : '"', | ||
false | ||
); | ||
previousAttributeRemapped = false; | ||
} else { | ||
previousAttributeRemapped = true; | ||
break; | ||
} | ||
} else if (token.name === 'id') { | ||
// Handle id attribute | ||
let val = token.val; | ||
val = val.substring(1, val.length - 1); | ||
val = val.trim(); | ||
// Write css-id in front of css-classes | ||
const position: number = startTagPosition; | ||
result = [result.slice(0, position), `#${val}`, result.slice(position)].join( | ||
'' | ||
); | ||
startAttributePosition += 1 + val.length; | ||
result = result.replace(/div#/, '#'); | ||
if (previousToken.type === 'attribute' && previousToken.name !== 'class') { | ||
previousAttributeRemapped = true; | ||
} | ||
break; | ||
} | ||
// Write css-class in front of attributes | ||
const position: number = startAttributePosition; | ||
result = [result.slice(0, position), `.${className}`, result.slice(position)].join( | ||
'' | ||
); | ||
startAttributePosition += 1 + className.length; | ||
result = result.replace(/div\./, '.'); | ||
} | ||
if (specialClasses.length > 0) { | ||
token.val = makeString(specialClasses.join(' '), singleQuote ? "'" : '"', false); | ||
previousAttributeRemapped = false; | ||
} else { | ||
previousAttributeRemapped = true; | ||
break; | ||
} | ||
} else if ( | ||
token.name === 'id' && | ||
typeof token.val === 'string' && | ||
(token.val.startsWith('"') || token.val.startsWith("'")) | ||
) { | ||
// Handle id attribute | ||
let val = token.val; | ||
val = val.substring(1, val.length - 1); | ||
val = val.trim(); | ||
// Write css-id in front of css-classes | ||
const position: number = startTagPosition; | ||
result = [result.slice(0, position), `#${val}`, result.slice(position)].join(''); | ||
startAttributePosition += 1 + val.length; | ||
result = result.replace(/div#/, '#'); | ||
if (previousToken.type === 'attribute' && previousToken.name !== 'class') { | ||
previousAttributeRemapped = true; | ||
} | ||
break; | ||
} | ||
@@ -380,2 +391,5 @@ | ||
result = printIndent(previousToken, result, indent, indentLevel); | ||
if (previousToken && !['newline', 'indent', 'outdent'].includes(previousToken.type)) { | ||
result += ' '; | ||
} | ||
result += `//${token.buffer ? '' : '-'}${token.val.replace(/\s\s+/g, ' ')}`; | ||
@@ -431,3 +445,3 @@ if (nextToken.type === 'start-pipeless-text') { | ||
result += '|'; | ||
if (/.*\S.*/.test(token.val)) { | ||
if (/.*\S.*/.test(token.val) || nextToken?.type === 'start-pug-interpolation') { | ||
result += ' '; | ||
@@ -455,3 +469,9 @@ } | ||
if (previousToken?.type === 'tag' || previousToken?.type === 'id') { | ||
val = val.replace(/^#(\{|\[)/g, '\\#$1'); | ||
if ( | ||
['tag', 'id', 'interpolation', 'call', '&attributes', 'filter'].includes( | ||
previousToken?.type | ||
) | ||
) { | ||
val = ` ${val}`; | ||
@@ -469,6 +489,11 @@ } | ||
case 'tag': | ||
case 'class': | ||
case 'end-attributes': | ||
result += ' '; | ||
break; | ||
case 'start-pug-interpolation': | ||
result += '| '; | ||
break; | ||
case 'indent': | ||
case 'newline': | ||
result = printIndent(previousToken, result, indent, indentLevel); | ||
@@ -492,9 +517,17 @@ result += '| '; | ||
let val = token.val; | ||
val = format(val, { | ||
parser: 'babel', | ||
...codeInterpolationOptions, | ||
semi: useSemi, | ||
endOfLine: 'lf' | ||
}); | ||
val = val.slice(0, -1); | ||
try { | ||
const valBackup = val; | ||
val = format(val, { | ||
parser: 'babel', | ||
...codeInterpolationOptions, | ||
semi: useSemi, | ||
endOfLine: 'lf' | ||
}); | ||
val = val.slice(0, -1); | ||
if (val.includes('\n')) { | ||
val = valBackup; | ||
} | ||
} catch (error) { | ||
logger.warn(error); | ||
} | ||
result += ` ${val}`; | ||
@@ -553,2 +586,3 @@ break; | ||
result += token.mode; | ||
result += ' '; | ||
} | ||
@@ -561,3 +595,3 @@ result += token.val; | ||
case 'path': | ||
if (previousToken?.type === 'include') { | ||
if (['include', 'filter'].includes(previousToken?.type)) { | ||
result += ' '; | ||
@@ -574,2 +608,3 @@ } | ||
case 'interpolation': | ||
result = printIndent(previousToken, result, indent, indentLevel); | ||
result += `#{${token.val}}`; | ||
@@ -582,2 +617,3 @@ break; | ||
case 'filter': | ||
result = printIndent(previousToken, result, indent, indentLevel); | ||
result += `:${token.val}`; | ||
@@ -645,3 +681,7 @@ break; | ||
result = printIndent(previousToken, result, indent, indentLevel); | ||
result += `each ${token.val} in ${token.code}`; | ||
result += `each ${token.val}`; | ||
if (token.key !== null) { | ||
result += `, ${token.key}`; | ||
} | ||
result += ` in ${token.code}`; | ||
break; | ||
@@ -675,2 +715,9 @@ case 'while': | ||
break; | ||
case 'yield': | ||
result = printIndent(previousToken, result, indent, indentLevel); | ||
result += 'yield'; | ||
break; | ||
case 'slash': | ||
result += '/'; | ||
break; | ||
default: | ||
@@ -677,0 +724,0 @@ throw new Error('Unhandled token: ' + JSON.stringify(token)); |
@@ -42,2 +42,3 @@ declare module 'pug-lexer' { | ||
| 'path' | ||
| 'slash' | ||
| 'start-attributes' | ||
@@ -50,3 +51,4 @@ | 'start-pipeless-text' | ||
| 'when' | ||
| 'while'; | ||
| 'while' | ||
| 'yield'; | ||
@@ -176,3 +178,3 @@ export interface LexToken<Type extends LexTokenType> { | ||
val: string; | ||
key: null; | ||
key: string | null; | ||
code: string; | ||
@@ -203,2 +205,6 @@ } | ||
export type YieldToken = LexToken<'yield'>; | ||
export type SlashToken = LexToken<'slash'>; | ||
export type Token = | ||
@@ -238,2 +244,3 @@ | AndAttributesToken | ||
| PathToken | ||
| SlashToken | ||
| StartAttributesToken | ||
@@ -246,3 +253,4 @@ | StartPipelessTextToken | ||
| WhenToken | ||
| WhileToken; | ||
| WhileToken | ||
| YieldToken; | ||
@@ -255,4 +263,79 @@ export type LexerFunction = (type: string, exp?: any) => boolean; | ||
startingColumn?: number; | ||
plugins?: Array<LexerFunction>; | ||
plugins?: LexerFunction[]; | ||
} | ||
export class Lexer { | ||
input: string; | ||
originalInput: string; | ||
filename?: string; | ||
interpolated: boolean; | ||
lineno: number; | ||
colno: number; | ||
plugins: LexerFunction[]; | ||
indentStack: number[]; | ||
indentRe: RegExp | null; | ||
interpolationAllowed: boolean; | ||
whitespaceRe: RegExp; | ||
tokens: Token[]; | ||
ended: boolean; | ||
constructor(str: string, options?: LexerOptions); | ||
error(code: string, message: string): never; | ||
assert(value: any, message: string): void; | ||
isExpression(exp: string): boolean; | ||
assertExpression(exp: string, noThrow?: boolean): boolean; | ||
assertNestingCorrect(exp: string): void; | ||
private tok<Type extends LexTokenType>(type: Type, val?: any): LexToken<Type>; | ||
private tokEnd<Type extends LexTokenType>(tok: LexToken<Type>): LexToken<Type>; | ||
private incrementLine(increment: number): void; | ||
private incrementColumn(increment: number): void; | ||
private consume(len: number): void; | ||
private scan<Type extends LexTokenType>(regexp: RegExp, type: Type): LexToken<Type> | undefined; | ||
private scanEndOfLine<Type extends LexTokenType>(regexp: RegExp, type: Type): LexToken<Type> | undefined; | ||
private bracketExpression(skip?: number): number; | ||
scanIndentation(): RegExpExecArray | null; | ||
eos(): true | undefined; | ||
blank(): true | undefined; | ||
comment(): true | undefined; | ||
interpolation(): true | undefined; | ||
tag(): true | undefined; | ||
filter(): true | undefined; | ||
doctype(): true | undefined; | ||
id(): true | undefined; | ||
className(): true | undefined; | ||
endInterpolation(): true | undefined; | ||
addText(type: LexTokenType, value: string, prefix?: string, escaped?: number): void; | ||
text(): true | undefined; | ||
textHtml(): true | undefined; | ||
dot(): true | undefined; | ||
extends(): true | undefined; | ||
prepend(): true | undefined; | ||
append(): true | undefined; | ||
block(): true | undefined; | ||
mixinBlock(): true | undefined; | ||
yield(): true | undefined; | ||
include(): true | undefined; | ||
path(): true | undefined; | ||
case(): true | undefined; | ||
when(): true | undefined; | ||
default(): true | undefined; | ||
call(): true | undefined; | ||
mixin(): true | undefined; | ||
conditional(): true | undefined; | ||
while(): true | undefined; | ||
each(): true | undefined; | ||
eachOf(): true | undefined; | ||
code(): true | undefined; | ||
blockCode(): true | undefined; | ||
attribute(): string; | ||
attributeValue(str: string): { val?: string; mustEscape?: boolean; remainingSource: string }; | ||
attrs(): true | undefined; | ||
attributesBlock(): true | undefined; | ||
indent(): true | NewlineToken | undefined; | ||
pipelessText(indents?: number): boolean | undefined; | ||
slash(): true | undefined; | ||
colon(): true | undefined; | ||
fail(): never; | ||
callLexerFunction(func: string): boolean; | ||
private advance(): boolean; | ||
getTokens(): Token[]; | ||
} | ||
} | ||
@@ -259,0 +342,0 @@ function lex(str: string, options?: lex.LexerOptions): lex.Token[]; |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
126061
1927
14