Compare commits

...

3 Commits

3 changed files with 32 additions and 12 deletions

View File

@ -57,6 +57,9 @@ const options = {
} }
} }
/* Invalid input */
metamorpov.translate({}, options.firstPerson);
/* vrb, vrn */ /* vrb, vrn */
assert.equal(metamorpov.translate("vrb/be/", options.firstPerson), "was"); // I was assert.equal(metamorpov.translate("vrb/be/", options.firstPerson), "was"); // I was
assert.equal(metamorpov.translate("vrb/be/", options.secondPerson), "were"); // You were assert.equal(metamorpov.translate("vrb/be/", options.secondPerson), "were"); // You were
@ -208,5 +211,3 @@ assert.equal(metamorpov.translate("a/an pear", options.firstPerson), "a pear");
assert.equal(metamorpov.translate("a/an apple", options.firstPerson), "an apple"); // Starts with a vowel sound assert.equal(metamorpov.translate("a/an apple", options.firstPerson), "an apple"); // Starts with a vowel sound
assert.equal(metamorpov.translate("a/an hour", options.firstPerson), "an hour"); // Starts with a vowel sound despite consonant letter assert.equal(metamorpov.translate("a/an hour", options.firstPerson), "an hour"); // Starts with a vowel sound despite consonant letter
assert.equal(metamorpov.translate("a/an 1800s-era", options.firstPerson), "an 1800s-era"); // "Eighteen-hundreds" starts with a vowel sound assert.equal(metamorpov.translate("a/an 1800s-era", options.firstPerson), "an 1800s-era"); // "Eighteen-hundreds" starts with a vowel sound
console.log("Test succeeded");

View File

@ -11,14 +11,20 @@ exports.translate = function(input, options) {
options: options, options: options,
} }
if (typeof(input) == "object" && input instanceof Node) { try {
request.loop = loopNode; if (typeof(input) == "object" && input instanceof Node) {
request.loop = loopNode;
}
else if (typeof(input) == "string") {
request.loop = loopString;
}
else {
console.error("Input of type " + typeof(input) + " is unsupported");
return;
}
} }
else if (typeof(input) == "string") { catch {
request.loop = loopString; console.error("Translation of Node objects is unsupported outside of a browser context");
}
else {
console.error("Invalid input type");
return; return;
} }
@ -71,15 +77,28 @@ function loopNode(request, params, method) {
child = node.firstChild; child = node.firstChild;
while (child) { while (child) {
next = child.nextSibling; next = child.nextSibling;
loopNode(node, params, method); loopNode({
input: child,
options: request.options
}, params, method);
child = next; child = next;
} }
break; break;
case 3: /* TEXT_NODE */ case 3: /* TEXT_NODE */
loopString(node.nodeValue, params, method); loopNodeValue({
input: node,
options: request.options
}, params, method);
} }
} }
/* Iterator for strings belonging to HTML Node elements */
function loopNodeValue(request, params, method) {
if (request.input.nodeValue.match(params.regexp) == null) { return; }
request.input.nodeValue = method(request.input.nodeValue, params);
loopNodeValue(request, params, method);
}
/* Iterator for string elements */ /* Iterator for string elements */
function loopString(request, params, method) { function loopString(request, params, method) {
if (request.input.match(params.regexp) == null) { return; } if (request.input.match(params.regexp) == null) { return; }

View File

@ -9,7 +9,7 @@
}, },
"author": "Jean Viscogliosi-Pate", "author": "Jean Viscogliosi-Pate",
"license": "GPL-3.0-or-later", "license": "GPL-3.0-or-later",
"devDependencies": { "dependencies": {
"english-verbs-gerunds": "^3.4.0", "english-verbs-gerunds": "^3.4.0",
"english-verbs-helper": "^3.4.0", "english-verbs-helper": "^3.4.0",
"english-verbs-irregular": "^3.4.0", "english-verbs-irregular": "^3.4.0",