@ztl-uwu/nuxt-content
Version:
Write your content inside your Nuxt app
21 lines (20 loc) • 631 B
JavaScript
export function jsonStringify(value) {
return JSON.stringify(value, regExpReplacer);
}
export function jsonParse(value) {
return JSON.parse(value, regExpReviver);
}
function regExpReplacer(_key, value) {
if (value instanceof RegExp) {
return `--REGEX ${value.toString()}`;
}
return value;
}
function regExpReviver(_key, value) {
const withOperator = typeof value === "string" && value.match(/^--([A-Z]+) (.+)$/) || [];
if (withOperator[1] === "REGEX") {
const regex = withOperator[2]?.match(/\/(.*)\/([dgimsuy]*)$/);
return regex?.[1] ? new RegExp(regex[1], regex[2] || "") : value;
}
return value;
}