Buckets:
| 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); | |
| } | |
| }; | |
| }, | |
| fill = function(length, value) { | |
| var arr = new Array(length); | |
| for (var i = 0; i < length; i++) { | |
| arr[i] = value; | |
| } | |
| return arr; | |
| }; | |
| module.exports = { | |
| error: QRErrorCorrectLevel.L, | |
| generate: function (input, opts, cb) { | |
| if (typeof opts === 'function') { | |
| cb = opts; | |
| opts = {}; | |
| } | |
| var qrcode = new QRCode(-1, this.error); | |
| qrcode.addData(input); | |
| qrcode.make(); | |
| var output = ''; | |
| if (opts && opts.small) { | |
| var BLACK = true, WHITE = false; | |
| var moduleCount = qrcode.getModuleCount(); | |
| var moduleData = qrcode.modules.slice(); | |
| var oddRow = moduleCount % 2 === 1; | |
| if (oddRow) { | |
| moduleData.push(fill(moduleCount, WHITE)); | |
| } | |
| var platte= { | |
| WHITE_ALL: '\u2588', | |
| WHITE_BLACK: '\u2580', | |
| BLACK_WHITE: '\u2584', | |
| BLACK_ALL: ' ', | |
| }; | |
| var borderTop = repeat(platte.BLACK_WHITE).times(moduleCount + 3); | |
| var borderBottom = repeat(platte.WHITE_BLACK).times(moduleCount + 3); | |
| output += borderTop + '\n'; | |
| for (var row = 0; row < moduleCount; row += 2) { | |
| output += platte.WHITE_ALL; | |
| for (var col = 0; col < moduleCount; col++) { | |
| if (moduleData[row][col] === WHITE && moduleData[row + 1][col] === WHITE) { | |
| output += platte.WHITE_ALL; | |
| } else if (moduleData[row][col] === WHITE && moduleData[row + 1][col] === BLACK) { | |
| output += platte.WHITE_BLACK; | |
| } else if (moduleData[row][col] === BLACK && moduleData[row + 1][col] === WHITE) { | |
| output += platte.BLACK_WHITE; | |
| } else { | |
| output += platte.BLACK_ALL; | |
| } | |
| } | |
| output += platte.WHITE_ALL + '\n'; | |
| } | |
| if (!oddRow) { | |
| output += borderBottom; | |
| } | |
| } else { | |
| var 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; | |
| } | |
| }; | |
Xet Storage Details
- Size:
- 3.12 kB
- Xet hash:
- 01f3ca2cb6d8c8dbe8243bfd8d328bfdc5a9b50f80aaac5a33cb3cc85d81e421
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.