Compare commits

...

2 Commits

Author SHA1 Message Date
Jean Viscogliosi-Pate 781350d089 Adding equals feature, fixes #40 2025-07-20 14:44:42 -07:00
Jean Viscogliosi-Pate bafe02b7cb Updating version number 2025-07-20 14:44:42 -07:00
4 changed files with 27 additions and 6 deletions

View File

@ -1,7 +1,7 @@
{
"name": "metamorpov",
"title": "MetamorPOV",
"version": "1.2.0",
"version": "1.4.0",
"description": "Enables customization of reader-insert stories by replacing author-provided hooks such as Y/n, pov/s, and vrb/do/present/.",
"type": "module",
"repository": {

View File

@ -2,7 +2,7 @@
"manifest_version": 3,
"name": "MetamorPOV",
"author": "Jean Viscogliosi-Pate",
"version": "1.3.0",
"version": "1.4.0",
"description": "Enables customization of reader-insert stories by replacing author-provided hooks such as Y/n, pov/s, and vrb/do/present/.",

View File

@ -2,7 +2,7 @@
"manifest_version": 3,
"name": "MetamorPOV",
"author": "Jean Viscogliosi-Pate",
"version": "1.3.0",
"version": "1.4.0",
"description": "Enables customization of reader-insert stories by replacing author-provided hooks such as Y/n, pov/s, and vrb/do/present/.",

View File

@ -40,6 +40,7 @@ function replaceAll() {
if (isAllSet) {
replaceExceptions(options);
replaceEquals();
replaceCuts();
replaceCapitals();
replaceMirror();
@ -230,6 +231,12 @@ function replaceExceptions(options) {
walk(document.body, searchTerm, options, exceptionMethod);
}
/* Replaces statements by whether they match requested terms */
function replaceEquals() {
const searchTerm = /eql\/([\w\s]+)\/([\w\s]+)\/([^\/]*)\/(?:([^\/]*)\/)?/i;
walk(document.body, searchTerm, null, equalsMethod);
}
/* Replaces cut statements with cuts */
function replaceCuts() {
const searchTerm = /cut\/([^\/]+)\/(off|only) (first|last) ([1-9][0-9]*)\//i;
@ -375,13 +382,27 @@ function exceptionMethod(node, searchTerm, options) {
}
}
node.nodeValue = node.nodeValue.replace(searchTerm, replaceValue);
exceptionMethod(node, searchTerm, options);
}
/* Allows for custom answers to custom words */
function equalsMethod(node, searchTerm, unused) {
const match = node.nodeValue.match(searchTerm);
if (match == null) { return; }
let replaceValue;
const isEqual = match[1] === match[2];
if (isEqual) {
replaceValue = match[3];
} else {
replaceValue = match[4];
}
node.nodeValue = node.nodeValue.replace(searchTerm, replaceValue);
exceptionMethod(node, searchTerm, unused);
}
/* Allows for custom words to be truncated */
function cutMethod(node, searchTerm, unused) {
const match = node.nodeValue.match(searchTerm);