From 89083aaeb0e4578e772e5531568aa08032a169cc Mon Sep 17 00:00:00 2001 From: "Felix W. Dekker" Date: Sat, 16 May 2020 18:54:07 +0200 Subject: [PATCH] Migrate to npm, use template package --- .gitattributes | 1 + .gitignore | 104 ++++++++++++++++ Gruntfile.js | 112 +++++++++++++++++ README.md | 20 +++ index.html | 290 ------------------------------------------- package-lock.json | Bin 0 -> 322818 bytes package.json | 34 +++++ src/main/index.html | 49 ++++++++ src/main/js/index.js | 241 +++++++++++++++++++++++++++++++++++ 9 files changed, 561 insertions(+), 290 deletions(-) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 Gruntfile.js delete mode 100644 index.html create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 src/main/index.html create mode 100644 src/main/js/index.js diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..1a6bd45 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +package-lock.json binary diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9ed75c8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,104 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/ + +# Dependency directories +node_modules/ +jspm_packages/ + +# TypeScript v1 declaration files +typings/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env +.env.test + +# parcel-bundler cache (https://parceljs.org/) +.cache + +# Next.js build output +.next + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and *not* Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port diff --git a/Gruntfile.js b/Gruntfile.js new file mode 100644 index 0000000..acad4ee --- /dev/null +++ b/Gruntfile.js @@ -0,0 +1,112 @@ +const path = require("path"); + +module.exports = grunt => { + grunt.initConfig({ + pkg: grunt.file.readJSON("package.json"), + clean: { + default: ["dist/"], + }, + copy: { + html: { + files: [{expand: true, cwd: "src/main/", src: "**/*.html", dest: "dist/"}] + }, + }, + focus: { + dev: { + include: ["html", "js", "link"], + }, + }, + replace: { + dev: { + src: ["./dist/*.html", "./dist/*.js"], + replacements: [ + { + from: "%%VERSION_NUMBER%%", + to: "<%= pkg.version %>+" + new Date().toISOString().slice(0, 19).replace(/[-:T]/g, "") + } + ], + overwrite: true + }, + deploy: { + src: ["./dist/*.html", "./dist/*.js"], + replacements: [ + { + from: "%%VERSION_NUMBER%%", + to: "<%= pkg.version %>" + } + ], + overwrite: true + }, + }, + watch: { + html: { + files: ["src/main/**/*.html"], + tasks: ["copy:html"], + }, + js: { + files: ["src/main/**/*.js"], + tasks: ["webpack:dev", "replace:dev"], + }, + link: { + files: ["node_modules/@fwdekker/*/dist/**"], + tasks: ["webpack:dev", "replace:dev"], + }, + }, + webpack: { + options: { + entry: "./src/main/js/index.js", + module: { + rules: [ + { + test: /\.js$/, + exclude: /node_modules/, + }, + ], + }, + resolve: { + extensions: [".js"], + }, + output: { + filename: "bundle.js", + path: path.resolve(__dirname, "dist/"), + }, + }, + dev: { + mode: "development", + devtool: "inline-source-map", + }, + deploy: { + mode: "production", + }, + }, + }); + + grunt.loadNpmTasks("grunt-contrib-clean"); + grunt.loadNpmTasks("grunt-contrib-copy"); + grunt.loadNpmTasks("grunt-contrib-watch"); + grunt.loadNpmTasks("grunt-focus"); + grunt.loadNpmTasks("grunt-text-replace"); + grunt.loadNpmTasks("grunt-webpack"); + + grunt.registerTask("dev", [ + // Pre + "clean", + // Copy files + "copy:html", + // Compile JS + "webpack:dev", + "replace:dev", + ]); + grunt.registerTask("dev:server", ["dev", "focus:dev"]); + grunt.registerTask("deploy", [ + // Pre + "clean", + // Copy files + "copy:html", + // Compile JS + "webpack:deploy", + "replace:deploy", + ]); + + grunt.registerTask("default", ["dev"]); +}; diff --git a/README.md b/README.md index c2a30f0..adc9f04 100644 --- a/README.md +++ b/README.md @@ -2,3 +2,23 @@ An online tool to convert values between number systems. Quickly convert hexadecimal to binary or base64 to ASCII. Everything happens in the browser, so nothing is submitted to any server. + +## Development +### Requirements +* [npm](https://www.npmjs.com/) + +### Setting up +```shell script +# Install dependencies (only needed once) +$> npm ci +``` + +### Building +```shell script +# Build the tool in `dist/` for development +$> npm run dev +# Same as above, but automatically rerun it whenever files are changed +$> npm run dev:server +# Build the tool in `dist/` for deployment +$> npm run deploy +``` diff --git a/index.html b/index.html deleted file mode 100644 index 78fc9be..0000000 --- a/index.html +++ /dev/null @@ -1,290 +0,0 @@ - - - - - - - - - - - Converter | FWDekker - - - - - -
- -
-
-

Converter

- -
-

Convert numbers to and from various bases.

-
-
-
- - - -
-
-
-
-
-
-
-
-
-
- - - - -
- - - - - - - - diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000000000000000000000000000000000000..6903f207395a2d2980a52076fc8d20893380d02b GIT binary patch literal 322818 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 + + + + + + + + + + Converter | FWDekker + + + + + +

+ +
+ + + + +
+
+
+
+
+
+
+
+
+
+
+ +
+ + + + + + diff --git a/src/main/js/index.js b/src/main/js/index.js new file mode 100644 index 0000000..e0a1a9d --- /dev/null +++ b/src/main/js/index.js @@ -0,0 +1,241 @@ +import {$, doAfterLoad, footer, header, nav} from "@fwdekker/template"; +import bigInt from "big-integer" + + +/** + * Replaces the character at the given index with the given replacement. + * + * @param str the string to replace in + * @param index the index in the given string to replace at + * @param replacement the replacement to insert into the string + * @returns {string} the input string with one character replaced + */ +const stringReplaceAt = (str, index, replacement) => + str.substr(0, index) + replacement + str.substr(index + replacement.length); + +/** + * Replaces all instances of the target with the replacement. + * + * @param str the string to replace in + * @param target the character to replace + * @param replacement the replacement to insert into the string + * @returns {string} the input string with all instances of the target replaced + */ +const stringReplaceAll = (str, target, replacement) => + str.split(target).join(replacement); + +/** + * Runs `stringReplaceAll` for each character in `targets` and `replacements`. + * + * @param str the string to replace in + * @param targets the characters to replace + * @param replacements the replacements to insert into the string; each character here corresponds to a character + * in the targets string + * @returns {string} the input string with all instances of the targets replaced + */ +const stringReplaceAlls = (str, targets, replacements) => + Array.from(targets).reduce((output, target, index) => + stringReplaceAll(output, target, replacements[index]), str); + + +class NumeralSystem { + constructor(base, alphabet, caseSensitive) { + this.base = base; + this.alphabet = alphabet; + this.caseSensitive = caseSensitive; + } + + + decimalToBase(decimalNumber) { + return decimalNumber.toString(this.base, this.alphabet); + } + + baseToDecimal(baseString) { + return bigInt(baseString, this.base, this.alphabet, this.caseSensitive); + } + + filterBaseString(baseString) { + // Regex from https://stackoverflow.com/a/3561711/ + const alphabet = this.caseSensitive + ? this.alphabet + : this.alphabet.toLowerCase() + this.alphabet.toUpperCase(); + const regexSafeAlphabet = alphabet.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&"); + + return baseString.replace(new RegExp(`[^${regexSafeAlphabet}]`, "g"), ""); + } +} + +class NumeralSystemInput { + constructor(name, numeralSystem) { + this.name = name; + this.numeralSystem = numeralSystem; + + this.label = document.createElement("label"); + this.label.setAttribute("for", `${this.name}Input`); + this.label.innerHTML = this.name; + + this.textarea = document.createElement("textarea"); + this.textarea.id = `${this.name}Input`; + this.textarea.className = "numberInput"; + this.textarea.oninput = () => { + if (this.textarea.value === undefined || this.textarea.value === null || this.textarea.value === "") + return; + + this.textarea.value = this.numeralSystem.filterBaseString(this.textarea.value); + updateAllInputs(this, this.numeralSystem.baseToDecimal(this.textarea.value)); + }; + } + + + addToParent(parent) { + parent.appendChild(this.label); + parent.appendChild(this.textarea); + } + + update(decimalNumber) { + this.textarea.value = this.numeralSystem.decimalToBase(decimalNumber); + } +} + +class Base64NumeralSystem extends NumeralSystem { + // TODO Convert static methods to static properties once supported by Firefox + static defaultAlphabet() { + return "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; + } + + + /** + * Constructs a new base 64 numeral system. + * + * @param alphabet the 64 characters to encode numbers with, and the padding character at the end + */ + constructor(alphabet) { + super(64, alphabet, true); + } + + + decimalToBase(decimalNumber) { + const hex = decimalNumber.toString(16); + const b64 = Array.from(hex.padStart(hex.length + hex.length % 2)) + .reduce((result, value, index, array) => { + if (index % 2 === 0) result.push(array.slice(index, index + 2)); + return result; + }, []) + .map(pair => String.fromCharCode(parseInt(pair.join(""), 16))) + .join(""); + + return stringReplaceAlls(btoa(b64), Base64NumeralSystem.defaultAlphabet(), this.alphabet); + } + + baseToDecimal(baseString) { + if (baseString.length % 4 === 1) throw new Error("Invalid input string length."); + + const normalBaseString = stringReplaceAlls(baseString, this.alphabet, Base64NumeralSystem.defaultAlphabet()); + const hex = Array.from(atob(normalBaseString)) + .map(char => char.charCodeAt(0).toString(16).padStart(2, "0")).join(""); + return bigInt(hex, 16); + } +} + +class Base64NumeralSystemInput extends NumeralSystemInput { + // TODO Convert static methods to static properties once supported by Firefox + static dropdownOptions() { + return {"Standard": ['+', '/'], "Filename": ['-', '_'], "IMAP": ['+', ',']}; + } + + + constructor(name) { + super(name, new Base64NumeralSystem(Base64NumeralSystem.defaultAlphabet())); + + this.dropdown = document.createElement("select"); + this.dropdown.id = `${this.name}Dropdown`; + this.dropdown.onchange = () => { + const selectedOption = Base64NumeralSystemInput.dropdownOptions()[this.dropdown.value]; + this.setLastDigits(selectedOption[0], selectedOption[1]); + }; + + this.dropdownDiv = document.createElement("div"); + this.dropdownDiv.classList.add("float-right"); + + this.options = + Object.keys(Base64NumeralSystemInput.dropdownOptions()).map(key => { + const option = document.createElement("option"); + option.value = key; + option.text = key + ": " + Base64NumeralSystemInput.dropdownOptions()[key].join(""); + return option; + }); + } + + + setLastDigits(c62, c63) { + const oc62 = this.numeralSystem.alphabet[62]; + const oc63 = this.numeralSystem.alphabet[63]; + + this.numeralSystem.alphabet = + stringReplaceAt(stringReplaceAt(this.numeralSystem.alphabet, 62, c62), 63, c63); + this.textarea.value = + stringReplaceAll(stringReplaceAll(this.textarea.value, oc62, c62), oc63, c63); + } + + addToParent(parent) { + this.options.forEach(option => this.dropdown.appendChild(option)); + this.dropdownDiv.appendChild(this.dropdown); + parent.appendChild(this.dropdownDiv); + + parent.appendChild(this.label); + parent.appendChild(this.textarea); + } +} + + +const inputs = [ + new NumeralSystemInput("Binary", new NumeralSystem(2, "01")), + new NumeralSystemInput("Octal", new NumeralSystem(8, "01234567")), + new NumeralSystemInput("Decimal", new NumeralSystem(10, "0123456789")), + new NumeralSystemInput("Duodecimal", new NumeralSystem(12, "0123456789ab", false)), + new NumeralSystemInput("Hexadecimal", new NumeralSystem(16, "0123456789abcdef", false)), + new Base64NumeralSystemInput("Base64"), + new NumeralSystemInput( + "ASCII", + new NumeralSystem( + 256, + new Array(256).fill(0).map((_, it) => String.fromCharCode(it)).join(""), + true + ) + ), +]; + +const updateAllInputs = (source, newValue) => { + for (const input of inputs) + if (input !== source) + input.update(newValue); +}; + + +doAfterLoad(() => { + $("#nav").appendChild(nav()); + $("#header").appendChild(header({ + title: "Converter", + description: "Convert numbers to and from various bases" + })); + $("#footer").appendChild(footer({ + author: "Felix W. Dekker", + authorURL: "https://fwdekker.com/", + license: "MIT License", + licenseURL: "https://git.fwdekker.com/FWDekker/converter/src/branch/master/LICENSE", + vcs: "git", + vcsURL: "https://git.fwdekker.com/FWDekker/converter/", + version: "v%%VERSION_NUMBER%%" + })); + $("main").style.display = null; +}); + +doAfterLoad(() => { + const inputParent = $("#inputs"); + + for (const input of inputs) + input.addToParent(inputParent); + + updateAllInputs(undefined, bigInt(42)); + inputs[0].textarea.focus(); +});