diff --git a/data/articles/purebasic-structure-on-stack.md b/data/articles/purebasic-structure-on-stack.md deleted file mode 100644 index e69de29..0000000 diff --git a/data/strings/en/iban-generator.yml b/data/strings/en/iban-generator.yml index 567fbce..9b8caf2 100644 --- a/data/strings/en/iban-generator.yml +++ b/data/strings/en/iban-generator.yml @@ -9,12 +9,18 @@ meta.description.light: "Web application that allows you to generate IBANs in bu country.label: "Country" option.count: "IBAN Count" -option.human.readable: "Format for readability" -option.prefer.numbers: "Prefer numbers over letters" option.for.each: "Generate X for each country" option.sepa.enable: "Enable SEPA countries" option.non-sepa.enable: "Enable non-SEPA countries" +option.prefer.random: "Do not prefer letters nor numbers" +option.prefer.numbers: "Prefer numbers over letters" +option.prefer.letters: "Prefer letters over numbers" + +option.human.format.none: "No formatting" +option.human.format.standard: "Use recommended spacing" +option.human.format.4by4: "Use 4 character-wide spacing" + license.1: "The code for this project is released in the public domain." license.2: "The original source code can be found on GitHub." license.3: "Data from Swift's diff --git a/data/strings/fr/iban-generator.yml b/data/strings/fr/iban-generator.yml index 8724699..feeedc5 100644 --- a/data/strings/fr/iban-generator.yml +++ b/data/strings/fr/iban-generator.yml @@ -9,12 +9,18 @@ meta.description.light: "Application web qui vous permet de générer des IBANs country.label: "Pays" option.count: "Nombre d'IBAN" -option.human.readable: "Formatter pour lecture" -option.prefer.numbers: "Favoriser les nombres aux lettres" option.for.each: "Générer X pour chaque pays" option.sepa.enable: "Activer les pays SEPA" option.non-sepa.enable: "Activer les pays non-SEPA" +option.prefer.random: "Pas de favorisation des lettres ou nombres" +option.prefer.numbers: "Favoriser les nombres aux lettres" +option.prefer.letters: "Favoriser les lettres aux nombres" + +option.human.format.none: "Aucun formatage" +option.human.format.standard: "Utiliser le format standard des pays" +option.human.format.4by4: "Formater en segments de 4 caractères" + license.1: "Le code de ce projet est publié dans le domaine public." license.2: "Le code source original peut être trouvé sur GitHub." license.3: "Les données du diff --git a/static/resources/NibblePoker/applets/iban-generator/iban-generator.mjs b/static/resources/NibblePoker/applets/iban-generator/iban-generator.mjs index 83f1963..bb909f9 100644 --- a/static/resources/NibblePoker/applets/iban-generator/iban-generator.mjs +++ b/static/resources/NibblePoker/applets/iban-generator/iban-generator.mjs @@ -30,10 +30,20 @@ import {initCore} from "../../js/nibblepoker-core.mjs"; /** @type {HTMLInputElement} */ const eOptionCount = document.querySelector("input#iban-generator-option-count"); - /** @type {HTMLInputElement} */ - const eOptionPrettyPrint = document.querySelector("input#iban-generator-option-pretty"); + + ///** @type {HTMLInputElement} */ + //const eOptionPreferRandom = document.querySelector("input#iban-generator-option-prefer-random"); /** @type {HTMLInputElement} */ const eOptionPreferNumbers = document.querySelector("input#iban-generator-option-prefer-numbers"); + /** @type {HTMLInputElement} */ + const eOptionPreferLetters = document.querySelector("input#iban-generator-option-prefer-letters"); + + /** @type {HTMLInputElement} */ + const eOptionFormatNone = document.querySelector("input#iban-generator-option-format-none"); + /** @type {HTMLInputElement} */ + const eOptionFormatStandard = document.querySelector("input#iban-generator-option-format-standard"); + /** @type {HTMLInputElement} */ + const eOptionFormat4By4 = document.querySelector("input#iban-generator-option-format-4by4"); /** @type {HTMLElement} */ const eGenerateButton = document.querySelector("#iban-generator-generate"); @@ -75,14 +85,14 @@ import {initCore} from "../../js/nibblepoker-core.mjs"; /** @returns {number} */ function getDesiredCount() { - return getInputCount(eOptionCount, 1, 1000); + return getInputCount(eOptionCount, 1, 10000); } function changeDesiredCount(difference = 0) { if(difference !== 0) { - eOptionCount.value = getDesiredCount(eOptionCount, 1, 1000) + difference; + eOptionCount.value = getDesiredCount(eOptionCount, 1, 10000) + difference; } - eOptionCount.value = getDesiredCount(eOptionCount, 1, 1000); + eOptionCount.value = getDesiredCount(eOptionCount, 1, 10000); } window.onload = function () { @@ -108,12 +118,28 @@ import {initCore} from "../../js/nibblepoker-core.mjs"; let desiredCount = getDesiredCount(); let preferNumbers = eOptionPreferNumbers.checked; - let prettyIban = eOptionPrettyPrint.checked; + let preferLetters = eOptionPreferLetters.checked; + + let ibanFormat = ( + eOptionFormatNone.checked ? 0 : ( + eOptionFormatStandard.checked ? 1 : ( + eOptionFormat4By4.checked ? 2 : 0 + ) + ) + ); /** @type {IbanSpecification[]} */ let targetSpecs; if(eOptionForEach.checked) { targetSpecs = Object.values(countriesSpecs); + + // BUGFIX: Removing unwanted specs. + if(!eOptionEnableSepa.checked) { + targetSpecs = targetSpecs.filter(ibanSpec => !ibanSpec.isSepa); + } + if(!eOptionEnableNonSepa.checked) { + targetSpecs = targetSpecs.filter(ibanSpec => ibanSpec.isSepa); + } } else { targetSpecs = [countriesSpecs[eOptionCountry.value]]; } @@ -123,15 +149,27 @@ import {initCore} from "../../js/nibblepoker-core.mjs"; return; } for(let i = 0; i < desiredCount; i++) { - if(prettyIban) { + if(ibanFormat === 1) { + // standard lastIBANs.push( spec.getFormattedIban( - new StandardIban(spec.countryCode, spec.generateRandomBban(preferNumbers), spec).toString() + new StandardIban(spec.countryCode, spec.generateRandomBban(preferNumbers, preferLetters), spec) + .toString() ) ); - } else { + } else if(ibanFormat === 2) { + // 4-by-4 lastIBANs.push( - new StandardIban(spec.countryCode, spec.generateRandomBban(preferNumbers), spec).toString() + new StandardIban(spec.countryCode, spec.generateRandomBban(preferNumbers, preferLetters), spec) + .toString() + .match(/.{1,4}/g) + .join(' ') + ); + } else { + // none + lastIBANs.push( + new StandardIban(spec.countryCode, spec.generateRandomBban(preferNumbers, preferLetters), spec) + .toString() ); } } diff --git a/static/resources/NibblePoker/libs/iban.mjs b/static/resources/NibblePoker/libs/iban.mjs index 927ba99..e961168 100644 --- a/static/resources/NibblePoker/libs/iban.mjs +++ b/static/resources/NibblePoker/libs/iban.mjs @@ -269,7 +269,7 @@ export class IbanSpecification { return iban.match(/.{1,4}/g).join(' '); } - generateRandomBban(preferNumbers = false) { + generateRandomBban(preferNumbers = false, preferLetters = false) { let returnedBban = ""; let patternParts = ("_" + this.bbanFormat + "0").split("!"); @@ -291,7 +291,11 @@ export class IbanSpecification { if(preferNumbers) { elementChoices = charsN; } else { - elementChoices = charsC; + if(preferLetters) { + elementChoices = charsA; + } else { + elementChoices = charsC; + } } break; case 'a': diff --git a/templates/applets/iban-generator.jinja b/templates/applets/iban-generator.jinja index 9729e39..7acc5f9 100644 --- a/templates/applets/iban-generator.jinja +++ b/templates/applets/iban-generator.jinja @@ -9,11 +9,6 @@ -
- - - -
@@ -113,17 +108,45 @@
- +
- - + + + +
+ + + +
- - + + + +
+ + + + +
+ + + + + +
+ + + + +
+ + + +