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.
Files changed (120) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +38 -38
  3. package/build/src/Braille/BrailleCharacter.js +1 -0
  4. package/build/src/Braille/BrailleCharacter.js.map +1 -1
  5. package/build/src/Braille/BrailleData.js +1 -1
  6. package/build/src/Braille/BrailleData.js.map +1 -1
  7. package/build/src/Braille/BrailleDot.js +1 -1
  8. package/build/src/Braille/BrailleDot.js.map +1 -1
  9. package/build/src/Braille/BrailleEncoding.js +2 -1
  10. package/build/src/Braille/BrailleEncoding.js.map +1 -1
  11. package/build/src/Braille/BrailleStream.js +4 -4
  12. package/build/src/Braille/BrailleStream.js.map +1 -1
  13. package/build/src/Cipher/CaesarString.js +1 -0
  14. package/build/src/Cipher/CaesarString.js.map +1 -1
  15. package/build/src/Cipher/CaesarUtils.js +5 -5
  16. package/build/src/Cipher/CaesarUtils.js.map +1 -1
  17. package/build/src/Cipher/KeyedCipherStringBase.js +2 -0
  18. package/build/src/Cipher/KeyedCipherStringBase.js.map +1 -1
  19. package/build/src/Common/CharacterImage.js +2 -0
  20. package/build/src/Common/CharacterImage.js.map +1 -1
  21. package/build/src/Common/EncodingCategory.js +1 -1
  22. package/build/src/Common/EncodingCategory.js.map +1 -1
  23. package/build/src/Common/EncodingCharacterBase.js +3 -1
  24. package/build/src/Common/EncodingCharacterBase.js.map +1 -1
  25. package/build/src/Common/EncodingDataBase.js +1 -3
  26. package/build/src/Common/EncodingDataBase.js.map +1 -1
  27. package/build/src/Common/EncodingEntry.js +3 -0
  28. package/build/src/Common/EncodingEntry.js.map +1 -1
  29. package/build/src/Common/EncodingLookupResult.js +2 -4
  30. package/build/src/Common/EncodingLookupResult.js.map +1 -1
  31. package/build/src/Common/InlineSvg.js +3 -0
  32. package/build/src/Common/InlineSvg.js.map +1 -1
  33. package/build/src/Conversion/CharacterAutoConvert.js +2 -2
  34. package/build/src/Conversion/CharacterAutoConvert.js.map +1 -1
  35. package/build/src/Conversion/CharacterEncoding.js +1 -1
  36. package/build/src/Conversion/CharacterEncoding.js.map +1 -1
  37. package/build/src/Conversion/CharacterTableEntry.js +11 -5
  38. package/build/src/Conversion/CharacterTableEntry.js.map +1 -1
  39. package/build/src/Conversion/StringAutoConvert.js.map +1 -1
  40. package/build/src/Morse/MorseCharacter.js +9 -8
  41. package/build/src/Morse/MorseCharacter.js.map +1 -1
  42. package/build/src/Morse/MorseData.js +1 -1
  43. package/build/src/Morse/MorseData.js.map +1 -1
  44. package/build/src/Morse/MorseEncoding.js +1 -1
  45. package/build/src/Morse/MorseEncoding.js.map +1 -1
  46. package/build/src/Morse/MorseString.js +3 -2
  47. package/build/src/Morse/MorseString.js.map +1 -1
  48. package/build/src/Nato/NatoCharacter.js +2 -0
  49. package/build/src/Nato/NatoCharacter.js.map +1 -1
  50. package/build/src/Nato/NatoData.js +29 -31
  51. package/build/src/Nato/NatoData.js.map +1 -1
  52. package/build/src/NavalFlags/NavalFlags.js +31 -32
  53. package/build/src/NavalFlags/NavalFlags.js.map +1 -1
  54. package/build/src/Resistor/Resistor.js +28 -28
  55. package/build/src/Resistor/Resistor.js.map +1 -1
  56. package/build/src/Resistor/ResistorColorEntry.js +5 -0
  57. package/build/src/Resistor/ResistorColorEntry.js.map +1 -1
  58. package/build/src/Semaphore/SemaphoreCharacter.js +5 -5
  59. package/build/src/Semaphore/SemaphoreCharacter.js.map +1 -1
  60. package/build/src/Semaphore/SemaphoreData.js +1 -1
  61. package/build/src/Semaphore/SemaphoreData.js.map +1 -1
  62. package/build/src/Semaphore/SemaphoreDirection.js +1 -1
  63. package/build/src/Semaphore/SemaphoreDirection.js.map +1 -1
  64. package/build/src/Semaphore/SemaphoreEncoding.js +2 -1
  65. package/build/src/Semaphore/SemaphoreEncoding.js.map +1 -1
  66. package/build/src/Semaphore/SemaphoreStream.js +4 -3
  67. package/build/src/Semaphore/SemaphoreStream.js.map +1 -1
  68. package/build/src/WordSearch/Result.js +2 -0
  69. package/build/src/WordSearch/Result.js.map +1 -1
  70. package/build/src/WordSearch/WordSearchDirection.js +1 -1
  71. package/build/src/WordSearch/WordSearchDirection.js.map +1 -1
  72. package/build/src/WordSearch/WordSearchSolver.js +11 -1
  73. package/build/src/WordSearch/WordSearchSolver.js.map +1 -1
  74. package/package.json +40 -39
  75. package/src/Braille/BrailleCharacter.ts +49 -0
  76. package/src/Braille/BrailleData.ts +131 -0
  77. package/src/Braille/BrailleDot.ts +9 -0
  78. package/src/Braille/BrailleEncoding.ts +144 -0
  79. package/src/Braille/BrailleStream.ts +87 -0
  80. package/src/Cipher/AutoKeyString.ts +35 -0
  81. package/src/Cipher/CaesarString.ts +38 -0
  82. package/src/Cipher/CaesarUtils.ts +69 -0
  83. package/src/Cipher/KeyedCipherStringBase.ts +35 -0
  84. package/src/Cipher/VigenereString.ts +21 -0
  85. package/src/Common/CharacterImage.ts +11 -0
  86. package/src/Common/EncodingCategory.ts +10 -0
  87. package/src/Common/EncodingCharacterBase.ts +72 -0
  88. package/src/Common/EncodingDataBase.ts +31 -0
  89. package/src/Common/EncodingEntry.ts +17 -0
  90. package/src/Common/EncodingLookupResult.ts +10 -0
  91. package/src/Common/Helpers.ts +13 -0
  92. package/src/Common/InlineSvg.ts +15 -0
  93. package/src/Conversion/CharacterAutoConvert.ts +108 -0
  94. package/src/Conversion/CharacterConversion.ts +89 -0
  95. package/src/Conversion/CharacterEncoding.ts +9 -0
  96. package/src/Conversion/CharacterTableEntry.ts +23 -0
  97. package/src/Conversion/SignificantFigures.ts +55 -0
  98. package/src/Conversion/StringAutoConvert.ts +56 -0
  99. package/src/Morse/MorseCharacter.ts +112 -0
  100. package/src/Morse/MorseData.ts +143 -0
  101. package/src/Morse/MorseEncoding.ts +98 -0
  102. package/src/Morse/MorseString.ts +106 -0
  103. package/src/Nato/NatoCharacter.ts +9 -0
  104. package/src/Nato/NatoData.ts +49 -0
  105. package/src/NavalFlags/LICENSE +7 -0
  106. package/src/NavalFlags/NavalFlags.ts +293 -0
  107. package/src/Resistor/Resistor.ts +135 -0
  108. package/src/Resistor/ResistorColorEntry.ts +43 -0
  109. package/src/Semaphore/SemaphoreCharacter.ts +107 -0
  110. package/src/Semaphore/SemaphoreData.ts +58 -0
  111. package/src/Semaphore/SemaphoreDegrees.ts +26 -0
  112. package/src/Semaphore/SemaphoreDirection.ts +11 -0
  113. package/src/Semaphore/SemaphoreEncoding.ts +48 -0
  114. package/src/Semaphore/SemaphoreStream.ts +89 -0
  115. package/src/WordSearch/Point.ts +4 -0
  116. package/src/WordSearch/Result.ts +10 -0
  117. package/src/WordSearch/WordSearchDirection.ts +6 -0
  118. package/src/WordSearch/WordSearchSolver.ts +271 -0
  119. package/src/index.ts +38 -0
  120. 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 = exports.SemaphoreEncoding || (exports.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":";;;AAEA,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,GAAjB,yBAAiB,KAAjB,yBAAiB,QA6C5B"}
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;IAM1B,YAAY,KAA2B;QALtB,WAAM,GAAwB,EAAE,CAAC;QAE1C,gBAAW,GAAG,EAAE,CAAC;QACjB,qBAAgB,GAAG,CAAC,CAAC;QAG3B,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
+ {"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"}
@@ -2,6 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Result = void 0;
4
4
  class Result {
5
+ word;
6
+ points;
5
7
  constructor(word, wordPoints) {
6
8
  this.word = word;
7
9
  this.points = Array.from(wordPoints);
@@ -1 +1 @@
1
- {"version":3,"file":"Result.js","sourceRoot":"","sources":["../../../src/WordSearch/Result.ts"],"names":[],"mappings":";;;AAEA,MAAa,MAAM;IAGjB,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"}
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 = exports.WordSearchDirection || (exports.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,GAAnB,2BAAmB,KAAnB,2BAAmB,QAK9B"}
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 = exports.WordSearchSpaceTreatment || (exports.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":"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"}
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,wCAAxB,wBAAwB,QAInC;AAED,MAAa,gBAAgB;IAC3B,2DAA2D;IACnD,OAAO,CAAa;IAC5B,6CAA6C;IACrC,WAAW,CAAa;IAChC,6CAA6C;IACrC,QAAQ,CAA0B;IAC1C,kDAAkD;IAC1C,QAAQ,CAAU;IAC1B,gCAAgC;IACxB,eAAe,CAA2B;IAElD;QACE,qCAAqC;QACrC,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QACzB,yCAAyC;QACzC,IAAI,CAAC,WAAW,GAAG;YACjB,sBAAsB;YACtB,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACP,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACP,WAAW;YACX,CAAC,CAAC,EAAE,CAAC,CAAC;YACN,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACR,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SACR,CAAC;QACF,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,eAAe,GAAG,wBAAwB,CAAC,IAAI,CAAC;IACvD,CAAC;IAED,QAAQ,CAAC,KAAe;QACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;gBAChD,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;aAClE;YACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YACzB,IAAI,IAAI,KAAK,EAAE,EAAE;gBACf,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;aAC7B;iBAAM;gBACL,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;aAClE;SACF;IACH,CAAC;IAED,SAAS,CAAC,aAAqB;QAC7B,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAe,EAAE,CAAC;QAC5B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;SAC3B;QACD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,OAAO,CAAC,MAAkB;QACxB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAED,aAAa,CAAC,SAA8B;QAC1C,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IACE,SAAS,KAAK,yCAAmB,CAAC,QAAQ;YAC1C,SAAS,KAAK,yCAAmB,CAAC,mBAAmB,EACrD;YACA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;gBACzC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACN,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACP,CAAC,CAAC,EAAE,CAAC,CAAC;gBACN,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;aACR,CAAC,CAAC;SACJ;QACD,IACE,SAAS,KAAK,yCAAmB,CAAC,QAAQ;YAC1C,SAAS,KAAK,yCAAmB,CAAC,mBAAmB,EACrD;YACA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;gBACzC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACN,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACR,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;aACR,CAAC,CAAC;SACJ;IACH,CAAC;IAED,iBAAiB,CAAC,SAAmC;QACnD,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QAEjC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3B,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;IACH,CAAC;IAED,UAAU,CAAC,OAAgB;QACzB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,SAAS;QACP,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACpC,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,OAAO,EAAE,IAAI,EAAE,EAAE;YACzC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;YAC7C,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,UAAU,EAAE,IAAI,EAAE,EAAE;gBAC5C,MAAM,CAAC,GAAU,EAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAC,CAAC;gBACpC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACpC,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;aAC/B;SACF;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,MAAM,CAAC,KAAY;QACzB,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,MAAM,OAAO,GAAY,EAAE,CAAC;YAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;YAC5D,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;SAC7B;aAAM;YACL,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,WAAW,EAAE;gBAC1C,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;gBAC9D,OAAO,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,CAAC;aACrC;SACF;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,QAAQ,CACd,KAAY,EACZ,OAAmB,EACnB,OAAgB;QAEhB,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACtB,OAAO,OAAO,CAAC;SAChB;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEpB,IAAI,aAAa,GAAG,EAAE,CAAC;QAEvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACvC,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACtB,aAAa,GAAG,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SAC1D;QAED,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QAC/D,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;YAChC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACtB,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,OAAO,CAAC;SAChB;QAED,IAAI,eAAe,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE;YACjD,MAAM,SAAS,GAAG,IAAI,eAAM,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YACrD,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACzB;QAED,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,WAAW,EAAE;YAC1C,MAAM,IAAI,GAAU;gBAClB,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;gBAC3B,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;aAC5B,CAAC;YAEF,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;gBACzB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;aACxD;SACF;QAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtB,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,SAAS,CAAC,KAAY,EAAE,SAAmB;QACjD,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,cAAc;QACd,IAAI,YAAY,GAAG,KAAK,CAAC;QACzB,IAAI,aAAa,GAAG,EAAE,CAAC;QACvB,MAAM,YAAY,GAAG,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;YACpC,aAAa;gBACX,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAE/D,oDAAoD;YACpD,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;YAE/D,uDAAuD;YACvD,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;gBAChC,MAAM;aACP;YAED,MAAM,CAAC,GAAU,EAAC,CAAC,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC,EAAC,CAAC;YACxD,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAErB,wEAAwE;YACxE,IAAI,eAAe,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE;gBACjD,MAAM,SAAS,GAAG,IAAI,eAAM,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;gBAC1D,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACzB;YACD,MAAM,IAAI,GAAU;gBAClB,CAAC,EAAE,YAAY,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;gBAChC,CAAC,EAAE,YAAY,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;aACjC,CAAC;YACF,YAAY,GAAG,IAAI,CAAC;SACrB;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,UAAU,CAAC,KAAY;QAC7B,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACjD,OAAO,KAAK,CAAC;SACd;QACD,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;YAC1D,OAAO,KAAK,CAAC;SACd;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,WAAW;QACjB,IACE,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YACzB,IAAI,CAAC,eAAe,KAAK,wBAAwB,CAAC,IAAI,EACtD;YACA,OAAO;SACR;QAED,MAAM,UAAU,GAAG,EAAE,CAAC;QACtB,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;YACrD,MAAM,IAAI,GAAG,EAAE,CAAC;YAChB,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;gBAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;gBACxC,IAAI,MAAM,KAAK,GAAG,EAAE;oBAClB,QAAQ,GAAG,IAAI,CAAC;iBACjB;gBACD,IACE,IAAI,CAAC,eAAe,KAAK,wBAAwB,CAAC,SAAS;oBAC3D,MAAM,KAAK,GAAG,EACd;oBACA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;iBACrC;qBAAM,IAAI,MAAM,KAAK,GAAG,IAAI,QAAQ,EAAE;oBACrC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;iBACrC;aACF;YACD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;gBACnB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACvB;SACF;QACD,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC;IAC5B,CAAC;CACF;AAlQD,4CAkQC"}
package/package.json CHANGED
@@ -1,39 +1,40 @@
1
- {
2
- "name": "puzzle-lib",
3
- "version": "1.5.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
- ],
10
- "scripts": {
11
- "check": "gts check",
12
- "clean": "gts clean",
13
- "compile": "tsc",
14
- "fix": "gts fix",
15
- "posttest": "npm run check",
16
- "prepare": "npm run compile",
17
- "pretest": "npm run compile",
18
- "test": "mocha"
19
- },
20
- "repository": {
21
- "type": "git",
22
- "url": "git+https://github.com/puzztool/puzzle-lib.git"
23
- },
24
- "author": "Kyle Farnung",
25
- "license": "MIT",
26
- "bugs": {
27
- "url": "https://github.com/puzztool/puzzle-lib/issues"
28
- },
29
- "homepage": "https://github.com/puzztool/puzzle-lib#readme",
30
- "devDependencies": {
31
- "@types/node": "^14.11.2",
32
- "gts": "^2.0.2",
33
- "mocha": "^8.1.3",
34
- "typescript": "^4.0.3"
35
- },
36
- "dependencies": {
37
- "trie-prefix-tree": "^1.5.1"
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,9 @@
1
+ export enum BrailleDot {
2
+ None = 0,
3
+ UpperLeft = 1 << 0,
4
+ MiddleLeft = 1 << 1,
5
+ LowerLeft = 1 << 2,
6
+ UpperRight = 1 << 3,
7
+ MiddleRight = 1 << 4,
8
+ LowerRight = 1 << 5,
9
+ }
@@ -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
+ }