import { START_BIN, END_BIN, BINARIES } from './constants';
|
import Barcode from '../Barcode';
|
|
class ITF extends Barcode {
|
|
valid() {
|
return this.data.search(/^([0-9]{2})+$/) !== -1;
|
}
|
|
encode() {
|
// Calculate all the digit pairs
|
const encoded = this.data
|
.match(/.{2}/g)
|
.map(pair => this.encodePair(pair))
|
.join('');
|
|
return {
|
data: START_BIN + encoded + END_BIN,
|
text: this.text
|
};
|
}
|
|
// Calculate the data of a number pair
|
encodePair(pair) {
|
const second = BINARIES[pair[1]];
|
|
return BINARIES[pair[0]]
|
.split('')
|
.map((first, idx) => (
|
(first === '1' ? '111' : '1') +
|
(second[idx] === '1' ? '000' : '0')
|
))
|
.join('');
|
}
|
}
|
|
export default ITF;
|