UNPKG

metal-soy-critic

Version:
24 lines (23 loc) 820 B
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const changeCase = require("change-case"); const INTERPOLATION = /{\$(\d{1,3})((\|[a-zA-Z]+)*)}/g; function applyFilters(input, filters) { return filters.reduce((result, filter) => (changeCase[filter] || defaultFilter)(result), input); } function defaultFilter(input) { return input; } function transform(input, regex, output) { const matches = input.match(new RegExp(regex)); if (!matches) { throw new Error('Failed to match input string.'); } return output.replace(INTERPOLATION, (_, group, rawFilters) => { const filters = rawFilters .split('|') .filter(filter => filter); return applyFilters(matches[parseInt(group)], filters); }); } exports.default = transform;