45 lines
1.1 KiB
JavaScript
45 lines
1.1 KiB
JavaScript
|
var QRCode = require('./../vendor/QRCode'),
|
||
|
QRErrorCorrectLevel = require('./../vendor/QRCode/QRErrorCorrectLevel'),
|
||
|
black = "\033[40m \033[0m",
|
||
|
white = "\033[47m \033[0m",
|
||
|
toCell = function (isBlack) {
|
||
|
return isBlack ? black : white;
|
||
|
},
|
||
|
repeat = function (color) {
|
||
|
return {
|
||
|
times: function (count) {
|
||
|
return new Array(count).join(color);
|
||
|
}
|
||
|
};
|
||
|
};
|
||
|
|
||
|
module.exports = {
|
||
|
|
||
|
error: QRErrorCorrectLevel.L,
|
||
|
|
||
|
generate: function (input, cb) {
|
||
|
var qrcode = new QRCode(-1, this.error);
|
||
|
qrcode.addData(input);
|
||
|
qrcode.make();
|
||
|
|
||
|
var output = '',
|
||
|
border = repeat(white).times(qrcode.getModuleCount() + 3);
|
||
|
|
||
|
output += border + '\n';
|
||
|
qrcode.modules.forEach(function (row) {
|
||
|
output += white;
|
||
|
output += row.map(toCell).join('');
|
||
|
output += white + '\n';
|
||
|
});
|
||
|
output += border;
|
||
|
|
||
|
if (cb) cb(output);
|
||
|
else console.log(output);
|
||
|
},
|
||
|
|
||
|
setErrorLevel: function (error) {
|
||
|
this.error = QRErrorCorrectLevel[error] || this.error;
|
||
|
}
|
||
|
|
||
|
};
|