diff --git a/src/core/lib/Binary.mjs b/src/core/lib/Binary.mjs index 56db4c2a..dc63fc58 100644 --- a/src/core/lib/Binary.mjs +++ b/src/core/lib/Binary.mjs @@ -19,29 +19,27 @@ import OperationError from "../errors/OperationError.mjs"; * @returns {string} * * @example - * // returns "00001010 00010100 00011110" + * // returns "00010000 00100000 00110000" * toBinary([10,20,30]); * - * // returns "00001010:00010100:00011110" - * toBinary([10,20,30], "Colon"); - * - * // returns "1010:10100:11110" - * toBinary([10,20,30], "Colon", 0); + * // returns "00010000 00100000 00110000" + * toBinary([10,20,30], ":"); */ export function toBinary(data, delim="Space", padding=8) { - if (!data) throw new OperationError("Empty input data enocuntered"); + if (!data) return ""; delim = Utils.charRep(delim); let output = ""; + for (let i = 0; i < data.length; i++) { - output += data[i].toString(2).padStart(padding, "0"); - if (i !== data.length - 1) output += delim; + output += data[i].toString(2).padStart(padding, "0") + delim; } + if (delim.length) { - // Remove the delimiter from the end of the string. - output = output.slice(0, -delim.length); + return output.slice(0, -delim.length); + } else { + return output; } - return output; } @@ -55,10 +53,10 @@ export function toBinary(data, delim="Space", padding=8) { * * @example * // returns [10,20,30] - * fromBinary("00001010 00010100 00011110"); + * fromBinary("00010000 00100000 00110000"); * * // returns [10,20,30] - * fromBinary("00001010:00010100:00011110", "Colon"); + * fromBinary("00010000:00100000:00110000", "Colon"); */ export function fromBinary(data, delim="Space", byteLen=8) { if (byteLen < 1 || Math.round(byteLen) !== byteLen) diff --git a/src/core/operations/ToUpperCase.mjs b/src/core/operations/ToUpperCase.mjs index eb0e315a..0bc9b5a9 100644 --- a/src/core/operations/ToUpperCase.mjs +++ b/src/core/operations/ToUpperCase.mjs @@ -38,23 +38,23 @@ class ToUpperCase extends Operation { */ run(input, args) { const scope = args[0]; - if (scope === "All") { - return input.toUpperCase(); - } - const scopeRegex = { - "Word": /(\b\w)/gi, - "Sentence": /(?:\.|^)\s*(\b\w)/gi, - "Paragraph": /(?:\n|^)\s*(\b\w)/gi - }[ scope ]; - if (scopeRegex !== undefined) { - // Use the regexes to capitalize the input. - return input.replace(scopeRegex, function(m) { - return m.toUpperCase(); - }); - } - else { - // The selected scope was invalid. - throw new OperationError("Unrecognized capitalization scope"); + + switch (scope) { + case "Word": + return input.replace(/(\b\w)/gi, function(m) { + return m.toUpperCase(); + }); + case "Sentence": + return input.replace(/(?:\.|^)\s*(\b\w)/gi, function(m) { + return m.toUpperCase(); + }); + case "Paragraph": + return input.replace(/(?:\n|^)\s*(\b\w)/gi, function(m) { + return m.toUpperCase(); + }); + case "All": /* falls through */ + default: + return input.toUpperCase(); } }