node-ejs-renderer/node_modules/qrcode/lib/renderer/terminal/terminal.js
2024-06-09 13:55:01 -04:00

50 lines
1.2 KiB
JavaScript

// let Utils = require('./utils')
exports.render = function (qrData, options, cb) {
const size = qrData.modules.size
const data = qrData.modules.data
// let opts = Utils.getOptions(options)
// use same scheme as https://github.com/gtanner/qrcode-terminal because it actually works! =)
const black = '\x1b[40m \x1b[0m'
const white = '\x1b[47m \x1b[0m'
let output = ''
const hMargin = Array(size + 3).join(white)
const vMargin = Array(2).join(white)
output += hMargin + '\n'
for (let i = 0; i < size; ++i) {
output += white
for (let j = 0; j < size; j++) {
// let topModule = data[i * size + j]
// let bottomModule = data[(i + 1) * size + j]
output += data[i * size + j] ? black : white// getBlockChar(topModule, bottomModule)
}
// output += white+'\n'
output += vMargin + '\n'
}
output += hMargin + '\n'
if (typeof cb === 'function') {
cb(null, output)
}
return output
}
/*
exports.renderToFile = function renderToFile (path, qrData, options, cb) {
if (typeof cb === 'undefined') {
cb = options
options = undefined
}
let fs = require('fs')
let utf8 = exports.render(qrData, options)
fs.writeFile(path, utf8, cb)
}
*/