From a6878337641863d03c1838eb9e5cc63f5755b9d9 Mon Sep 17 00:00:00 2001 From: ewin Date: Tue, 29 Jul 2025 21:39:13 -0400 Subject: [PATCH] oops i need to commit this too --- lib/util/template-parameters.js | 51 +++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 lib/util/template-parameters.js diff --git a/lib/util/template-parameters.js b/lib/util/template-parameters.js new file mode 100644 index 0000000..2298a56 --- /dev/null +++ b/lib/util/template-parameters.js @@ -0,0 +1,51 @@ +import {regExpEscape} from './regexp.js'; + +/** + * Created a RegExp that matches an existing empty template parameter with the + * given name. + */ +const existingEmptyParameterRegExp = paramName => + new RegExp(`^( *\\| *${regExpEscape(paramName)}( *)=) *$`, 'm'); + +/** + * Sets the value of an existing empty parameter. + * @param {string} pageContent + * @param {string} paramName + * @param {string} value + * @returns {string | null} + */ +export function setEmptyParameter (pageContent, paramName, value) { + const regexp = existingEmptyParameterRegExp(paramName) + if (pageContent.match(regexp)) { + return pageContent.replace(regexp, `$1$2${value}`); + } + return null; +} + +/** + * Creates a RegExp that matches an existing template parameter with the given + * name. + */ +const existingParameterRegExp = paramName => + new RegExp(`^( *)\\|( *)${regExpEscape(paramName)}( *)=( *).*$`, 'm'); + +/** + * Inserts a new parameter before or after an existing parameter. + * @param {string} pageContent + * @param {string} existingParamName + * @param {'before' | 'after'} location + * @param {string} newParamName + * @param {string} value + * @returns {string | null} + */ +export function addParameterBesideExistingParameter (pageContent, newParamName, value, location, existingParamName) { + let regexp = existingParameterRegExp(existingParamName); + if (pageContent.match(regexp)) { + let newParameterPattern = `$1|$2${newParamName}$3=$4${value}`; + return pageContent.replace( + regexp, + location === 'before' ? `${newParameterPattern}\n$&` : `$&\n${newParameterPattern}` + ); + } + return null; +}