qrcode-matrix 0.2.1 → 1.0.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/README.md +42 -36
  2. package/dist/qrcodeMatrix.umd.js +1298 -1297
  3. package/dist/qrcodeMatrix.umd.min.js +6 -0
  4. package/lib/encode/sjis.d.ts +2 -2
  5. package/lib/encode/sjisData.d.ts +2 -2
  6. package/lib/encode/utf-8.d.ts +2 -2
  7. package/lib/index.d.ts +5 -5
  8. package/lib/lib/BitBuffer.d.ts +9 -9
  9. package/lib/lib/QRMatrix.d.ts +10 -10
  10. package/lib/lib/bch-encode.d.ts +31 -31
  11. package/lib/lib/draw.d.ts +4 -4
  12. package/lib/modes/Alphanumeric.d.ts +3 -3
  13. package/lib/modes/Byte.d.ts +3 -3
  14. package/lib/modes/Kanji.d.ts +3 -3
  15. package/lib/modes/Numeric.d.ts +3 -3
  16. package/lib/modes/mode.d.ts +6 -6
  17. package/lib/qrcode.d.ts +19 -19
  18. package/{dist → lib}/qrcodeMatrix.es.js +1296 -1295
  19. package/{dist → lib}/qrcodeMatrix.js +1301 -1294
  20. package/lib/utils.d.ts +26 -26
  21. package/package.json +7 -8
  22. package/LICENSE +0 -21
  23. package/lib/encode/sjis.js +0 -113
  24. package/lib/encode/sjisData.js +0 -4
  25. package/lib/encode/utf-8.js +0 -23
  26. package/lib/index.js +0 -37
  27. package/lib/lib/BitBuffer.js +0 -39
  28. package/lib/lib/QRMatrix.js +0 -31
  29. package/lib/lib/bch-encode.js +0 -466
  30. package/lib/lib/draw.js +0 -49
  31. package/lib/modes/Alphanumeric.js +0 -49
  32. package/lib/modes/Byte.js +0 -25
  33. package/lib/modes/Kanji.js +0 -46
  34. package/lib/modes/Numeric.js +0 -43
  35. package/lib/modes/mode.js +0 -2
  36. package/lib/qrcode.js +0 -124
  37. package/lib/utils.js +0 -379
  38. package/src/.DS_Store +0 -0
  39. package/src/encode/.DS_Store +0 -0
  40. package/src/encode/sjis.ts +0 -121
  41. package/src/encode/sjisData.ts +0 -2
  42. package/src/encode/utf-8.ts +0 -30
  43. package/src/index.ts +0 -33
  44. package/src/lib/BitBuffer.ts +0 -70
  45. package/src/lib/QRMatrix.ts +0 -39
  46. package/src/lib/bch-encode.ts +0 -639
  47. package/src/lib/draw.ts +0 -77
  48. package/src/modes/Alphanumeric.ts +0 -55
  49. package/src/modes/Byte.ts +0 -30
  50. package/src/modes/Kanji.ts +0 -56
  51. package/src/modes/Numeric.ts +0 -47
  52. package/src/modes/mode.ts +0 -6
  53. package/src/qrcode.ts +0 -237
  54. package/src/utils.ts +0 -459
package/lib/qrcode.js DELETED
@@ -1,124 +0,0 @@
1
- "use strict";
2
- var __importStar = (this && this.__importStar) || function (mod) {
3
- if (mod && mod.__esModule) return mod;
4
- var result = {};
5
- if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
6
- result["default"] = mod;
7
- return result;
8
- };
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- const utils = __importStar(require("./utils"));
11
- function Class(QRModes, defOptions) {
12
- QRcode.QRModes = QRModes;
13
- let QRErrorCorrectionLevels = (QRcode.QRErrorCorrectionLevels = Object.keys(utils.QRErrorCorrectionLevel));
14
- function QRcode(options) {
15
- options = options || {};
16
- let _options = Object.assign({}, defOptions, options);
17
- return (function () {
18
- let _typeNumber = _options.typeNumber, _minTypeNumber = _options.minTypeNumber, _maskPattern = _options.maskPattern, _dataMode = _options.dataMode, _errorCorrectionLevel = (function () {
19
- let l = _options.errorCorrectionLevel + '';
20
- l = l.toUpperCase();
21
- return ~QRErrorCorrectionLevels.indexOf(l)
22
- ? utils.QRErrorCorrectionLevel[l]
23
- : utils.QRErrorCorrectionLevel.M;
24
- })();
25
- let _moduleCount = 0, _dataList = [], _dataCache = null;
26
- let makeImpl = function (test, maskPattern) {
27
- let matrix = utils.getBaseQRMatrix(_typeNumber);
28
- utils.setupTypeInfo(matrix, test, _errorCorrectionLevel, maskPattern);
29
- _typeNumber >= 7 && utils.setupTypeNumber(matrix, test);
30
- if (_dataCache == null) {
31
- _dataCache = utils.createData(_typeNumber, _errorCorrectionLevel, _dataList);
32
- }
33
- utils.setupData(matrix, _dataCache, maskPattern);
34
- return matrix;
35
- };
36
- var addData = function (data, mode) {
37
- mode = mode || _dataMode;
38
- var newData = null;
39
- if (typeof mode == 'function') {
40
- newData = mode(data);
41
- if (!(newData.getMode && newData.getLength && newData.write)) {
42
- throw 'mode invalid!';
43
- }
44
- }
45
- else {
46
- if (QRModes[mode]) {
47
- newData = QRModes[mode](data);
48
- }
49
- else {
50
- throw 'mode type invalid! mode is ' + mode;
51
- }
52
- }
53
- _dataList.push(newData);
54
- _dataCache = null;
55
- };
56
- var make = function () {
57
- if (_typeNumber < 1) {
58
- var typeNumber = _minTypeNumber ? _minTypeNumber : 1;
59
- for (; typeNumber < 40; typeNumber++) {
60
- var buffer = utils.getBufferForModes(typeNumber, _dataList);
61
- var totalDataCount = utils.getMaxDataCount(typeNumber, _errorCorrectionLevel);
62
- if (buffer.getLengthInBits() <= totalDataCount * 8) {
63
- break;
64
- }
65
- }
66
- _typeNumber = typeNumber;
67
- }
68
- _moduleCount = _typeNumber * 4 + 17;
69
- if (_maskPattern === 'random') {
70
- _maskPattern = ~~(Math.random() * (7 + 1));
71
- }
72
- else if (0 <= _maskPattern && _maskPattern <= 7) {
73
- _maskPattern = Number(_maskPattern) >> 0;
74
- }
75
- else {
76
- _maskPattern = (function () {
77
- var minLostPoint = 0;
78
- var pattern = 0;
79
- for (var i = 0; i < 8; i += 1) {
80
- var map = makeImpl(true, i);
81
- var lostPoint = utils.getLostPoint(map);
82
- if (i == 0 || minLostPoint > lostPoint) {
83
- minLostPoint = lostPoint;
84
- pattern = i;
85
- }
86
- }
87
- return pattern;
88
- })();
89
- }
90
- var map = makeImpl(false, _maskPattern);
91
- return map;
92
- };
93
- var splitMake = function () {
94
- var obj = {};
95
- obj.all = make();
96
- obj.allDiscover = utils.getBaseQRMatrix(_typeNumber);
97
- obj.positionProbe = utils.mapInit(_moduleCount);
98
- utils.setupAllPositionProbePattern(obj.positionProbe);
99
- obj.positionAdjust = utils.mapInit(_moduleCount);
100
- utils.setupPositionAdjustPattern(obj.positionAdjust);
101
- obj.timing = utils.mapInit(_moduleCount);
102
- utils.setupTimingPattern(obj.timing);
103
- obj.data = utils.compareMap(obj.all, obj.allDiscover, 'xor');
104
- return obj;
105
- };
106
- var setData = function (data, mode) {
107
- _dataList = [];
108
- addData(data, mode);
109
- };
110
- var _this = function (str, mode) {
111
- setData(str, mode);
112
- return make();
113
- };
114
- _this.setData = setData;
115
- _this.addData = addData;
116
- _this.make = make;
117
- _this.splitMake = splitMake;
118
- return _this;
119
- })();
120
- }
121
- return QRcode;
122
- }
123
- ;
124
- exports.default = Class;
package/lib/utils.js DELETED
@@ -1,379 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const BitBuffer_1 = __importDefault(require("./lib/BitBuffer"));
7
- exports.BitBuffer = BitBuffer_1.default;
8
- const QRMatrix_1 = __importDefault(require("./lib/QRMatrix"));
9
- const draw_1 = require("./lib/draw");
10
- const bch_encode_1 = require("./lib/bch-encode");
11
- exports.QRErrorCorrectionLevel = bch_encode_1.QRErrorCorrectionLevel;
12
- exports.QRMode = bch_encode_1.QRMode;
13
- exports.getRSBlocks = bch_encode_1.getRSBlocks;
14
- exports.getLengthInBits = bch_encode_1.getLengthInBits;
15
- exports.getBufferForModes = bch_encode_1.getBufferForModes;
16
- exports.getMaxDataCount = bch_encode_1.getMaxDataCount;
17
- exports.createData = bch_encode_1.createData;
18
- const QRMaskPattern = {
19
- PATTERN000: 0,
20
- PATTERN001: 1,
21
- PATTERN010: 2,
22
- PATTERN011: 3,
23
- PATTERN100: 4,
24
- PATTERN101: 5,
25
- PATTERN110: 6,
26
- PATTERN111: 7
27
- };
28
- exports.QRMaskPattern = QRMaskPattern;
29
- const PATTERN_POSITION_TABLE = [
30
- [],
31
- [6, 18],
32
- [6, 22],
33
- [6, 26],
34
- [6, 30],
35
- [6, 34],
36
- [6, 22, 38],
37
- [6, 24, 42],
38
- [6, 26, 46],
39
- [6, 28, 50],
40
- [6, 30, 54],
41
- [6, 32, 58],
42
- [6, 34, 62],
43
- [6, 26, 46, 66],
44
- [6, 26, 48, 70],
45
- [6, 26, 50, 74],
46
- [6, 30, 54, 78],
47
- [6, 30, 56, 82],
48
- [6, 30, 58, 86],
49
- [6, 34, 62, 90],
50
- [6, 28, 50, 72, 94],
51
- [6, 26, 50, 74, 98],
52
- [6, 30, 54, 78, 102],
53
- [6, 28, 54, 80, 106],
54
- [6, 32, 58, 84, 110],
55
- [6, 30, 58, 86, 114],
56
- [6, 34, 62, 90, 118],
57
- [6, 26, 50, 74, 98, 122],
58
- [6, 30, 54, 78, 102, 126],
59
- [6, 26, 52, 78, 104, 130],
60
- [6, 30, 56, 82, 108, 134],
61
- [6, 34, 60, 86, 112, 138],
62
- [6, 30, 58, 86, 114, 142],
63
- [6, 34, 62, 90, 118, 146],
64
- [6, 30, 54, 78, 102, 126, 150],
65
- [6, 24, 50, 76, 102, 128, 154],
66
- [6, 28, 54, 80, 106, 132, 158],
67
- [6, 32, 58, 84, 110, 136, 162],
68
- [6, 26, 54, 82, 110, 138, 166],
69
- [6, 30, 58, 86, 114, 142, 170]
70
- ].map(v => new Uint8Array(v));
71
- const getQRMaskFunction = (function () {
72
- const QRMaskFunctions = [
73
- function (i, j) {
74
- return (i + j) % 2 == 0;
75
- },
76
- function (i, j) {
77
- return i % 2 == 0;
78
- },
79
- function (i, j) {
80
- return j % 3 == 0;
81
- },
82
- function (i, j) {
83
- return (i + j) % 3 == 0;
84
- },
85
- function (i, j) {
86
- return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 == 0;
87
- },
88
- function (i, j) {
89
- return ((i * j) % 2) + ((i * j) % 3) == 0;
90
- },
91
- function (i, j) {
92
- return (((i * j) % 2) + ((i * j) % 3)) % 2 == 0;
93
- },
94
- function (i, j) {
95
- return (((i * j) % 3) + ((i + j) % 2)) % 2 == 0;
96
- }
97
- ];
98
- return function (maskPattern) {
99
- var fn = QRMaskFunctions[maskPattern];
100
- if (!fn)
101
- throw new Error('maskPattern:' + maskPattern);
102
- return fn;
103
- };
104
- })();
105
- function size2TypeNumber(size) {
106
- return (size - 17) / 4;
107
- }
108
- function typeNumber2Size(typeNumber) {
109
- return typeNumber * 4 + 17;
110
- }
111
- const setupPositionProbePattern = function (matrix, row, col) {
112
- draw_1.rectBorder(matrix, 0, row - 1, col - 1, 9, 9);
113
- draw_1.rectBorder(matrix, 1, row, col, 7, 7);
114
- draw_1.rectBorder(matrix, 0, row + 1, col + 1, 5, 5);
115
- draw_1.fillRect(matrix, 1, row + 2, col + 2, 3, 3);
116
- };
117
- const setupAllPositionProbePattern = function (matrix) {
118
- let size = matrix.size;
119
- setupPositionProbePattern(matrix, 0, 0);
120
- setupPositionProbePattern(matrix, size - 7, 0);
121
- setupPositionProbePattern(matrix, 0, size - 7);
122
- };
123
- exports.setupAllPositionProbePattern = setupAllPositionProbePattern;
124
- const setupPositionAdjustPattern = function (matrix, typeNumber) {
125
- let { size } = matrix;
126
- typeNumber = typeNumber || size2TypeNumber(size);
127
- let pos = PATTERN_POSITION_TABLE[typeNumber - 1];
128
- for (let i = 0; i < pos.length; i++) {
129
- for (let j = 0; j < pos.length; j++) {
130
- let row = pos[i];
131
- let col = pos[j];
132
- if (row < 9 || col < 9) {
133
- let m = size - 9;
134
- if ((row < 9 || row > m) && (col < 9 || col > m))
135
- continue;
136
- }
137
- for (let r = -2; r <= 2; r++) {
138
- for (let c = -2; c <= 2; c++) {
139
- if (r == -2 || r == 2 || c == -2 || c == 2 || (r == 0 && c == 0)) {
140
- matrix.set(col + c, row + r, 1);
141
- }
142
- else {
143
- matrix.set(col + c, row + r, 0);
144
- }
145
- }
146
- }
147
- }
148
- }
149
- };
150
- exports.setupPositionAdjustPattern = setupPositionAdjustPattern;
151
- const setupTimingPattern = function (matrix) {
152
- let mapLength = matrix.width;
153
- for (let r = 8; r < mapLength - 8; r += 1) {
154
- matrix.set(r, 6, r % 2 == 0);
155
- matrix.set(6, r, r % 2 == 0);
156
- }
157
- };
158
- exports.setupTimingPattern = setupTimingPattern;
159
- const setupTypeInfo = function (matrix, test, errorCorrectionLevel, maskPattern) {
160
- let mapLength = matrix.width;
161
- let data = (errorCorrectionLevel << 3) | maskPattern;
162
- let bits = bch_encode_1.getBCHTypeInfo(data);
163
- for (let i = 0; i < 15; i += 1) {
164
- let mod = !test && ((bits >> i) & 1) == 1;
165
- if (i < 6) {
166
- matrix.set(8, i, mod);
167
- }
168
- else if (i < 8) {
169
- matrix.set(8, i + 1, mod);
170
- }
171
- else {
172
- matrix.set(8, mapLength - 15 + i, mod);
173
- }
174
- if (i < 8) {
175
- matrix.set(mapLength - i - 1, 8, mod);
176
- }
177
- else if (i < 9) {
178
- matrix.set(15 - i, 8, mod);
179
- }
180
- else {
181
- matrix.set(15 - i - 1, 8, mod);
182
- }
183
- }
184
- matrix.set(8, mapLength - 8, !test);
185
- };
186
- exports.setupTypeInfo = setupTypeInfo;
187
- var setupTypeNumber = function (matrix, test, typeNumber) {
188
- let mapLength = matrix.width;
189
- typeNumber = typeNumber || size2TypeNumber(mapLength);
190
- let bits = bch_encode_1.getBCHTypeNumber(typeNumber);
191
- for (let i = 0; i < 18; i += 1) {
192
- let mod = !test && ((bits >> i) & 1) == 1;
193
- matrix.set((i % 3) + mapLength - 8 - 3, Math.floor(i / 3), mod);
194
- matrix.set(Math.floor(i / 3), (i % 3) + mapLength - 8 - 3, mod);
195
- }
196
- };
197
- exports.setupTypeNumber = setupTypeNumber;
198
- function mapInit(size) {
199
- return new QRMatrix_1.default(size);
200
- }
201
- exports.mapInit = mapInit;
202
- const MatrixCache = [];
203
- function createQRmatrix(typeNumber) {
204
- let size = typeNumber2Size(typeNumber);
205
- let matrix = mapInit(size);
206
- setupAllPositionProbePattern(matrix);
207
- setupPositionAdjustPattern(matrix);
208
- setupTimingPattern(matrix);
209
- return matrix;
210
- }
211
- function getBaseQRMatrix(typeNumber) {
212
- let matrix = MatrixCache[typeNumber] || (MatrixCache[typeNumber] = createQRmatrix(typeNumber));
213
- return matrix.clone();
214
- }
215
- exports.getBaseQRMatrix = getBaseQRMatrix;
216
- function copyMap(matrix) {
217
- return matrix.clone();
218
- }
219
- exports.copyMap = copyMap;
220
- function compareMap(m1, m2, type) {
221
- type = type || 'and';
222
- if (m1.total !== m2.total)
223
- throw 'Different size';
224
- let matrix = new QRMatrix_1.default(m1.size);
225
- let _d1 = m1.getPrototypeData();
226
- let _m1 = m1.markMatrix.getPrototypeData();
227
- let _d2 = m2.getPrototypeData();
228
- let _m2 = m2.markMatrix.getPrototypeData();
229
- let md = matrix.getPrototypeData();
230
- let _md = matrix.markMatrix.getPrototypeData();
231
- for (let i = 0; i < _d1.length; i++) {
232
- switch (type) {
233
- case 'or':
234
- case '|':
235
- var mk = (_md[i] = _m1[i] | _m2[i]);
236
- _md[i] = (_m1[i] | _m2[i]) & mk;
237
- break;
238
- case 'xor':
239
- case '^':
240
- var mk = (_md[i] = _m1[i] ^ _m2[i]);
241
- md[i] = (_d1[i] ^ _d2[i]) & mk;
242
- break;
243
- case 'and':
244
- case '&':
245
- var mk = (_md[i] = _m1[i] & _m2[i]);
246
- md[i] = _d1[i] & _d2[i] & mk;
247
- break;
248
- default:
249
- throw 'type err!';
250
- }
251
- }
252
- return matrix;
253
- }
254
- exports.compareMap = compareMap;
255
- const getLostPoint = function (matrix) {
256
- let size = matrix.width;
257
- let lostPoint = 0;
258
- let isDark = function (row, col) {
259
- return matrix.get(col, row);
260
- };
261
- for (let row = 0; row < size; row += 1) {
262
- for (let col = 0; col < size; col += 1) {
263
- let sameCount = 0;
264
- let dark = isDark(row, col);
265
- for (let r = -1; r <= 1; r += 1) {
266
- if (row + r < 0 || size <= row + r) {
267
- continue;
268
- }
269
- for (let c = -1; c <= 1; c += 1) {
270
- if (col + c < 0 || size <= col + c) {
271
- continue;
272
- }
273
- if (r == 0 && c == 0) {
274
- continue;
275
- }
276
- if (dark == isDark(row + r, col + c)) {
277
- sameCount += 1;
278
- }
279
- }
280
- }
281
- if (sameCount > 5) {
282
- lostPoint += 3 + sameCount - 5;
283
- }
284
- }
285
- }
286
- for (var row = 0; row < size - 1; row += 1) {
287
- for (var col = 0; col < size - 1; col += 1) {
288
- var count = 0;
289
- if (isDark(row, col))
290
- count += 1;
291
- if (isDark(row + 1, col))
292
- count += 1;
293
- if (isDark(row, col + 1))
294
- count += 1;
295
- if (isDark(row + 1, col + 1))
296
- count += 1;
297
- if (count == 0 || count == 4) {
298
- lostPoint += 3;
299
- }
300
- }
301
- }
302
- for (var row = 0; row < size; row += 1) {
303
- for (var col = 0; col < size - 6; col += 1) {
304
- if (isDark(row, col) &&
305
- !isDark(row, col + 1) &&
306
- isDark(row, col + 2) &&
307
- isDark(row, col + 3) &&
308
- isDark(row, col + 4) &&
309
- !isDark(row, col + 5) &&
310
- isDark(row, col + 6)) {
311
- lostPoint += 40;
312
- }
313
- }
314
- }
315
- for (var col = 0; col < size; col += 1) {
316
- for (var row = 0; row < size - 6; row += 1) {
317
- if (isDark(row, col) &&
318
- !isDark(row + 1, col) &&
319
- isDark(row + 2, col) &&
320
- isDark(row + 3, col) &&
321
- isDark(row + 4, col) &&
322
- !isDark(row + 5, col) &&
323
- isDark(row + 6, col)) {
324
- lostPoint += 40;
325
- }
326
- }
327
- }
328
- var darkCount = 0;
329
- for (var col = 0; col < size; col += 1) {
330
- for (var row = 0; row < size; row += 1) {
331
- if (isDark(row, col)) {
332
- darkCount += 1;
333
- }
334
- }
335
- }
336
- var ratio = Math.abs((100 * darkCount) / size / size - 50) / 5;
337
- lostPoint += ratio * 10;
338
- return lostPoint;
339
- };
340
- exports.getLostPoint = getLostPoint;
341
- const setupData = function (matrix, data, maskPattern) {
342
- let _moduleCount = matrix.width;
343
- let inc = -1;
344
- let row = _moduleCount - 1;
345
- let bitIndex = 7;
346
- let byteIndex = 0;
347
- let maskFunc = getQRMaskFunction(maskPattern);
348
- for (var col = _moduleCount - 1; col > 0; col -= 2) {
349
- if (col == 6)
350
- col -= 1;
351
- while (true) {
352
- for (var c = 0; c < 2; c += 1) {
353
- if (!matrix.has(col - c, row)) {
354
- var dark = false;
355
- if (byteIndex < data.length) {
356
- dark = ((data[byteIndex] >>> bitIndex) & 1) == 1;
357
- }
358
- var mask = maskFunc(row, col - c);
359
- if (mask) {
360
- dark = !dark;
361
- }
362
- matrix.set(col - c, row, dark);
363
- bitIndex -= 1;
364
- if (bitIndex == -1) {
365
- byteIndex += 1;
366
- bitIndex = 7;
367
- }
368
- }
369
- }
370
- row += inc;
371
- if (row < 0 || _moduleCount <= row) {
372
- row -= inc;
373
- inc = -inc;
374
- break;
375
- }
376
- }
377
- }
378
- };
379
- exports.setupData = setupData;
package/src/.DS_Store DELETED
Binary file
Binary file
@@ -1,121 +0,0 @@
1
- import { SJIS_BASE64, SJIS_COUNT } from './sjisData';
2
-
3
- var base64DecodeInputStream = function(str) {
4
- var _str = str;
5
- var _pos = 0;
6
- var _buffer = 0;
7
- var _buflen = 0;
8
-
9
- var _this = {
10
- read: function() {
11
- while (_buflen < 8) {
12
- if (_pos >= _str.length) {
13
- if (_buflen == 0) {
14
- return -1;
15
- }
16
- throw 'unexpected end of file./' + _buflen;
17
- }
18
-
19
- var c = _str.charAt(_pos);
20
- _pos += 1;
21
-
22
- if (c == '=') {
23
- _buflen = 0;
24
- return -1;
25
- } else if (c.match(/^\s$/)) {
26
- // ignore if whitespace.
27
- continue;
28
- }
29
-
30
- _buffer = (_buffer << 6) | decode(c.charCodeAt(0));
31
- _buflen += 6;
32
- }
33
-
34
- var n = (_buffer >>> (_buflen - 8)) & 0xff;
35
- _buflen -= 8;
36
- return n;
37
- }
38
- };
39
-
40
- var decode = function(c) {
41
- if (0x41 <= c && c <= 0x5a) {
42
- return c - 0x41;
43
- } else if (0x61 <= c && c <= 0x7a) {
44
- return c - 0x61 + 26;
45
- } else if (0x30 <= c && c <= 0x39) {
46
- return c - 0x30 + 52;
47
- } else if (c == 0x2b) {
48
- return 62;
49
- } else if (c == 0x2f) {
50
- return 63;
51
- } else {
52
- throw 'c:' + c;
53
- }
54
- };
55
-
56
- return _this;
57
- };
58
-
59
- var createStringToBytes = function(unicodeData, numChars) {
60
- // create conversion map.
61
-
62
- var unicodeMap = (function() {
63
- var bin = base64DecodeInputStream(unicodeData);
64
- var read = function() {
65
- var b = bin.read();
66
- if (b == -1) throw 'eof';
67
- return b;
68
- };
69
-
70
- var count = 0;
71
- var unicodeMap = {};
72
- while (true) {
73
- var b0 = bin.read();
74
- if (b0 == -1) break;
75
- var b1 = read();
76
- var b2 = read();
77
- var b3 = read();
78
- var k = String.fromCharCode((b0 << 8) | b1);
79
- var v = (b2 << 8) | b3;
80
- unicodeMap[k] = v;
81
- count += 1;
82
- }
83
- if (count != numChars) {
84
- throw count + ' != ' + numChars;
85
- }
86
-
87
- return unicodeMap;
88
- })();
89
-
90
- var unknownChar = '?'.charCodeAt(0);
91
-
92
- return function(s) {
93
- var bytes = [];
94
- for (var i = 0; i < s.length; i += 1) {
95
- var c = s.charCodeAt(i);
96
- if (c < 128) {
97
- bytes.push(c);
98
- } else {
99
- var b = unicodeMap[s.charAt(i)];
100
- if (typeof b == 'number') {
101
- if ((b & 0xff) == b) {
102
- // 1byte
103
- bytes.push(b);
104
- } else {
105
- // 2bytes
106
- bytes.push(b >>> 8);
107
- bytes.push(b & 0xff);
108
- }
109
- } else {
110
- bytes.push(unknownChar);
111
- }
112
- }
113
- }
114
- return bytes;
115
- };
116
- };
117
-
118
- var SJIS = createStringToBytes(SJIS_BASE64, SJIS_COUNT);
119
-
120
- // module.exports = SJIS;
121
- export default SJIS;