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 @@
-
-
-
-
-