Fixing also and cut bugs

This commit is contained in:
Jean Viscogliosi-Pate 2025-08-18 11:32:24 -07:00
parent 2211fb2225
commit cc7f55a253
2 changed files with 24 additions and 4 deletions

View File

@ -94,6 +94,10 @@ function loopNode(request, params, method) {
/* Iterator for strings belonging to HTML Node elements */
function loopNodeValue(request, params, method) {
if (params.looping == false) {
params.looping = true;
return;
}
if (request.input.nodeValue.match(params.regexp) == null) { return; }
request.input.nodeValue = method(request.input.nodeValue, params);
loopNodeValue(request, params, method);
@ -101,6 +105,10 @@ function loopNodeValue(request, params, method) {
/* Iterator for string elements */
function loopString(request, params, method) {
if (params.looping == false) {
params.looping = true;
return;
}
if (request.input.match(params.regexp) == null) { return; }
request.input = method(request.input, params);
loopString(request, params, method);
@ -253,8 +261,10 @@ function plv(request) {
function yn(request) {
request.loop(request, {
regexp: /\by\/n\b|\(y\/n\)|\[y\/n\]/ig,
replacement: request.options["name"]
replacement: request.options["name"],
looping: true
}, (input, params) => {
params.looping = false;
return input.replaceAll(params.regexp, params.replacement);
});
}
@ -314,8 +324,14 @@ function prn(request) {
/* Replaces specific words indicated in the options */
function also(request) {
Object.entries(request.options.also).forEach(([key, replacement]) => {
const regexp = new RegExp(RegExp.escape(key), "gi");
request.input = request.input.replaceAll(regexp, replacement);
request.loop(request, {
regexp: new RegExp(RegExp.escape(key), "gi"),
replacement: replacement,
looping: true
}, (input, params) => {
params.looping = false;
return input.replaceAll(params.regexp, params.replacement);
})
});
}
@ -441,6 +457,10 @@ function cut(request) {
}, (input, params) => {
const vars = input.match(params.regexp).groups;
const length = vars.target.length;
if (length == 1) {
return input.replace(params.regexp, vars.target);
}
let start, end;
if (vars.offonly.toLowerCase() == "only") {
if (vars.firstlast.toLowerCase() == "first") { // only first n

View File

@ -1,7 +1,7 @@
{
"name": "metamorpov",
"title": "MetamorPOV",
"version": "1.0.1",
"version": "1.0.2",
"description": "Enables customization of reader-insert stories by translating text hooks such as Y/n, pov/s, and vrb/present/do/.",
"main": "metamorpov.js",
"scripts": {