puzzle-lib 1.5.0 → 1.7.0
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.
- package/LICENSE +21 -21
- package/README.md +38 -38
- package/build/src/Braille/BrailleCharacter.js +1 -0
- package/build/src/Braille/BrailleCharacter.js.map +1 -1
- package/build/src/Braille/BrailleData.js +1 -1
- package/build/src/Braille/BrailleData.js.map +1 -1
- package/build/src/Braille/BrailleDot.js +1 -1
- package/build/src/Braille/BrailleDot.js.map +1 -1
- package/build/src/Braille/BrailleEncoding.js +2 -1
- package/build/src/Braille/BrailleEncoding.js.map +1 -1
- package/build/src/Braille/BrailleStream.js +4 -4
- package/build/src/Braille/BrailleStream.js.map +1 -1
- package/build/src/Cipher/CaesarString.js +1 -0
- package/build/src/Cipher/CaesarString.js.map +1 -1
- package/build/src/Cipher/CaesarUtils.js +5 -5
- package/build/src/Cipher/CaesarUtils.js.map +1 -1
- package/build/src/Cipher/KeyedCipherStringBase.js +2 -0
- package/build/src/Cipher/KeyedCipherStringBase.js.map +1 -1
- package/build/src/Common/CharacterImage.js +2 -0
- package/build/src/Common/CharacterImage.js.map +1 -1
- package/build/src/Common/EncodingCategory.js +1 -1
- package/build/src/Common/EncodingCategory.js.map +1 -1
- package/build/src/Common/EncodingCharacterBase.js +3 -1
- package/build/src/Common/EncodingCharacterBase.js.map +1 -1
- package/build/src/Common/EncodingDataBase.js +1 -3
- package/build/src/Common/EncodingDataBase.js.map +1 -1
- package/build/src/Common/EncodingEntry.js +3 -0
- package/build/src/Common/EncodingEntry.js.map +1 -1
- package/build/src/Common/EncodingLookupResult.js +2 -4
- package/build/src/Common/EncodingLookupResult.js.map +1 -1
- package/build/src/Common/InlineSvg.js +3 -0
- package/build/src/Common/InlineSvg.js.map +1 -1
- package/build/src/Conversion/CharacterAutoConvert.js +2 -2
- package/build/src/Conversion/CharacterAutoConvert.js.map +1 -1
- package/build/src/Conversion/CharacterEncoding.js +1 -1
- package/build/src/Conversion/CharacterEncoding.js.map +1 -1
- package/build/src/Conversion/CharacterTableEntry.js +11 -5
- package/build/src/Conversion/CharacterTableEntry.js.map +1 -1
- package/build/src/Conversion/StringAutoConvert.js.map +1 -1
- package/build/src/Morse/MorseCharacter.js +9 -8
- package/build/src/Morse/MorseCharacter.js.map +1 -1
- package/build/src/Morse/MorseData.js +1 -1
- package/build/src/Morse/MorseData.js.map +1 -1
- package/build/src/Morse/MorseEncoding.js +1 -1
- package/build/src/Morse/MorseEncoding.js.map +1 -1
- package/build/src/Morse/MorseString.js +3 -2
- package/build/src/Morse/MorseString.js.map +1 -1
- package/build/src/Nato/NatoCharacter.js +2 -0
- package/build/src/Nato/NatoCharacter.js.map +1 -1
- package/build/src/Nato/NatoData.js +29 -31
- package/build/src/Nato/NatoData.js.map +1 -1
- package/build/src/NavalFlags/NavalFlags.js +31 -32
- package/build/src/NavalFlags/NavalFlags.js.map +1 -1
- package/build/src/Resistor/Resistor.js +28 -28
- package/build/src/Resistor/Resistor.js.map +1 -1
- package/build/src/Resistor/ResistorColorEntry.js +5 -0
- package/build/src/Resistor/ResistorColorEntry.js.map +1 -1
- package/build/src/Semaphore/SemaphoreCharacter.js +5 -5
- package/build/src/Semaphore/SemaphoreCharacter.js.map +1 -1
- package/build/src/Semaphore/SemaphoreData.js +1 -1
- package/build/src/Semaphore/SemaphoreData.js.map +1 -1
- package/build/src/Semaphore/SemaphoreDirection.js +1 -1
- package/build/src/Semaphore/SemaphoreDirection.js.map +1 -1
- package/build/src/Semaphore/SemaphoreEncoding.js +2 -1
- package/build/src/Semaphore/SemaphoreEncoding.js.map +1 -1
- package/build/src/Semaphore/SemaphoreStream.js +4 -3
- package/build/src/Semaphore/SemaphoreStream.js.map +1 -1
- package/build/src/WordSearch/Result.js +2 -0
- package/build/src/WordSearch/Result.js.map +1 -1
- package/build/src/WordSearch/WordSearchDirection.js +1 -1
- package/build/src/WordSearch/WordSearchDirection.js.map +1 -1
- package/build/src/WordSearch/WordSearchSolver.js +11 -1
- package/build/src/WordSearch/WordSearchSolver.js.map +1 -1
- package/package.json +40 -39
- package/src/Braille/BrailleCharacter.ts +49 -0
- package/src/Braille/BrailleData.ts +131 -0
- package/src/Braille/BrailleDot.ts +9 -0
- package/src/Braille/BrailleEncoding.ts +144 -0
- package/src/Braille/BrailleStream.ts +87 -0
- package/src/Cipher/AutoKeyString.ts +35 -0
- package/src/Cipher/CaesarString.ts +38 -0
- package/src/Cipher/CaesarUtils.ts +69 -0
- package/src/Cipher/KeyedCipherStringBase.ts +35 -0
- package/src/Cipher/VigenereString.ts +21 -0
- package/src/Common/CharacterImage.ts +11 -0
- package/src/Common/EncodingCategory.ts +10 -0
- package/src/Common/EncodingCharacterBase.ts +72 -0
- package/src/Common/EncodingDataBase.ts +31 -0
- package/src/Common/EncodingEntry.ts +17 -0
- package/src/Common/EncodingLookupResult.ts +10 -0
- package/src/Common/Helpers.ts +13 -0
- package/src/Common/InlineSvg.ts +15 -0
- package/src/Conversion/CharacterAutoConvert.ts +108 -0
- package/src/Conversion/CharacterConversion.ts +89 -0
- package/src/Conversion/CharacterEncoding.ts +9 -0
- package/src/Conversion/CharacterTableEntry.ts +23 -0
- package/src/Conversion/SignificantFigures.ts +55 -0
- package/src/Conversion/StringAutoConvert.ts +56 -0
- package/src/Morse/MorseCharacter.ts +112 -0
- package/src/Morse/MorseData.ts +143 -0
- package/src/Morse/MorseEncoding.ts +98 -0
- package/src/Morse/MorseString.ts +106 -0
- package/src/Nato/NatoCharacter.ts +9 -0
- package/src/Nato/NatoData.ts +49 -0
- package/src/NavalFlags/LICENSE +7 -0
- package/src/NavalFlags/NavalFlags.ts +293 -0
- package/src/Resistor/Resistor.ts +135 -0
- package/src/Resistor/ResistorColorEntry.ts +43 -0
- package/src/Semaphore/SemaphoreCharacter.ts +107 -0
- package/src/Semaphore/SemaphoreData.ts +58 -0
- package/src/Semaphore/SemaphoreDegrees.ts +26 -0
- package/src/Semaphore/SemaphoreDirection.ts +11 -0
- package/src/Semaphore/SemaphoreEncoding.ts +48 -0
- package/src/Semaphore/SemaphoreStream.ts +89 -0
- package/src/WordSearch/Point.ts +4 -0
- package/src/WordSearch/Result.ts +10 -0
- package/src/WordSearch/WordSearchDirection.ts +6 -0
- package/src/WordSearch/WordSearchSolver.ts +271 -0
- package/src/index.ts +38 -0
- package/src/trie-prefix-tree.d.ts +70 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SemaphoreEncoding = void 0;
|
|
4
|
+
const SemaphoreDirection_1 = require("./SemaphoreDirection");
|
|
4
5
|
var SemaphoreEncoding;
|
|
5
6
|
(function (SemaphoreEncoding) {
|
|
6
7
|
SemaphoreEncoding[SemaphoreEncoding["None"] = 0] = "None";
|
|
@@ -44,5 +45,5 @@ var SemaphoreEncoding;
|
|
|
44
45
|
SemaphoreEncoding[SemaphoreEncoding["Number0"] = 66] = "Number0";
|
|
45
46
|
// Formatting
|
|
46
47
|
SemaphoreEncoding[SemaphoreEncoding["FormattingNumber"] = 6] = "FormattingNumber";
|
|
47
|
-
})(SemaphoreEncoding
|
|
48
|
+
})(SemaphoreEncoding || (exports.SemaphoreEncoding = SemaphoreEncoding = {}));
|
|
48
49
|
//# sourceMappingURL=SemaphoreEncoding.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SemaphoreEncoding.js","sourceRoot":"","sources":["../../../src/Semaphore/SemaphoreEncoding.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"SemaphoreEncoding.js","sourceRoot":"","sources":["../../../src/Semaphore/SemaphoreEncoding.ts"],"names":[],"mappings":";;;AAAA,6DAAwD;AAExD,IAAY,iBA6CX;AA7CD,WAAY,iBAAiB;IAC3B,yDAAQ,CAAA;IAER,UAAU;IACV,gEAAiE,CAAA;IACjE,iEAA4D,CAAA;IAC5D,iEAAiE,CAAA;IACjE,gEAA6D,CAAA;IAC7D,gEAAiE,CAAA;IACjE,gEAA4D,CAAA;IAC5D,gEAAiE,CAAA;IACjE,iEAAgE,CAAA;IAChE,iEAAqE,CAAA;IACrE,gEAA4D,CAAA;IAC5D,gEAAiE,CAAA;IACjE,gEAAqE,CAAA;IACrE,gEAAgE,CAAA;IAChE,gEAAqE,CAAA;IACrE,iEAAgE,CAAA;IAChE,iEAA4D,CAAA;IAC5D,iEAAgE,CAAA;IAChE,iEAA2D,CAAA;IAC3D,iEAAgE,CAAA;IAChE,iEAAiE,CAAA;IACjE,iEAAqE,CAAA;IACrE,gEAAiE,CAAA;IACjE,gEAAgE,CAAA;IAChE,gEAAqE,CAAA;IACrE,iEAAgE,CAAA;IAChE,gEAAgE,CAAA;IAEhE,UAAU;IACV,gEAAiE,CAAA;IACjE,iEAA4D,CAAA;IAC5D,iEAAiE,CAAA;IACjE,gEAA6D,CAAA;IAC7D,gEAAiE,CAAA;IACjE,gEAA4D,CAAA;IAC5D,gEAAiE,CAAA;IACjE,iEAAgE,CAAA;IAChE,iEAAqE,CAAA;IACrE,gEAAiE,CAAA;IAEjE,aAAa;IACb,iFAA0E,CAAA;AAC5E,CAAC,EA7CW,iBAAiB,iCAAjB,iBAAiB,QA6C5B"}
|
|
@@ -5,10 +5,11 @@ const EncodingCategory_1 = require("../Common/EncodingCategory");
|
|
|
5
5
|
const SemaphoreData_1 = require("./SemaphoreData");
|
|
6
6
|
const SemaphoreEncoding_1 = require("./SemaphoreEncoding");
|
|
7
7
|
class SemaphoreStream {
|
|
8
|
+
_chars = [];
|
|
9
|
+
_state;
|
|
10
|
+
_currentStr = '';
|
|
11
|
+
_processPosition = 0;
|
|
8
12
|
constructor(chars) {
|
|
9
|
-
this._chars = [];
|
|
10
|
-
this._currentStr = '';
|
|
11
|
-
this._processPosition = 0;
|
|
12
13
|
if (chars) {
|
|
13
14
|
this._chars = Array.from(chars);
|
|
14
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SemaphoreStream.js","sourceRoot":"","sources":["../../../src/Semaphore/SemaphoreStream.ts"],"names":[],"mappings":";;;AAAA,iEAA4D;AAE5D,mDAA8C;AAC9C,2DAAsD;AAMtD,MAAa,eAAe;
|
|
1
|
+
{"version":3,"file":"SemaphoreStream.js","sourceRoot":"","sources":["../../../src/Semaphore/SemaphoreStream.ts"],"names":[],"mappings":";;;AAAA,iEAA4D;AAE5D,mDAA8C;AAC9C,2DAAsD;AAMtD,MAAa,eAAe;IACT,MAAM,GAAwB,EAAE,CAAC;IACjC,MAAM,CAAuB;IACtC,WAAW,GAAG,EAAE,CAAC;IACjB,gBAAgB,GAAG,CAAC,CAAC;IAE7B,YAAY,KAA2B;QACrC,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACjC;QAED,IAAI,CAAC,MAAM,GAAG;YACZ,UAAU,EAAE,KAAK;SAClB,CAAC;QAEF,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,KAAK,CAAC,KAA0B;QAClC,IAAI,CAAC,KAAK,EAAE,CAAC;QAEb,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE;YACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACtB;IACH,CAAC;IAED,MAAM,CAAC,EAAsB;QAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IACjC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qCAAiB,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;IAC5B,CAAC;IAEO,MAAM;QACZ,OAAO,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YACjD,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAE9C,IAAI,EAAE,KAAK,qCAAiB,CAAC,IAAI,EAAE;gBACjC,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC;gBAC/B,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC;aACzB;iBAAM,IAAI,EAAE,KAAK,qCAAiB,CAAC,gBAAgB,EAAE;gBACpD,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;gBAC9B,IAAI,CAAC,WAAW,IAAI,GAAG,CAAC;aACzB;iBAAM;gBACL,MAAM,QAAQ,GACZ,mCAAgB,CAAC,WAAW;oBAC5B,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU;wBACrB,CAAC,CAAC,mCAAgB,CAAC,MAAM;wBACzB,CAAC,CAAC,mCAAgB,CAAC,MAAM,CAAC,CAAC;gBAC/B,MAAM,KAAK,GAAG,6BAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC;gBAEhE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;oBACpB,IAAI,CAAC,WAAW,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;iBACzC;aACF;YAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACzB;IACH,CAAC;CACF;AA/ED,0CA+EC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Result.js","sourceRoot":"","sources":["../../../src/WordSearch/Result.ts"],"names":[],"mappings":";;;AAEA,MAAa,MAAM;
|
|
1
|
+
{"version":3,"file":"Result.js","sourceRoot":"","sources":["../../../src/WordSearch/Result.ts"],"names":[],"mappings":";;;AAEA,MAAa,MAAM;IACjB,IAAI,CAAS;IACb,MAAM,CAAU;IAChB,YAAY,IAAY,EAAE,UAAmB;QAC3C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvC,CAAC;CACF;AAPD,wBAOC"}
|
|
@@ -7,5 +7,5 @@ var WordSearchDirection;
|
|
|
7
7
|
WordSearchDirection[WordSearchDirection["Cardinal"] = 1] = "Cardinal";
|
|
8
8
|
WordSearchDirection[WordSearchDirection["Diagonal"] = 2] = "Diagonal";
|
|
9
9
|
WordSearchDirection[WordSearchDirection["CardinalAndDiagonal"] = 3] = "CardinalAndDiagonal";
|
|
10
|
-
})(WordSearchDirection
|
|
10
|
+
})(WordSearchDirection || (exports.WordSearchDirection = WordSearchDirection = {}));
|
|
11
11
|
//# sourceMappingURL=WordSearchDirection.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WordSearchDirection.js","sourceRoot":"","sources":["../../../src/WordSearch/WordSearchDirection.ts"],"names":[],"mappings":";;;AAAA,IAAY,mBAKX;AALD,WAAY,mBAAmB;IAC7B,6DAAQ,CAAA;IACR,qEAAY,CAAA;IACZ,qEAAY,CAAA;IACZ,2FAAuB,CAAA;AACzB,CAAC,EALW,mBAAmB,
|
|
1
|
+
{"version":3,"file":"WordSearchDirection.js","sourceRoot":"","sources":["../../../src/WordSearch/WordSearchDirection.ts"],"names":[],"mappings":";;;AAAA,IAAY,mBAKX;AALD,WAAY,mBAAmB;IAC7B,6DAAQ,CAAA;IACR,qEAAY,CAAA;IACZ,qEAAY,CAAA;IACZ,2FAAuB,CAAA;AACzB,CAAC,EALW,mBAAmB,mCAAnB,mBAAmB,QAK9B"}
|
|
@@ -9,8 +9,18 @@ var WordSearchSpaceTreatment;
|
|
|
9
9
|
WordSearchSpaceTreatment[WordSearchSpaceTreatment["None"] = 0] = "None";
|
|
10
10
|
WordSearchSpaceTreatment[WordSearchSpaceTreatment["RemoveWithinPuzzle"] = 1] = "RemoveWithinPuzzle";
|
|
11
11
|
WordSearchSpaceTreatment[WordSearchSpaceTreatment["RemoveAll"] = 2] = "RemoveAll";
|
|
12
|
-
})(WordSearchSpaceTreatment
|
|
12
|
+
})(WordSearchSpaceTreatment || (exports.WordSearchSpaceTreatment = WordSearchSpaceTreatment = {}));
|
|
13
13
|
class WordSearchSolver {
|
|
14
|
+
// The grid of letters which makes up the wordsearch puzzle
|
|
15
|
+
_matrix;
|
|
16
|
+
// Transpositions to apply when finding words
|
|
17
|
+
_directions;
|
|
18
|
+
// Potential words to find in the letter grid
|
|
19
|
+
_targets;
|
|
20
|
+
// Should we search for words not following a line
|
|
21
|
+
_canBend;
|
|
22
|
+
// What should we do with spaces
|
|
23
|
+
_spaceTreatment;
|
|
14
24
|
constructor() {
|
|
15
25
|
// Use empty grid and list by default
|
|
16
26
|
this._matrix = [[]];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WordSearchSolver.js","sourceRoot":"","sources":["../../../src/WordSearch/WordSearchSolver.ts"],"names":[],"mappings":";;;AAAA,yCAA0C;AAG1C,qCAAgC;AAChC,+DAA0D;AAE1D,IAAY,wBAIX;AAJD,WAAY,wBAAwB;IAClC,uEAAQ,CAAA;IACR,mGAAsB,CAAA;IACtB,iFAAa,CAAA;AACf,CAAC,EAJW,wBAAwB,
|
|
1
|
+
{"version":3,"file":"WordSearchSolver.js","sourceRoot":"","sources":["../../../src/WordSearch/WordSearchSolver.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,39 +1,40 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "puzzle-lib",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "Library of puzzle-solving algorithms",
|
|
5
|
-
"main": "
|
|
6
|
-
"types": "
|
|
7
|
-
"files": [
|
|
8
|
-
"build/src"
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
"clean": "gts clean",
|
|
13
|
-
"compile": "tsc",
|
|
14
|
-
"fix": "gts fix",
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
"
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
"
|
|
31
|
-
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "puzzle-lib",
|
|
3
|
+
"version": "1.7.0",
|
|
4
|
+
"description": "Library of puzzle-solving algorithms",
|
|
5
|
+
"main": "build/src/index.js",
|
|
6
|
+
"types": "build/src/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"build/src",
|
|
9
|
+
"src"
|
|
10
|
+
],
|
|
11
|
+
"scripts": {
|
|
12
|
+
"clean": "gts clean",
|
|
13
|
+
"compile": "tsc",
|
|
14
|
+
"fix": "gts fix",
|
|
15
|
+
"lint": "gts lint",
|
|
16
|
+
"posttest": "npm run lint",
|
|
17
|
+
"prepare": "npm run compile",
|
|
18
|
+
"pretest": "npm run compile",
|
|
19
|
+
"test": "mocha"
|
|
20
|
+
},
|
|
21
|
+
"repository": {
|
|
22
|
+
"type": "git",
|
|
23
|
+
"url": "git+https://github.com/puzztool/puzzle-lib.git"
|
|
24
|
+
},
|
|
25
|
+
"author": "Kyle Farnung",
|
|
26
|
+
"license": "MIT",
|
|
27
|
+
"bugs": {
|
|
28
|
+
"url": "https://github.com/puzztool/puzzle-lib/issues"
|
|
29
|
+
},
|
|
30
|
+
"homepage": "https://github.com/puzztool/puzzle-lib#readme",
|
|
31
|
+
"devDependencies": {
|
|
32
|
+
"@types/node": "^22.10.0",
|
|
33
|
+
"gts": "^6.0.2",
|
|
34
|
+
"mocha": "^10.0.0",
|
|
35
|
+
"typescript": "~5.1.0"
|
|
36
|
+
},
|
|
37
|
+
"dependencies": {
|
|
38
|
+
"trie-prefix-tree": "^1.5.1"
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import {EncodingCategory} from '../Common/EncodingCategory';
|
|
2
|
+
import {EncodingCharacterBase} from '../Common/EncodingCharacterBase';
|
|
3
|
+
import {BrailleData} from './BrailleData';
|
|
4
|
+
import {BrailleDot} from './BrailleDot';
|
|
5
|
+
import {BrailleEncoding} from './BrailleEncoding';
|
|
6
|
+
|
|
7
|
+
export class BrailleCharacter extends EncodingCharacterBase<BrailleEncoding> {
|
|
8
|
+
private _encoding: BrailleEncoding;
|
|
9
|
+
|
|
10
|
+
constructor(
|
|
11
|
+
encoding: BrailleEncoding = BrailleEncoding.None,
|
|
12
|
+
category: EncodingCategory = EncodingCategory.All,
|
|
13
|
+
) {
|
|
14
|
+
super(BrailleData.instance, category);
|
|
15
|
+
|
|
16
|
+
this._encoding = encoding;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
get encoding() {
|
|
20
|
+
return this._encoding;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
set encoding(value: BrailleEncoding) {
|
|
24
|
+
this._encoding = value;
|
|
25
|
+
this.invalidateLookup();
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
get(mask: BrailleDot | BrailleEncoding) {
|
|
29
|
+
return (this._encoding & mask) === mask;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
toggle(mask: BrailleDot | BrailleEncoding) {
|
|
33
|
+
this._encoding ^= mask;
|
|
34
|
+
this.invalidateLookup();
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
protected onClear() {
|
|
38
|
+
this._encoding = BrailleEncoding.None;
|
|
39
|
+
this.invalidateLookup();
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
protected onEmpty() {
|
|
43
|
+
return this._encoding === BrailleEncoding.None;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
protected getEncoding() {
|
|
47
|
+
return this._encoding;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import {EncodingCategory} from '../Common/EncodingCategory';
|
|
2
|
+
import {EncodingDataBase} from '../Common/EncodingDataBase';
|
|
3
|
+
import {BrailleEncoding} from './BrailleEncoding';
|
|
4
|
+
|
|
5
|
+
export class BrailleData extends EncodingDataBase<BrailleEncoding> {
|
|
6
|
+
static readonly instance: BrailleData = new BrailleData();
|
|
7
|
+
|
|
8
|
+
constructor() {
|
|
9
|
+
super();
|
|
10
|
+
|
|
11
|
+
this.addToList(BrailleEncoding.LetterA, EncodingCategory.Letter, 'A');
|
|
12
|
+
this.addToList(BrailleEncoding.LetterB, EncodingCategory.Letter, 'B');
|
|
13
|
+
this.addToList(BrailleEncoding.LetterC, EncodingCategory.Letter, 'C');
|
|
14
|
+
this.addToList(BrailleEncoding.LetterD, EncodingCategory.Letter, 'D');
|
|
15
|
+
this.addToList(BrailleEncoding.LetterE, EncodingCategory.Letter, 'E');
|
|
16
|
+
this.addToList(BrailleEncoding.LetterF, EncodingCategory.Letter, 'F');
|
|
17
|
+
this.addToList(BrailleEncoding.LetterG, EncodingCategory.Letter, 'G');
|
|
18
|
+
this.addToList(BrailleEncoding.LetterH, EncodingCategory.Letter, 'H');
|
|
19
|
+
this.addToList(BrailleEncoding.LetterI, EncodingCategory.Letter, 'I');
|
|
20
|
+
this.addToList(BrailleEncoding.LetterJ, EncodingCategory.Letter, 'J');
|
|
21
|
+
this.addToList(BrailleEncoding.LetterK, EncodingCategory.Letter, 'K');
|
|
22
|
+
this.addToList(BrailleEncoding.LetterL, EncodingCategory.Letter, 'L');
|
|
23
|
+
this.addToList(BrailleEncoding.LetterM, EncodingCategory.Letter, 'M');
|
|
24
|
+
this.addToList(BrailleEncoding.LetterN, EncodingCategory.Letter, 'N');
|
|
25
|
+
this.addToList(BrailleEncoding.LetterO, EncodingCategory.Letter, 'O');
|
|
26
|
+
this.addToList(BrailleEncoding.LetterP, EncodingCategory.Letter, 'P');
|
|
27
|
+
this.addToList(BrailleEncoding.LetterQ, EncodingCategory.Letter, 'Q');
|
|
28
|
+
this.addToList(BrailleEncoding.LetterR, EncodingCategory.Letter, 'R');
|
|
29
|
+
this.addToList(BrailleEncoding.LetterS, EncodingCategory.Letter, 'S');
|
|
30
|
+
this.addToList(BrailleEncoding.LetterT, EncodingCategory.Letter, 'T');
|
|
31
|
+
this.addToList(BrailleEncoding.LetterU, EncodingCategory.Letter, 'U');
|
|
32
|
+
this.addToList(BrailleEncoding.LetterV, EncodingCategory.Letter, 'V');
|
|
33
|
+
this.addToList(BrailleEncoding.LetterW, EncodingCategory.Letter, 'W');
|
|
34
|
+
this.addToList(BrailleEncoding.LetterX, EncodingCategory.Letter, 'X');
|
|
35
|
+
this.addToList(BrailleEncoding.LetterY, EncodingCategory.Letter, 'Y');
|
|
36
|
+
this.addToList(BrailleEncoding.LetterZ, EncodingCategory.Letter, 'Z');
|
|
37
|
+
|
|
38
|
+
this.addToList(BrailleEncoding.Number0, EncodingCategory.Number, '0');
|
|
39
|
+
this.addToList(BrailleEncoding.Number1, EncodingCategory.Number, '1');
|
|
40
|
+
this.addToList(BrailleEncoding.Number2, EncodingCategory.Number, '2');
|
|
41
|
+
this.addToList(BrailleEncoding.Number3, EncodingCategory.Number, '3');
|
|
42
|
+
this.addToList(BrailleEncoding.Number4, EncodingCategory.Number, '4');
|
|
43
|
+
this.addToList(BrailleEncoding.Number5, EncodingCategory.Number, '5');
|
|
44
|
+
this.addToList(BrailleEncoding.Number6, EncodingCategory.Number, '6');
|
|
45
|
+
this.addToList(BrailleEncoding.Number7, EncodingCategory.Number, '7');
|
|
46
|
+
this.addToList(BrailleEncoding.Number8, EncodingCategory.Number, '8');
|
|
47
|
+
this.addToList(BrailleEncoding.Number9, EncodingCategory.Number, '9');
|
|
48
|
+
|
|
49
|
+
this.addToList(
|
|
50
|
+
BrailleEncoding.FormattingNumber,
|
|
51
|
+
EncodingCategory.Formatting,
|
|
52
|
+
'#',
|
|
53
|
+
);
|
|
54
|
+
this.addToList(
|
|
55
|
+
BrailleEncoding.FormattingCapital,
|
|
56
|
+
EncodingCategory.Formatting,
|
|
57
|
+
'^',
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
this.addToList(
|
|
61
|
+
BrailleEncoding.PunctuationComma,
|
|
62
|
+
EncodingCategory.Punctuation,
|
|
63
|
+
',',
|
|
64
|
+
);
|
|
65
|
+
this.addToList(
|
|
66
|
+
BrailleEncoding.PunctuationSemicolon,
|
|
67
|
+
EncodingCategory.Punctuation,
|
|
68
|
+
';',
|
|
69
|
+
);
|
|
70
|
+
this.addToList(
|
|
71
|
+
BrailleEncoding.PunctuationApostrophe,
|
|
72
|
+
EncodingCategory.Punctuation,
|
|
73
|
+
"'",
|
|
74
|
+
);
|
|
75
|
+
this.addToList(
|
|
76
|
+
BrailleEncoding.PunctuationColon,
|
|
77
|
+
EncodingCategory.Punctuation,
|
|
78
|
+
':',
|
|
79
|
+
);
|
|
80
|
+
this.addToList(
|
|
81
|
+
BrailleEncoding.PunctuationHyphen,
|
|
82
|
+
EncodingCategory.Punctuation,
|
|
83
|
+
'-',
|
|
84
|
+
);
|
|
85
|
+
this.addToList(
|
|
86
|
+
BrailleEncoding.PunctuationDecimalPoint,
|
|
87
|
+
EncodingCategory.Punctuation,
|
|
88
|
+
'.',
|
|
89
|
+
);
|
|
90
|
+
this.addToList(
|
|
91
|
+
BrailleEncoding.PunctuationFullStop,
|
|
92
|
+
EncodingCategory.Punctuation,
|
|
93
|
+
'.',
|
|
94
|
+
);
|
|
95
|
+
this.addToList(
|
|
96
|
+
BrailleEncoding.PunctuationExclamationPoint,
|
|
97
|
+
EncodingCategory.Punctuation,
|
|
98
|
+
'!',
|
|
99
|
+
);
|
|
100
|
+
this.addToList(
|
|
101
|
+
BrailleEncoding.PunctuationOpenQuote,
|
|
102
|
+
EncodingCategory.Punctuation,
|
|
103
|
+
'"',
|
|
104
|
+
);
|
|
105
|
+
this.addToList(
|
|
106
|
+
BrailleEncoding.PunctuationQuestionMark,
|
|
107
|
+
EncodingCategory.Punctuation,
|
|
108
|
+
'?',
|
|
109
|
+
);
|
|
110
|
+
this.addToList(
|
|
111
|
+
BrailleEncoding.PunctuationCloseQuote,
|
|
112
|
+
EncodingCategory.Punctuation,
|
|
113
|
+
'"',
|
|
114
|
+
);
|
|
115
|
+
this.addToList(
|
|
116
|
+
BrailleEncoding.PunctuationBracket,
|
|
117
|
+
EncodingCategory.Punctuation,
|
|
118
|
+
'(',
|
|
119
|
+
);
|
|
120
|
+
this.addToList(
|
|
121
|
+
BrailleEncoding.PunctuationBracket,
|
|
122
|
+
EncodingCategory.Punctuation,
|
|
123
|
+
')',
|
|
124
|
+
);
|
|
125
|
+
this.addToList(
|
|
126
|
+
BrailleEncoding.PunctuationSlash,
|
|
127
|
+
EncodingCategory.Punctuation,
|
|
128
|
+
'/',
|
|
129
|
+
);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import {BrailleDot} from './BrailleDot';
|
|
2
|
+
|
|
3
|
+
export enum BrailleEncoding {
|
|
4
|
+
None,
|
|
5
|
+
|
|
6
|
+
// Letters (first decade)
|
|
7
|
+
LetterA = BrailleDot.UpperLeft,
|
|
8
|
+
LetterB = BrailleDot.UpperLeft | BrailleDot.MiddleLeft,
|
|
9
|
+
LetterC = BrailleDot.UpperLeft | BrailleDot.UpperRight,
|
|
10
|
+
LetterD = BrailleDot.UpperLeft |
|
|
11
|
+
BrailleDot.UpperRight |
|
|
12
|
+
BrailleDot.MiddleRight,
|
|
13
|
+
LetterE = BrailleDot.UpperLeft | BrailleDot.MiddleRight,
|
|
14
|
+
LetterF = BrailleDot.UpperLeft |
|
|
15
|
+
BrailleDot.MiddleLeft |
|
|
16
|
+
BrailleDot.UpperRight,
|
|
17
|
+
LetterG = BrailleDot.UpperLeft |
|
|
18
|
+
BrailleDot.MiddleLeft |
|
|
19
|
+
BrailleDot.UpperRight |
|
|
20
|
+
BrailleDot.MiddleRight,
|
|
21
|
+
LetterH = BrailleDot.UpperLeft |
|
|
22
|
+
BrailleDot.MiddleLeft |
|
|
23
|
+
BrailleDot.MiddleRight,
|
|
24
|
+
LetterI = BrailleDot.MiddleLeft | BrailleDot.UpperRight,
|
|
25
|
+
LetterJ = BrailleDot.MiddleLeft |
|
|
26
|
+
BrailleDot.UpperRight |
|
|
27
|
+
BrailleDot.MiddleRight,
|
|
28
|
+
|
|
29
|
+
// Letters (second decade)
|
|
30
|
+
LetterK = BrailleDot.LowerLeft | BrailleDot.UpperLeft,
|
|
31
|
+
LetterL = BrailleDot.LowerLeft | BrailleDot.UpperLeft | BrailleDot.MiddleLeft,
|
|
32
|
+
LetterM = BrailleDot.LowerLeft | BrailleDot.UpperLeft | BrailleDot.UpperRight,
|
|
33
|
+
LetterN = BrailleDot.LowerLeft |
|
|
34
|
+
BrailleDot.UpperLeft |
|
|
35
|
+
BrailleDot.UpperRight |
|
|
36
|
+
BrailleDot.MiddleRight,
|
|
37
|
+
LetterO = BrailleDot.LowerLeft |
|
|
38
|
+
BrailleDot.UpperLeft |
|
|
39
|
+
BrailleDot.MiddleRight,
|
|
40
|
+
LetterP = BrailleDot.LowerLeft |
|
|
41
|
+
BrailleDot.UpperLeft |
|
|
42
|
+
BrailleDot.MiddleLeft |
|
|
43
|
+
BrailleDot.UpperRight,
|
|
44
|
+
LetterQ = BrailleDot.LowerLeft |
|
|
45
|
+
BrailleDot.UpperLeft |
|
|
46
|
+
BrailleDot.MiddleLeft |
|
|
47
|
+
BrailleDot.UpperRight |
|
|
48
|
+
BrailleDot.MiddleRight,
|
|
49
|
+
LetterR = BrailleDot.LowerLeft |
|
|
50
|
+
BrailleDot.UpperLeft |
|
|
51
|
+
BrailleDot.MiddleLeft |
|
|
52
|
+
BrailleDot.MiddleRight,
|
|
53
|
+
LetterS = BrailleDot.LowerLeft |
|
|
54
|
+
BrailleDot.MiddleLeft |
|
|
55
|
+
BrailleDot.UpperRight,
|
|
56
|
+
LetterT = BrailleDot.LowerLeft |
|
|
57
|
+
BrailleDot.MiddleLeft |
|
|
58
|
+
BrailleDot.UpperRight |
|
|
59
|
+
BrailleDot.MiddleRight,
|
|
60
|
+
|
|
61
|
+
// Letters (third decade)
|
|
62
|
+
LetterU = BrailleDot.LowerLeft | BrailleDot.LowerRight | BrailleDot.UpperLeft,
|
|
63
|
+
LetterV = BrailleDot.LowerLeft |
|
|
64
|
+
BrailleDot.LowerRight |
|
|
65
|
+
BrailleDot.UpperLeft |
|
|
66
|
+
BrailleDot.MiddleLeft,
|
|
67
|
+
LetterX = BrailleDot.LowerLeft |
|
|
68
|
+
BrailleDot.LowerRight |
|
|
69
|
+
BrailleDot.UpperLeft |
|
|
70
|
+
BrailleDot.UpperRight,
|
|
71
|
+
LetterY = BrailleDot.LowerLeft |
|
|
72
|
+
BrailleDot.LowerRight |
|
|
73
|
+
BrailleDot.UpperLeft |
|
|
74
|
+
BrailleDot.UpperRight |
|
|
75
|
+
BrailleDot.MiddleRight,
|
|
76
|
+
LetterZ = BrailleDot.LowerLeft |
|
|
77
|
+
BrailleDot.LowerRight |
|
|
78
|
+
BrailleDot.UpperLeft |
|
|
79
|
+
BrailleDot.MiddleRight,
|
|
80
|
+
|
|
81
|
+
// Letters (fourth decade)
|
|
82
|
+
LetterW = BrailleDot.LowerRight |
|
|
83
|
+
BrailleDot.MiddleLeft |
|
|
84
|
+
BrailleDot.UpperRight |
|
|
85
|
+
BrailleDot.MiddleRight,
|
|
86
|
+
|
|
87
|
+
// Numbers
|
|
88
|
+
Number1 = BrailleDot.UpperLeft,
|
|
89
|
+
Number2 = BrailleDot.UpperLeft | BrailleDot.MiddleLeft,
|
|
90
|
+
Number3 = BrailleDot.UpperLeft | BrailleDot.UpperRight,
|
|
91
|
+
Number4 = BrailleDot.UpperLeft |
|
|
92
|
+
BrailleDot.UpperRight |
|
|
93
|
+
BrailleDot.MiddleRight,
|
|
94
|
+
Number5 = BrailleDot.UpperLeft | BrailleDot.MiddleRight,
|
|
95
|
+
Number6 = BrailleDot.UpperLeft |
|
|
96
|
+
BrailleDot.MiddleLeft |
|
|
97
|
+
BrailleDot.UpperRight,
|
|
98
|
+
Number7 = BrailleDot.UpperLeft |
|
|
99
|
+
BrailleDot.MiddleLeft |
|
|
100
|
+
BrailleDot.UpperRight |
|
|
101
|
+
BrailleDot.MiddleRight,
|
|
102
|
+
Number8 = BrailleDot.UpperLeft |
|
|
103
|
+
BrailleDot.MiddleLeft |
|
|
104
|
+
BrailleDot.MiddleRight,
|
|
105
|
+
Number9 = BrailleDot.MiddleLeft | BrailleDot.UpperRight,
|
|
106
|
+
Number0 = BrailleDot.MiddleLeft |
|
|
107
|
+
BrailleDot.UpperRight |
|
|
108
|
+
BrailleDot.MiddleRight,
|
|
109
|
+
|
|
110
|
+
// Formatting
|
|
111
|
+
FormattingNumber = BrailleDot.LowerLeft |
|
|
112
|
+
BrailleDot.UpperRight |
|
|
113
|
+
BrailleDot.MiddleRight |
|
|
114
|
+
BrailleDot.LowerRight,
|
|
115
|
+
FormattingCapital = BrailleDot.LowerRight,
|
|
116
|
+
|
|
117
|
+
// Punctuation
|
|
118
|
+
PunctuationComma = BrailleDot.MiddleLeft,
|
|
119
|
+
PunctuationSemicolon = BrailleDot.MiddleLeft | BrailleDot.LowerLeft,
|
|
120
|
+
PunctuationApostrophe = BrailleDot.LowerLeft,
|
|
121
|
+
PunctuationColon = BrailleDot.MiddleLeft | BrailleDot.MiddleRight,
|
|
122
|
+
PunctuationHyphen = BrailleDot.LowerLeft | BrailleDot.LowerRight,
|
|
123
|
+
PunctuationDecimalPoint = BrailleDot.UpperRight | BrailleDot.LowerRight,
|
|
124
|
+
PunctuationFullStop = BrailleDot.MiddleLeft |
|
|
125
|
+
BrailleDot.MiddleRight |
|
|
126
|
+
BrailleDot.LowerRight,
|
|
127
|
+
PunctuationExclamationPoint = BrailleDot.MiddleLeft |
|
|
128
|
+
BrailleDot.LowerLeft |
|
|
129
|
+
BrailleDot.MiddleRight,
|
|
130
|
+
PunctuationOpenQuote = BrailleDot.MiddleLeft |
|
|
131
|
+
BrailleDot.LowerLeft |
|
|
132
|
+
BrailleDot.LowerRight,
|
|
133
|
+
PunctuationQuestionMark = BrailleDot.MiddleLeft |
|
|
134
|
+
BrailleDot.LowerLeft |
|
|
135
|
+
BrailleDot.LowerRight,
|
|
136
|
+
PunctuationCloseQuote = BrailleDot.LowerLeft |
|
|
137
|
+
BrailleDot.MiddleRight |
|
|
138
|
+
BrailleDot.LowerRight,
|
|
139
|
+
PunctuationBracket = BrailleDot.MiddleLeft |
|
|
140
|
+
BrailleDot.LowerLeft |
|
|
141
|
+
BrailleDot.MiddleRight |
|
|
142
|
+
BrailleDot.LowerRight,
|
|
143
|
+
PunctuationSlash = BrailleDot.LowerLeft | BrailleDot.UpperRight,
|
|
144
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import {EncodingCategory} from '../Common/EncodingCategory';
|
|
2
|
+
import {BrailleCharacter} from './BrailleCharacter';
|
|
3
|
+
import {BrailleData} from './BrailleData';
|
|
4
|
+
import {BrailleEncoding} from './BrailleEncoding';
|
|
5
|
+
|
|
6
|
+
export class BrailleStream {
|
|
7
|
+
private readonly _chars: BrailleEncoding[] = [];
|
|
8
|
+
private _currentStr = '';
|
|
9
|
+
private _processPosition = 0;
|
|
10
|
+
private _numberMode = false;
|
|
11
|
+
|
|
12
|
+
constructor(chars?: BrailleEncoding[]) {
|
|
13
|
+
if (chars) {
|
|
14
|
+
this._chars = Array.from(chars);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
this.invalidate();
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
get chars() {
|
|
21
|
+
return this._chars;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
set chars(value: BrailleEncoding[]) {
|
|
25
|
+
this.clear();
|
|
26
|
+
|
|
27
|
+
for (const ch of value) {
|
|
28
|
+
this._chars.push(ch);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
append(ch: BrailleCharacter) {
|
|
33
|
+
this._chars.push(ch.valueOf());
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
clear() {
|
|
37
|
+
this._chars.length = 0;
|
|
38
|
+
this.invalidate();
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
backspace() {
|
|
42
|
+
this._chars.pop();
|
|
43
|
+
this.invalidate();
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
space() {
|
|
47
|
+
this._chars.push(BrailleEncoding.None);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
toString() {
|
|
51
|
+
this.update();
|
|
52
|
+
return this._currentStr;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
private invalidate() {
|
|
56
|
+
this._currentStr = '';
|
|
57
|
+
this._processPosition = 0;
|
|
58
|
+
this._numberMode = false;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
private update() {
|
|
62
|
+
while (this._processPosition < this._chars.length) {
|
|
63
|
+
const ch = this._chars[this._processPosition];
|
|
64
|
+
|
|
65
|
+
if (ch === BrailleEncoding.None) {
|
|
66
|
+
this._numberMode = false;
|
|
67
|
+
this._currentStr += ' ';
|
|
68
|
+
} else if (ch === BrailleEncoding.FormattingNumber) {
|
|
69
|
+
this._numberMode = true;
|
|
70
|
+
this._currentStr += '#';
|
|
71
|
+
} else {
|
|
72
|
+
const category =
|
|
73
|
+
EncodingCategory.Punctuation |
|
|
74
|
+
(this._numberMode
|
|
75
|
+
? EncodingCategory.Number
|
|
76
|
+
: EncodingCategory.Letter);
|
|
77
|
+
const exact = BrailleData.instance.lookup(ch, category).exact;
|
|
78
|
+
|
|
79
|
+
if (exact.length > 0) {
|
|
80
|
+
this._currentStr += exact[0].toString();
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
this._processPosition++;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|