@shopify/prettier-plugin-liquid
Version:
Prettier Liquid/HTML plugin by Shopify
59 lines • 2.88 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.isNonEmptyArray = exports.ifBreakChain = exports.FORCE_BREAK_GROUP_ID = exports.FORCE_FLAT_GROUP_ID = exports.getWhitespaceTrim = exports.isDeeplyNested = exports.getSource = void 0;
const prettier_1 = require("prettier");
const liquid_html_parser_1 = require("@shopify/liquid-html-parser");
const array_1 = require("./array");
__exportStar(require("./array"), exports);
__exportStar(require("./string"), exports);
__exportStar(require("./node"), exports);
const { builders } = prettier_1.doc;
const { ifBreak } = builders;
function getSource(path) {
return path.getValue().source;
}
exports.getSource = getSource;
function isDeeplyNested(node) {
if (!node.children)
return false;
if ((0, liquid_html_parser_1.isBranchedTag)(node)) {
return !!node.children.find((child) => isDeeplyNested(child));
}
return !!node.children.find((child) => !(0, array_1.isEmpty)(child.children || []));
}
exports.isDeeplyNested = isDeeplyNested;
// Optionally converts a '' into '-' if any of the parent group breaks and source[loc] is non space.
function getWhitespaceTrim(currWhitespaceTrim, needsWhitespaceStrippingOnBreak, groupIds) {
return ifBreakChain(needsWhitespaceStrippingOnBreak ? '-' : currWhitespaceTrim, currWhitespaceTrim, Array.isArray(groupIds) ? groupIds : [groupIds]);
}
exports.getWhitespaceTrim = getWhitespaceTrim;
// Threads ifBreak into multiple sources of breakage (paragraph or self, etc.)
exports.FORCE_FLAT_GROUP_ID = Symbol('force-no-break');
exports.FORCE_BREAK_GROUP_ID = Symbol('force-break');
function ifBreakChain(breaksContent, flatContent, groupIds) {
if (groupIds.includes(exports.FORCE_BREAK_GROUP_ID))
return breaksContent;
if (groupIds.includes(exports.FORCE_FLAT_GROUP_ID))
return flatContent;
return groupIds.reduce((currFlatContent, groupId) => ifBreak(breaksContent, currFlatContent, { groupId }), flatContent);
}
exports.ifBreakChain = ifBreakChain;
function isNonEmptyArray(object) {
return Array.isArray(object) && object.length > 0;
}
exports.isNonEmptyArray = isNonEmptyArray;
//# sourceMappingURL=index.js.map