metal-soy-critic
Version:
A metal-soy code validation utility.
27 lines (26 loc) • 927 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const util_1 = require("./util");
const chalk = require("chalk");
function formatMessage(node) {
const firstLine = node.items[0].mark.start.line;
const lastLine = node.items[node.items.length - 1].mark.start.line;
return `Lines ${firstLine} to ${lastLine}`;
}
function validateSortedParams(soyContext) {
const messages = [];
soyContext.visit({
MapLiteral(node) {
const keys = node.items.map(item => item.key.value);
if (!util_1.isSorted(keys)) {
messages.push(formatMessage(node));
}
}
});
if (messages.length) {
return util_1.toResult(false, `These ${chalk.yellow('map keys')} should be ${chalk.yellow('sorted')}:\n\n` +
util_1.joinErrors(messages));
}
return util_1.toResult(true);
}
exports.default = validateSortedParams;