oops i need to commit this too
This commit is contained in:
parent
2dfa1cdbca
commit
a687833764
1 changed files with 51 additions and 0 deletions
51
lib/util/template-parameters.js
Normal file
51
lib/util/template-parameters.js
Normal file
|
|
@ -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;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue