projects
/
crowdnode.js
/
.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
1fad82b
)
feat: add 'mini' (double quad-blocks) ascii QR output
origin/mini-qr
author
AJ ONeal
<coolaj86@gmail.com>
Sat, 25 Jun 2022 06:54:54 +0000
(
00:54
-0600)
committer
AJ ONeal
<coolaj86@gmail.com>
Sat, 25 Jun 2022 06:55:40 +0000
(
00:55
-0600)
bin/crowdnode.js
patch
|
blob
|
history
lib/qr.js
patch
|
blob
|
history
diff --git
a/bin/crowdnode.js
b/bin/crowdnode.js
index d8697d95594b95dfdae417e12cba0b8f909953fa..7815cbf5c329d4873cc679abfc48e13a4c3c6ed7 100755
(executable)
--- a/
bin/crowdnode.js
+++ b/
bin/crowdnode.js
@@
-337,7
+337,7
@@
function showQr(addr, duffs = 0) {
dashUri += `?amount=${dashAmount}`;
}
dashUri += `?amount=${dashAmount}`;
}
- let dashQr = Qr.ascii(dashUri, { indent: 4, size: "mi
cro
" });
+ let dashQr = Qr.ascii(dashUri, { indent: 4, size: "mi
ni
" });
let addrPad = Math.ceil((qrWidth - dashUri.length) / 2);
console.info(dashQr);
let addrPad = Math.ceil((qrWidth - dashUri.length) / 2);
console.info(dashQr);
diff --git
a/lib/qr.js
b/lib/qr.js
index 632218b6e87ab9969684c9c7b75ef4f367977876..9469b47efadeaf02ffdc935e6bc68cc5c968971a 100644
(file)
--- a/
lib/qr.js
+++ b/
lib/qr.js
@@
-35,60
+35,70
@@
Qr._create = function (data, opts) {
};
/**
};
/**
- * @type
{Object.<String, String>}
+ * @type
def {Object.<String, String>} BlockMap
*/
*/
-let microMap = {
- // top-left, top-right, bottom-left, bottom-right
- 0b0000: " ",
- //
- 0b0001: "▗",
- //
- 0b0010: "▖",
- //
- 0b0011: "▄",
- //
- 0b0100: "▝",
- //
- 0b0101: "▐",
- //
- 0b0110: "▞",
- //
- 0b0111: "▟",
- //
- 0b1000: "▘",
- //
- 0b1001: "▚",
- //
- 0b1010: "▌",
- //
- 0b1011: "▙",
- //
- 0b1100: "▀",
- //
- 0b1101: "▜",
- //
- 0b1110: "▛",
- //
- 0b1111: "█",
+
+/**
+ * Encoded as top-left, top-right, bottom-left, bottom-right
+ * @type {Object.<"mini" | "micro", BlockMap>}
+ */
+let charMaps = {
+ micro: {
+ 0b0000: " ",
+ 0b0001: "▗",
+ 0b0010: "▖",
+ 0b0011: "▄",
+ 0b0100: "▝",
+ 0b0101: "▐",
+ 0b0110: "▞",
+ 0b0111: "▟",
+ 0b1000: "▘",
+ 0b1001: "▚",
+ 0b1010: "▌",
+ 0b1011: "▙",
+ 0b1100: "▀",
+ 0b1101: "▜",
+ 0b1110: "▛",
+ 0b1111: "█",
+ },
+ mini: {
+ 0b0000: " ",
+ 0b0001: " ▄",
+ 0b0010: "▄ ",
+ 0b0011: "▄▄",
+ 0b0100: " ▀",
+ 0b0101: " █",
+ 0b0110: "▄▀",
+ 0b0111: "▄█",
+ 0b1000: "▀ ",
+ 0b1001: "▀▄",
+ 0b1010: "█ ",
+ 0b1011: "█▄",
+ 0b1100: "▀▀",
+ 0b1101: "▀█",
+ 0b1110: "█▀",
+ 0b1111: "██",
+ },
};
/**
* @param {String} data
* @param {QrOpts} opts
*/
};
/**
* @param {String} data
* @param {QrOpts} opts
*/
-Qr.microAscii = function (data, opts) {
+Qr.quadAscii = function (data, opts) {
+ let charMap = charMaps[opts.size || "mini"];
let qrcode = Qr._create(data, opts);
let indent = opts?.indent ?? 4;
let modules = qrcode.qrcode.modules;
let qrcode = Qr._create(data, opts);
let indent = opts?.indent ?? 4;
let modules = qrcode.qrcode.modules;
- let ascii = ``.padStart(indent, " ");
+ let ascii = ``.padStart(indent
- 1
, " ");
let length = modules.length;
for (let y = 0; y < length; y += 2) {
for (let x = 0; x < length; x += 2) {
let count = 0;
// qr codes can be odd numbers
if (x >= length) {
let length = modules.length;
for (let y = 0; y < length; y += 2) {
for (let x = 0; x < length; x += 2) {
let count = 0;
// qr codes can be odd numbers
if (x >= length) {
- ascii +=
micro
Map[count];
+ ascii +=
char
Map[count];
continue;
}
if (modules[x][y]) {
continue;
}
if (modules[x][y]) {
@@
-99,7
+109,7
@@
Qr.microAscii = function (data, opts) {
}
if (x + 1 >= length) {
}
if (x + 1 >= length) {
- ascii +=
micro
Map[count];
+ ascii +=
char
Map[count];
continue;
}
if (modules[x + 1][y]) {
continue;
}
if (modules[x + 1][y]) {
@@
-108,11
+118,11
@@
Qr.microAscii = function (data, opts) {
if (modules[x + 1][y + 1]) {
count += 1;
}
if (modules[x + 1][y + 1]) {
count += 1;
}
- ascii +=
micro
Map[count];
+ ascii +=
char
Map[count];
}
ascii += `\n`.padEnd(indent, " ");
}
}
ascii += `\n`.padEnd(indent, " ");
}
- return
" ".padEnd(indent - 1, " ") + ascii.trim(
);
+ return
ascii.replace(/\s+$/, ""
);
};
/**
};
/**
@@
-120,8
+130,8
@@
Qr.microAscii = function (data, opts) {
* @param {QrOpts} opts
*/
Qr.ascii = function (data, opts) {
* @param {QrOpts} opts
*/
Qr.ascii = function (data, opts) {
- if (
"micro" ===
opts.size) {
- return Qr.
micro
Ascii(data, opts);
+ if (opts.size) {
+ return Qr.
quad
Ascii(data, opts);
}
let qrcode = Qr._create(data, opts);
}
let qrcode = Qr._create(data, opts);