@pdfme/schemas
Version:
TypeScript base PDF generator and React base UI. Open source, developed by the community, and completely free to use under the MIT license!
40 lines (39 loc) • 1.71 kB
JavaScript
import { h as escapeInlineMarkdown } from "./measure-L5diay3k.js";
//#region src/multiVariableText/helper.ts
var substituteVariables = (text, variablesIn, valueMapper = (value) => value) => {
if (!text) return "";
let substitutedText = text;
if (variablesIn) {
let variables;
try {
variables = typeof variablesIn === "string" ? JSON.parse(variablesIn || "{}") : variablesIn;
} catch {
throw new SyntaxError(`[@pdfme/schemas] MVT: invalid JSON string '${variablesIn}'`);
}
Object.keys(variables).forEach((variableName) => {
const variableForRegex = variableName.replace(/[/\-\\^$*+?.()|[\]{}]/g, "\\$&");
const regex = new RegExp("\\{" + variableForRegex + "\\}", "g");
substitutedText = substitutedText.replace(regex, valueMapper(variables[variableName], variableName));
});
}
substitutedText = substitutedText.replace(/{[^{}]+}/g, "");
return substitutedText;
};
var substituteVariablesAsInlineMarkdownLiterals = (text, variablesIn) => substituteVariables(text, variablesIn, escapeInlineMarkdown);
var validateVariables = (value, schema) => {
if (schema.variables.length === 0) return true;
let values;
try {
values = value ? JSON.parse(value) : {};
} catch {
throw new SyntaxError(`[@pdfme/generator] invalid JSON string '${value}' for variables in field ${schema.name}`);
}
for (const variable of schema.variables) if (!values[variable]) {
if (schema.required) throw new Error(`[@pdfme/generator] variable ${variable} is missing for field ${schema.name}`);
return false;
}
return true;
};
//#endregion
export { substituteVariablesAsInlineMarkdownLiterals as n, validateVariables as r, substituteVariables as t };
//# sourceMappingURL=helper-CEme39Uo.js.map