@shopify/prettier-plugin-liquid
Version:
Prettier Liquid/HTML plugin by Shopify
56 lines • 2.32 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.hasMoreThanOneNewLineBetweenNodes = exports.hasLineBreakInRange = exports.originallyHadLineBreaks = exports.reindent = exports.markupLines = exports.bodyLines = exports.trimEnd = exports.trim = exports.isWhitespace = void 0;
function isWhitespace(source, loc) {
if (loc < 0 || loc >= source.length)
return false;
return !!source[loc].match(/\s/);
}
exports.isWhitespace = isWhitespace;
const trim = (x) => x.trim();
exports.trim = trim;
const trimEnd = (x) => x.trimEnd();
exports.trimEnd = trimEnd;
function bodyLines(str) {
return str
.replace(/^(?: |\t)*(\r?\n)*|\s*$/g, '') // only want the meat
.split(/\r?\n/);
}
exports.bodyLines = bodyLines;
function markupLines(markup) {
return markup.trim().split('\n');
}
exports.markupLines = markupLines;
function reindent(lines, skipFirst = false) {
const minIndentLevel = lines
.filter((_, i) => (skipFirst ? i > 0 : true))
.filter((line) => line.trim().length > 0)
.map((line) => line.match(/^\s*/)[0].length)
.reduce((a, b) => Math.min(a, b), Infinity);
if (minIndentLevel === Infinity) {
return lines;
}
const indentStrip = new RegExp('^' + '\\s'.repeat(minIndentLevel));
return lines.map((line) => line.replace(indentStrip, '')).map(exports.trimEnd);
}
exports.reindent = reindent;
function originallyHadLineBreaks(path, { locStart, locEnd }) {
const node = path.getValue();
return hasLineBreakInRange(node.source, locStart(node), locEnd(node));
}
exports.originallyHadLineBreaks = originallyHadLineBreaks;
function hasLineBreakInRange(source, locStart, locEnd) {
const indexOfNewLine = source.indexOf('\n', locStart);
return 0 <= indexOfNewLine && indexOfNewLine < locEnd;
}
exports.hasLineBreakInRange = hasLineBreakInRange;
function hasMoreThanOneNewLineBetweenNodes(source, prev, next) {
var _a;
if (!prev || !next)
return false;
const between = source.slice(prev.position.end, next.position.start);
const count = ((_a = between.match(/\n/g)) === null || _a === void 0 ? void 0 : _a.length) || 0;
return count > 1;
}
exports.hasMoreThanOneNewLineBetweenNodes = hasMoreThanOneNewLineBetweenNodes;
//# sourceMappingURL=string.js.map