// Encoding documentation // https://en.wikipedia.org/wiki/MSI_Barcode#Character_set_and_binary_lookup import Barcode from "../Barcode.js"; class MSI extends Barcode{ constructor(data, options){ super(data, options); } encode(){ // Start bits var ret = "110"; for(var i = 0; i < this.data.length; i++){ // Convert the character to binary (always 4 binary digits) var digit = parseInt(this.data[i]); var bin = digit.toString(2); bin = addZeroes(bin, 4 - bin.length); // Add 100 for every zero and 110 for every 1 for(var b = 0; b < bin.length; b++){ ret += bin[b] == "0" ? "100" : "110"; } } // End bits ret += "1001"; return { data: ret, text: this.text }; } valid(){ return this.data.search(/^[0-9]+$/) !== -1; } } function addZeroes(number, n){ for(var i = 0; i < n; i++){ number = "0" + number; } return number; } export default MSI;