qrcode-generator-ts
Version:
Typescript QR Code generator based on https://github.com/kazuhikoarase/qrcode-generator
55 lines (44 loc) • 1.18 kB
text/typescript
import { QRData } from './QRData';
import { Mode } from './Mode';
import { BitBuffer } from './BitBuffer';
;
/**
* QRNumber
* @author Kazuhiko Arase
*/
export class QRNumber extends QRData {
constructor(data: string) {
super(Mode.MODE_NUMBER, data);
}
public write(buffer: BitBuffer): void {
var data = this.getData();
var i = 0;
while (i + 2 < data.length) {
buffer.put(QRNumber.strToNum(data.substring(i, i + 3)), 10);
i += 3;
}
if (i < data.length) {
if (data.length - i == 1) {
buffer.put(QRNumber.strToNum(data.substring(i, i + 1)), 4);
} else if (data.length - i == 2) {
buffer.put(QRNumber.strToNum(data.substring(i, i + 2)), 7);
}
}
}
public getLength(): number {
return this.getData().length;
}
private static strToNum(s: string): number {
var num = 0;
for (var i = 0; i < s.length; i += 1) {
num = num * 10 + QRNumber.chatToNum(s.charAt(i));
}
return num;
}
private static chatToNum(c: string): number {
if ('0' <= c && c <= '9') {
return c.charCodeAt(0) - '0'.charCodeAt(0);
}
throw 'illegal char :' + c;
}
}