@rr0/cms 0.1.16 → 0.1.18

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 (454) hide show
  1. package/README.md +20 -2
  2. package/dist/DefaultContentVisitor.d.ts +1 -3
  3. package/dist/OpenGraphCommand.js +1 -1
  4. package/dist/OpenGraphCommand.test.js +14 -0
  5. package/dist/RR0Build.d.ts +56 -0
  6. package/dist/RR0Build.js +253 -0
  7. package/dist/RR0Build.test.js +106 -0
  8. package/dist/RR0Context.d.ts +6 -4
  9. package/dist/RR0Context.js +4 -0
  10. package/dist/TableReplaceCommand.js +2 -1
  11. package/dist/anchor/AnchorReplaceCommandTest.js +23 -0
  12. package/dist/anchor/AnchorReplacerTest.js +60 -0
  13. package/dist/anchor/CaseAnchorHandler.js +1 -1
  14. package/dist/anchor/DataAnchorHandler.d.ts +1 -2
  15. package/dist/book/Book.d.ts +1 -1
  16. package/dist/book/BookDirectoryStep.d.ts +3 -3
  17. package/dist/book/BookDirectoryStep.js +2 -1
  18. package/dist/book/BookService.d.ts +3 -3
  19. package/dist/book/BookService.js +2 -2
  20. package/dist/index.d.ts +1 -2
  21. package/dist/index.js +1 -2
  22. package/dist/lang/LanguageReplaceCommant.test.js +17 -0
  23. package/dist/lang/RR0Messages.d.ts +1 -0
  24. package/dist/lang/RR0Messages_en.d.ts +1 -0
  25. package/dist/lang/RR0Messages_en.js +2 -1
  26. package/dist/lang/RR0Messages_fr.d.ts +1 -0
  27. package/dist/lang/RR0Messages_fr.js +2 -1
  28. package/dist/org/Cities.js +12 -20
  29. package/dist/org/CountryMessageList_en.js +2 -1
  30. package/dist/org/CountryMessageList_fr.js +2 -1
  31. package/dist/org/Organization.d.ts +1 -2
  32. package/dist/org/OrganizationFactory.d.ts +1 -2
  33. package/dist/org/OrganizationFactory.js +1 -1
  34. package/dist/org/OrganizationService.d.ts +5 -1
  35. package/dist/org/OrganizationService.js +5 -1
  36. package/dist/org/au/Australia_en.d.ts +1 -1
  37. package/dist/org/au/Australia_fr.d.ts +1 -1
  38. package/dist/org/au/region/vic/Victoria.d.ts +1 -1
  39. package/dist/org/au/region/vic/Victoria.js +1 -1
  40. package/dist/org/au/region/vic/VictoriaMessages_en.d.ts +2 -2
  41. package/dist/org/au/region/vic/VictoriaMessages_en.js +2 -2
  42. package/dist/org/au/region/vic/VictoriaMessages_fr.d.ts +2 -2
  43. package/dist/org/au/region/vic/VictoriaMessages_fr.js +2 -2
  44. package/dist/org/cn/China.d.ts +6 -0
  45. package/dist/org/cn/China.js +6 -0
  46. package/dist/org/cn/ChinaMessages.d.ts +1 -0
  47. package/dist/org/cn/ChinaMessages_cn.d.ts +3 -0
  48. package/dist/org/cn/ChinaMessages_cn.js +5 -0
  49. package/dist/org/cn/ChinaMessages_en.d.ts +3 -0
  50. package/dist/org/cn/ChinaMessages_en.js +5 -0
  51. package/dist/org/cn/ChinaMessages_fr.d.ts +3 -0
  52. package/dist/org/cn/ChinaMessages_fr.js +5 -0
  53. package/dist/org/cn/region/ChinaCities.d.ts +2 -0
  54. package/dist/org/cn/region/ChinaCities.js +4 -0
  55. package/dist/org/cn/region/ChinaRegion.d.ts +4 -0
  56. package/dist/org/cn/region/ChinaRegion.js +5 -0
  57. package/dist/org/cn/region/ChinaRegionCode.d.ts +3 -0
  58. package/dist/org/cn/region/ChinaRegionCode.js +4 -0
  59. package/dist/org/cn/region/ChinaRegions.d.ts +2 -0
  60. package/dist/org/cn/region/ChinaRegions.js +4 -0
  61. package/dist/org/cn/region/n/NorthChina.d.ts +2 -0
  62. package/dist/org/cn/region/n/NorthChina.js +4 -0
  63. package/dist/org/cn/region/n/NorthChinaDepartmentCode.d.ts +3 -0
  64. package/dist/org/cn/region/n/NorthChinaDepartmentCode.js +4 -0
  65. package/dist/org/cn/region/n/NorthChinaMessages_cn.d.ts +6 -0
  66. package/dist/org/cn/region/n/NorthChinaMessages_cn.js +6 -0
  67. package/dist/org/cn/region/n/NorthChinaMessages_en.d.ts +6 -0
  68. package/dist/org/cn/region/n/NorthChinaMessages_en.js +6 -0
  69. package/dist/org/cn/region/n/NorthChinaMessages_fr.d.ts +6 -0
  70. package/dist/org/cn/region/n/NorthChinaMessages_fr.js +6 -0
  71. package/dist/org/cn/region/n/ji/Hebei.d.ts +2 -0
  72. package/dist/org/cn/region/n/ji/Hebei.js +5 -0
  73. package/dist/org/cn/region/n/ji/HebeiCities.d.ts +2 -0
  74. package/dist/org/cn/region/n/ji/HebeiCities.js +4 -0
  75. package/dist/org/cn/region/n/ji/HebeiCityCode.d.ts +3 -0
  76. package/dist/org/cn/region/n/ji/HebeiCityCode.js +4 -0
  77. package/dist/org/cn/region/n/ji/HebeiMessages_cn.d.ts +4 -0
  78. package/dist/org/cn/region/n/ji/HebeiMessages_cn.js +6 -0
  79. package/dist/org/cn/region/n/ji/HebeiMessages_en.d.ts +4 -0
  80. package/dist/org/cn/region/n/ji/HebeiMessages_en.js +6 -0
  81. package/dist/org/cn/region/n/ji/HebeiMessages_fr.d.ts +4 -0
  82. package/dist/org/cn/region/n/ji/HebeiMessages_fr.js +6 -0
  83. package/dist/org/cn/region/n/ji/Tianjin/Tianjin.d.ts +2 -0
  84. package/dist/org/cn/region/n/ji/Tianjin/Tianjin.js +5 -0
  85. package/dist/org/cn/region/n/ji/Tianjin/TianjinMessages_cn.d.ts +2 -0
  86. package/dist/org/cn/region/n/ji/Tianjin/TianjinMessages_cn.js +2 -0
  87. package/dist/org/cn/region/n/ji/Tianjin/TianjinMessages_en.d.ts +2 -0
  88. package/dist/org/cn/region/n/ji/Tianjin/TianjinMessages_en.js +2 -0
  89. package/dist/org/cn/region/n/ji/Tianjin/TianjinMessages_fr.d.ts +2 -0
  90. package/dist/org/cn/region/n/ji/Tianjin/TianjinMessages_fr.js +3 -0
  91. package/dist/org/country/CountryMessages.test.d.ts +1 -0
  92. package/dist/org/country/CountryMessages.test.js +20 -0
  93. package/dist/org/country/CountryService.test.d.ts +1 -0
  94. package/dist/org/country/CountryService.test.js +11 -0
  95. package/dist/org/country/region/RegionMessages.test.d.ts +1 -0
  96. package/dist/org/country/region/RegionMessages.test.js +17 -0
  97. package/dist/org/country/region/RegionService.test.d.ts +1 -0
  98. package/dist/org/country/region/RegionService.test.js +13 -0
  99. package/dist/org/country/region/department/DeparmentMessages.test.d.ts +1 -0
  100. package/dist/org/country/region/department/DeparmentMessages.test.js +22 -0
  101. package/dist/org/country/region/department/DepartmentService.test.d.ts +1 -0
  102. package/dist/org/country/region/department/DepartmentService.test.js +13 -0
  103. package/dist/org/country/region/department/city/CityMessages.test.d.ts +1 -0
  104. package/dist/org/country/region/department/city/CityMessages.test.js +34 -0
  105. package/dist/org/country/region/department/city/CityService.test.d.ts +1 -0
  106. package/dist/org/country/region/department/city/CityService.test.js +19 -0
  107. package/dist/org/do/DominicanRepublicMessages.d.ts +1 -1
  108. package/dist/org/do/DominicanRepublic_en.d.ts +2 -2
  109. package/dist/org/do/DominicanRepublic_fr.d.ts +2 -2
  110. package/dist/org/eu/fr/FranceMessages.test.d.ts +1 -0
  111. package/dist/org/eu/fr/FranceMessages.test.js +11 -0
  112. package/dist/org/eu/fr/cnes/geipan/geipan/GeipanDatasource.test.d.ts +1 -0
  113. package/dist/org/eu/fr/cnes/geipan/geipan/GeipanDatasource.test.js +30 -0
  114. package/dist/org/us/region/UsaCountyCode.d.ts +7 -1
  115. package/dist/org/us/region/UsaCountyCode.js +7 -1
  116. package/dist/org/us/region/mn/MinnesotaCities.js +2 -2
  117. package/dist/org/us/region/mn/MinnesotaCounties.js +2 -2
  118. package/dist/org/us/region/mn/Minnesota_en.d.ts +2 -2
  119. package/dist/org/us/region/mn/Minnesota_en.js +2 -2
  120. package/dist/org/us/region/mn/Minnesota_fr.d.ts +2 -2
  121. package/dist/org/us/region/mn/Minnesota_fr.js +2 -2
  122. package/dist/org/us/region/mn/{kalamazoo/Kalamazoo.d.ts → hennepin/Hennepin.d.ts} +1 -1
  123. package/dist/org/us/region/mn/{kalamazoo/Kalamazoo.js → hennepin/Hennepin.js} +1 -1
  124. package/dist/org/us/region/mn/{kalamazoo/KalamazooCities.d.ts → hennepin/HennepinCities.d.ts} +1 -1
  125. package/dist/org/us/region/mn/hennepin/HennepinCities.js +4 -0
  126. package/dist/org/us/region/mn/hennepin/HennepinCityCode.d.ts +3 -0
  127. package/dist/org/us/region/mn/hennepin/HennepinCityCode.js +4 -0
  128. package/dist/org/us/region/mn/hennepin/HennepinMessages_en.d.ts +4 -0
  129. package/dist/org/us/region/mn/hennepin/HennepinMessages_en.js +6 -0
  130. package/dist/org/us/region/mn/hennepin/HennepinMessages_fr.d.ts +4 -0
  131. package/dist/org/us/region/mn/hennepin/HennepinMessages_fr.js +6 -0
  132. package/dist/org/us/region/mn/hennepin/Minneapolis/Minneapolis.d.ts +1 -0
  133. package/dist/org/us/region/mn/hennepin/Minneapolis/Minneapolis.js +5 -0
  134. package/dist/org/us/region/mn/hennepin/Minneapolis/MinneapolisMessages.d.ts +2 -0
  135. package/dist/org/us/region/mn/hennepin/Minneapolis/MinneapolisMessages.js +2 -0
  136. package/dist/org/us/region/mo/MissouriCities.js +2 -2
  137. package/dist/org/us/region/mo/MissouriCounties.js +2 -2
  138. package/dist/org/us/region/mo/Missouri_en.d.ts +2 -2
  139. package/dist/org/us/region/mo/Missouri_en.js +2 -2
  140. package/dist/org/us/region/mo/Missouri_fr.d.ts +2 -2
  141. package/dist/org/us/region/mo/Missouri_fr.js +2 -2
  142. package/dist/org/us/region/{mn/kalamazoo/galesburg/Galesburg.d.ts → mo/pike/Louisiana/Louisiana.d.ts} +1 -1
  143. package/dist/org/us/region/mo/pike/Louisiana/Louisiana.js +5 -0
  144. package/dist/org/us/region/{mn/kalamazoo/galesburg/GalesburgMessages.d.ts → mo/pike/Louisiana/LouisianaMessages.d.ts} +1 -1
  145. package/dist/org/us/region/{ms/kalamazoo/galesburg/GalesburgMessages.js → mo/pike/Louisiana/LouisianaMessages.js} +1 -1
  146. package/dist/org/us/region/mo/{kalamazoo/Kalamazoo.d.ts → pike/Pike.d.ts} +1 -1
  147. package/dist/org/us/region/mo/{kalamazoo/Kalamazoo.js → pike/Pike.js} +1 -1
  148. package/dist/org/us/region/mo/{kalamazoo/KalamazooCities.d.ts → pike/PikeCities.d.ts} +1 -1
  149. package/dist/org/us/region/mo/pike/PikeCities.js +4 -0
  150. package/dist/org/us/region/mo/pike/PikeCityCode.d.ts +3 -0
  151. package/dist/org/us/region/mo/pike/PikeCityCode.js +4 -0
  152. package/dist/org/us/region/mo/pike/PikeMessages_en.d.ts +4 -0
  153. package/dist/org/us/region/mo/pike/PikeMessages_en.js +6 -0
  154. package/dist/org/us/region/mo/pike/PikeMessages_fr.d.ts +4 -0
  155. package/dist/org/us/region/mo/pike/PikeMessages_fr.js +6 -0
  156. package/dist/org/us/region/ms/MississippiCities.js +2 -2
  157. package/dist/org/us/region/ms/MississippiCounties.js +2 -2
  158. package/dist/org/us/region/ms/Mississippi_en.d.ts +2 -2
  159. package/dist/org/us/region/ms/Mississippi_en.js +2 -2
  160. package/dist/org/us/region/ms/Mississippi_fr.d.ts +2 -2
  161. package/dist/org/us/region/ms/Mississippi_fr.js +2 -2
  162. package/dist/org/us/region/ms/{kalamazoo/Kalamazoo.d.ts → hinds/Hinds.d.ts} +1 -1
  163. package/dist/org/us/region/ms/{kalamazoo/Kalamazoo.js → hinds/Hinds.js} +1 -1
  164. package/dist/org/us/region/ms/{kalamazoo/KalamazooCities.d.ts → hinds/HindsCities.d.ts} +1 -1
  165. package/dist/org/us/region/ms/hinds/HindsCities.js +4 -0
  166. package/dist/org/us/region/ms/hinds/HindsCityCode.d.ts +3 -0
  167. package/dist/org/us/region/ms/hinds/HindsCityCode.js +4 -0
  168. package/dist/org/us/region/ms/hinds/HindsMessages_en.d.ts +4 -0
  169. package/dist/org/us/region/ms/hinds/HindsMessages_en.js +6 -0
  170. package/dist/org/us/region/ms/hinds/HindsMessages_fr.d.ts +4 -0
  171. package/dist/org/us/region/ms/hinds/HindsMessages_fr.js +6 -0
  172. package/dist/org/us/region/ms/hinds/Jackson/Jackson.d.ts +1 -0
  173. package/dist/org/us/region/ms/hinds/Jackson/Jackson.js +5 -0
  174. package/dist/org/us/region/ms/{kalamazoo/galesburg/GalesburgMessages.d.ts → hinds/Jackson/JacksonMessages.d.ts} +1 -1
  175. package/dist/org/us/region/ms/hinds/Jackson/JacksonMessages.js +2 -0
  176. package/dist/org/us/region/mt/MontanaCities.js +2 -2
  177. package/dist/org/us/region/mt/MontanaCounties.js +2 -2
  178. package/dist/org/us/region/mt/Montana_en.d.ts +2 -2
  179. package/dist/org/us/region/mt/Montana_en.js +2 -2
  180. package/dist/org/us/region/mt/Montana_fr.d.ts +2 -2
  181. package/dist/org/us/region/mt/Montana_fr.js +2 -2
  182. package/dist/org/us/region/mt/{kalamazoo/Kalamazoo.d.ts → cascade/Cascade.d.ts} +1 -1
  183. package/dist/org/us/region/mt/{kalamazoo/Kalamazoo.js → cascade/Cascade.js} +1 -1
  184. package/dist/org/us/region/mt/{kalamazoo/KalamazooCities.d.ts → cascade/CascadeCities.d.ts} +1 -1
  185. package/dist/org/us/region/mt/cascade/CascadeCities.js +4 -0
  186. package/dist/org/us/region/mt/cascade/CascadeCityCode.d.ts +3 -0
  187. package/dist/org/us/region/mt/cascade/CascadeCityCode.js +4 -0
  188. package/dist/org/us/region/mt/cascade/CascadeMessages_en.d.ts +4 -0
  189. package/dist/org/us/region/mt/cascade/CascadeMessages_en.js +6 -0
  190. package/dist/org/us/region/mt/cascade/CascadeMessages_fr.d.ts +4 -0
  191. package/dist/org/us/region/mt/cascade/CascadeMessages_fr.js +6 -0
  192. package/dist/org/us/region/mt/cascade/GreatFalls/GreatFalls.d.ts +1 -0
  193. package/dist/org/us/region/mt/cascade/GreatFalls/GreatFalls.js +5 -0
  194. package/dist/org/us/region/mt/{kalamazoo/galesburg/GalesburgMessages.d.ts → cascade/GreatFalls/GreatFallsMessages.d.ts} +1 -1
  195. package/dist/org/us/region/mt/cascade/GreatFalls/GreatFallsMessages.js +2 -0
  196. package/dist/org/us/region/nh/NewHampshireCities.js +2 -2
  197. package/dist/org/us/region/nh/NewHampshireCounties.js +2 -2
  198. package/dist/org/us/region/nh/NewHampshire_en.d.ts +2 -2
  199. package/dist/org/us/region/nh/NewHampshire_en.js +2 -2
  200. package/dist/org/us/region/nh/NewHampshire_fr.d.ts +2 -2
  201. package/dist/org/us/region/nh/NewHampshire_fr.js +2 -2
  202. package/dist/org/us/region/nh/rockingham/Portsmouth/Portsmouth.d.ts +1 -0
  203. package/dist/org/us/region/nh/rockingham/Portsmouth/Portsmouth.js +5 -0
  204. package/dist/org/us/region/nh/rockingham/Portsmouth/PortsmouthMessages.d.ts +2 -0
  205. package/dist/org/us/region/nh/rockingham/Portsmouth/PortsmouthMessages.js +2 -0
  206. package/dist/org/us/region/nh/rockingham/Rockingham.d.ts +2 -0
  207. package/dist/org/us/region/nh/{kalamazoo/Kalamazoo.js → rockingham/Rockingham.js} +1 -1
  208. package/dist/org/us/region/nh/rockingham/RockinghamCities.d.ts +2 -0
  209. package/dist/org/us/region/nh/rockingham/RockinghamCities.js +4 -0
  210. package/dist/org/us/region/nh/rockingham/RockinghamCityCode.d.ts +3 -0
  211. package/dist/org/us/region/nh/rockingham/RockinghamCityCode.js +4 -0
  212. package/dist/org/us/region/nh/rockingham/RockinghamMessages_en.d.ts +4 -0
  213. package/dist/org/us/region/nh/rockingham/RockinghamMessages_en.js +6 -0
  214. package/dist/org/us/region/nh/rockingham/RockinghamMessages_fr.d.ts +4 -0
  215. package/dist/org/us/region/nh/rockingham/RockinghamMessages_fr.js +6 -0
  216. package/dist/org/us/region/nv/NevadaCities.js +2 -2
  217. package/dist/org/us/region/nv/NevadaCounties.js +2 -2
  218. package/dist/org/us/region/nv/Nevada_en.d.ts +2 -2
  219. package/dist/org/us/region/nv/Nevada_en.js +2 -2
  220. package/dist/org/us/region/nv/Nevada_fr.d.ts +2 -2
  221. package/dist/org/us/region/nv/Nevada_fr.js +2 -2
  222. package/dist/org/us/region/nv/clark/Clark.d.ts +2 -0
  223. package/dist/org/us/region/nv/{kalamazoo/Kalamazoo.js → clark/Clark.js} +1 -1
  224. package/dist/org/us/region/nv/clark/ClarkCities.d.ts +2 -0
  225. package/dist/org/us/region/nv/clark/ClarkCities.js +4 -0
  226. package/dist/org/us/region/nv/clark/ClarkCityCode.d.ts +3 -0
  227. package/dist/org/us/region/nv/clark/ClarkCityCode.js +4 -0
  228. package/dist/org/us/region/nv/clark/ClarkMessages_en.d.ts +4 -0
  229. package/dist/org/us/region/nv/clark/ClarkMessages_en.js +6 -0
  230. package/dist/org/us/region/nv/clark/ClarkMessages_fr.d.ts +4 -0
  231. package/dist/org/us/region/nv/clark/ClarkMessages_fr.js +6 -0
  232. package/dist/org/us/region/nv/clark/LasVegas/LasVegas.d.ts +1 -0
  233. package/dist/org/us/region/nv/clark/LasVegas/LasVegas.js +5 -0
  234. package/dist/org/us/region/{mo/kalamazoo/galesburg/GalesburgMessages.d.ts → nv/clark/LasVegas/LasVegasMessages.d.ts} +1 -1
  235. package/dist/org/us/region/nv/clark/LasVegas/LasVegasMessages.js +2 -0
  236. package/dist/people/People.d.ts +1 -2
  237. package/dist/people/People.test.d.ts +1 -0
  238. package/dist/people/People.test.js +34 -0
  239. package/dist/people/PeopleDirectoryStep.d.ts +2 -2
  240. package/dist/people/PeopleDirectoryStepFactory.d.ts +27 -14
  241. package/dist/people/PeopleDirectoryStepFactory.js +66 -44
  242. package/dist/people/PeopleFactory.d.ts +1 -2
  243. package/dist/people/PeopleFactory.js +1 -1
  244. package/dist/people/PeopleFactory.test.d.ts +1 -0
  245. package/dist/people/PeopleFactory.test.js +81 -0
  246. package/dist/people/PeopleRegexReplaceCommand.test.d.ts +1 -0
  247. package/dist/people/PeopleRegexReplaceCommand.test.js +17 -0
  248. package/dist/people/PeopleReplacer.test.d.ts +1 -0
  249. package/dist/people/PeopleReplacer.test.js +58 -0
  250. package/dist/people/PeopleService.d.ts +1 -1
  251. package/dist/people/PeopleService.js +1 -1
  252. package/dist/people/author/AuthorReplaceCommandTest.d.ts +1 -0
  253. package/dist/people/author/AuthorReplaceCommandTest.js +49 -0
  254. package/dist/place/Place.d.ts +1 -2
  255. package/dist/place/PlaceReplacer.test.d.ts +1 -0
  256. package/dist/place/PlaceReplacer.test.js +91 -0
  257. package/dist/place/PlaceService.js +2 -2
  258. package/dist/place/PlaceService.test.d.ts +1 -0
  259. package/dist/place/PlaceService.test.js +28 -0
  260. package/dist/science/crypto/ufo/enquete/dossier/CaseDirectoryStep.d.ts +2 -3
  261. package/dist/science/crypto/ufo/enquete/dossier/CaseDirectoryStep.js +0 -4
  262. package/dist/science/crypto/ufo/enquete/dossier/CaseDirectoryStep.test.d.ts +1 -0
  263. package/dist/science/crypto/ufo/enquete/dossier/CaseDirectoryStep.test.js +34 -0
  264. package/dist/science/crypto/ufo/enquete/dossier/CaseFactory.d.ts +1 -2
  265. package/dist/science/crypto/ufo/enquete/dossier/CaseFactory.js +1 -1
  266. package/dist/science/crypto/ufo/enquete/dossier/CaseService.d.ts +1 -1
  267. package/dist/science/crypto/ufo/enquete/dossier/CaseService.js +1 -1
  268. package/dist/search/SearchIndexStep.js +2 -2
  269. package/dist/search/SearchVisitor.js +1 -1
  270. package/dist/source/PersistentSourceRegistry.d.ts +2 -2
  271. package/dist/source/PersistentSourceRegistry.js +8 -3
  272. package/dist/source/SourceFactory.d.ts +2 -2
  273. package/dist/source/SourceFactory.js +1 -1
  274. package/dist/source/SourceIndexStep.js +2 -2
  275. package/dist/source/SourceRegistry.d.ts +2 -2
  276. package/dist/source/SourceRenderer.d.ts +1 -1
  277. package/dist/source/SourceRenderer.js +1 -1
  278. package/dist/source/index.d.ts +0 -3
  279. package/dist/source/index.js +0 -3
  280. package/dist/tech/info/soft/API.d.ts +1 -1
  281. package/dist/tech/info/soft/APIFactory.d.ts +1 -2
  282. package/dist/tech/info/soft/APIFactory.js +1 -1
  283. package/dist/tech/info/soft/proj/impl/lang/CodeReplacerTest.d.ts +1 -0
  284. package/dist/tech/info/soft/proj/impl/lang/CodeReplacerTest.js +50 -0
  285. package/dist/test/RR0TestUtil.d.ts +21 -0
  286. package/dist/test/RR0TestUtil.js +72 -0
  287. package/dist/test/index.d.ts +1 -0
  288. package/dist/test/index.js +1 -0
  289. package/dist/time/EventRenderer.d.ts +3 -3
  290. package/dist/time/EventRenderer.js +1 -1
  291. package/dist/time/EventReplacerFactory.d.ts +1 -2
  292. package/dist/time/Time.js +1 -1
  293. package/dist/time/Time.test.d.ts +1 -0
  294. package/dist/time/Time.test.js +48 -0
  295. package/dist/time/TimeEventRenderer.test.d.ts +1 -0
  296. package/dist/time/TimeEventRenderer.test.js +56 -0
  297. package/dist/time/TimeService.d.ts +1 -2
  298. package/dist/time/TimeService.js +1 -1
  299. package/dist/time/TimeTagReplaceCommand.test.d.ts +1 -0
  300. package/dist/time/TimeTagReplaceCommand.test.js +17 -0
  301. package/dist/time/TimeTestUtil.d.ts +1 -1
  302. package/dist/time/TimeTestUtil.js +2 -2
  303. package/dist/time/TimeUrlBuilder.test.d.ts +1 -0
  304. package/dist/time/TimeUrlBuilder.test.js +46 -0
  305. package/dist/time/TitleReplaceCommand.test.d.ts +1 -0
  306. package/dist/time/TitleReplaceCommand.test.js +44 -0
  307. package/dist/time/datasource/ChronologyReplacer.test.d.ts +1 -0
  308. package/dist/time/datasource/ChronologyReplacer.test.js +29 -0
  309. package/dist/time/datasource/CsvMapper.test.d.ts +1 -0
  310. package/dist/time/datasource/CsvMapper.test.js +50 -0
  311. package/dist/time/datasource/DatasourceTestCase.d.ts +1 -1
  312. package/dist/time/datasource/DatasourceTestCase.js +3 -3
  313. package/dist/time/datasource/FileSource.d.ts +2 -1
  314. package/dist/time/datasource/FileSource.js +1 -1
  315. package/dist/time/datasource/JsonMapper.test.d.ts +1 -0
  316. package/dist/time/datasource/JsonMapper.test.js +23 -0
  317. package/dist/time/datasource/baseovnifrance/BaseOvniFranceCaseSummaryRR0Mapper.test.d.ts +1 -0
  318. package/dist/time/datasource/baseovnifrance/BaseOvniFranceCaseSummaryRR0Mapper.test.js +72 -0
  319. package/dist/time/datasource/baseovnifrance/BaseOvniFranceCsv.test.d.ts +1 -0
  320. package/dist/time/datasource/baseovnifrance/BaseOvniFranceCsv.test.js +44 -0
  321. package/dist/time/datasource/baseovnifrance/BaseOvniFranceDatasource.test.d.ts +1 -0
  322. package/dist/time/datasource/baseovnifrance/BaseOvniFranceDatasource.test.js +30 -0
  323. package/dist/time/datasource/fufora/FuforaDatasource.test.d.ts +1 -0
  324. package/dist/time/datasource/fufora/FuforaDatasource.test.js +30 -0
  325. package/dist/time/datasource/nuforc/NuforcDatasource.test.d.ts +1 -0
  326. package/dist/time/datasource/nuforc/NuforcDatasource.test.js +30 -0
  327. package/dist/time/datasource/nuforc/NuforcRR0Mapper.test.d.ts +1 -0
  328. package/dist/time/datasource/nuforc/NuforcRR0Mapper.test.js +110 -0
  329. package/dist/time/datasource/rr0/RR0CaseSummary.d.ts +1 -2
  330. package/dist/time/datasource/rr0/RR0Datasource.test.d.ts +19 -0
  331. package/dist/time/datasource/rr0/RR0Datasource.test.js +82 -0
  332. package/dist/time/datasource/rr0/RR0HttpDatasource.d.ts +1 -1
  333. package/dist/time/datasource/sceau/SceauDatasource.test.d.ts +17 -0
  334. package/dist/time/datasource/sceau/SceauDatasource.test.js +84 -0
  335. package/dist/time/datasource/ufo-search/UfoSearchCaseRR0Mapper.js +1 -1
  336. package/dist/time/datasource/ufo-search/UfoSearchDatasource.test.d.ts +1 -0
  337. package/dist/time/datasource/ufo-search/UfoSearchDatasource.test.js +30 -0
  338. package/dist/time/datasource/ufo-search/UfoSearchFileDatasource.js +2 -2
  339. package/dist/time/datasource/urecat/UrecatDatasource.test.d.ts +1 -0
  340. package/dist/time/datasource/urecat/UrecatDatasource.test.js +56 -0
  341. package/dist/time/datasource/urecat/UrecatHttpDatasource.js +1 -1
  342. package/dist/time/html/TimeRenderer.js +1 -1
  343. package/dist/time/html/TimeReplacer.test.d.ts +1 -0
  344. package/dist/time/html/TimeReplacer.test.js +225 -0
  345. package/dist/time/text/RelativeTimeTextBuilder.js +53 -102
  346. package/dist/time/text/RelativeTimeTextBuilder.test.d.ts +1 -0
  347. package/dist/time/text/RelativeTimeTextBuilder.test.js +125 -0
  348. package/dist/time/text/TimeTextBuilder.d.ts +4 -5
  349. package/dist/time/text/TimeTextBuilder.js +8 -21
  350. package/dist/time/text/TimeTextBuilder.test.d.ts +1 -0
  351. package/dist/time/text/TimeTextBuilder.test.js +63 -0
  352. package/dist/util/cli/CLI.test.d.ts +1 -0
  353. package/dist/util/cli/CLI.test.js +13 -0
  354. package/dist/util/html/HtmlTable.test.d.ts +1 -0
  355. package/dist/util/html/HtmlTable.test.js +11 -0
  356. package/dist/util/string/StringUtil.test.d.ts +1 -0
  357. package/dist/util/string/StringUtil.test.js +22 -0
  358. package/dist/util/url/UrlUtil.test.d.ts +1 -0
  359. package/dist/util/url/UrlUtil.test.js +14 -0
  360. package/package.json +11 -6
  361. package/dist/build.js +0 -299
  362. package/dist/data/AbstractDataFactory.d.ts +0 -16
  363. package/dist/data/AbstractDataFactory.js +0 -60
  364. package/dist/data/AbstractDataService.d.ts +0 -12
  365. package/dist/data/AbstractDataService.js +0 -13
  366. package/dist/data/AllDataService.d.ts +0 -16
  367. package/dist/data/AllDataService.js +0 -54
  368. package/dist/data/RR0Data.d.ts +0 -81
  369. package/dist/data/RR0DataFactory.d.ts +0 -7
  370. package/dist/data/TypedDataFactory.d.ts +0 -14
  371. package/dist/data/TypedDataFactory.js +0 -29
  372. package/dist/data/index.d.ts +0 -6
  373. package/dist/data/index.js +0 -6
  374. package/dist/event/RR0Event.d.ts +0 -7
  375. package/dist/event/RR0EventFactory.d.ts +0 -7
  376. package/dist/event/RR0EventFactory.js +0 -21
  377. package/dist/event/index.d.ts +0 -2
  378. package/dist/event/index.js +0 -2
  379. package/dist/org/us/region/mn/kalamazoo/KalamazooCities.js +0 -4
  380. package/dist/org/us/region/mn/kalamazoo/KalamazooCityCode.d.ts +0 -3
  381. package/dist/org/us/region/mn/kalamazoo/KalamazooCityCode.js +0 -4
  382. package/dist/org/us/region/mn/kalamazoo/KalamazooMessages_en.d.ts +0 -4
  383. package/dist/org/us/region/mn/kalamazoo/KalamazooMessages_en.js +0 -6
  384. package/dist/org/us/region/mn/kalamazoo/KalamazooMessages_fr.d.ts +0 -4
  385. package/dist/org/us/region/mn/kalamazoo/KalamazooMessages_fr.js +0 -6
  386. package/dist/org/us/region/mn/kalamazoo/galesburg/Galesburg.js +0 -5
  387. package/dist/org/us/region/mn/kalamazoo/galesburg/GalesburgMessages.js +0 -2
  388. package/dist/org/us/region/mo/kalamazoo/KalamazooCities.js +0 -4
  389. package/dist/org/us/region/mo/kalamazoo/KalamazooCityCode.d.ts +0 -3
  390. package/dist/org/us/region/mo/kalamazoo/KalamazooCityCode.js +0 -4
  391. package/dist/org/us/region/mo/kalamazoo/KalamazooMessages_en.d.ts +0 -4
  392. package/dist/org/us/region/mo/kalamazoo/KalamazooMessages_en.js +0 -6
  393. package/dist/org/us/region/mo/kalamazoo/KalamazooMessages_fr.d.ts +0 -4
  394. package/dist/org/us/region/mo/kalamazoo/KalamazooMessages_fr.js +0 -6
  395. package/dist/org/us/region/mo/kalamazoo/galesburg/Galesburg.d.ts +0 -1
  396. package/dist/org/us/region/mo/kalamazoo/galesburg/Galesburg.js +0 -5
  397. package/dist/org/us/region/mo/kalamazoo/galesburg/GalesburgMessages.js +0 -2
  398. package/dist/org/us/region/ms/kalamazoo/KalamazooCities.js +0 -4
  399. package/dist/org/us/region/ms/kalamazoo/KalamazooCityCode.d.ts +0 -3
  400. package/dist/org/us/region/ms/kalamazoo/KalamazooCityCode.js +0 -4
  401. package/dist/org/us/region/ms/kalamazoo/KalamazooMessages_en.d.ts +0 -4
  402. package/dist/org/us/region/ms/kalamazoo/KalamazooMessages_en.js +0 -6
  403. package/dist/org/us/region/ms/kalamazoo/KalamazooMessages_fr.d.ts +0 -4
  404. package/dist/org/us/region/ms/kalamazoo/KalamazooMessages_fr.js +0 -6
  405. package/dist/org/us/region/ms/kalamazoo/galesburg/Galesburg.d.ts +0 -1
  406. package/dist/org/us/region/ms/kalamazoo/galesburg/Galesburg.js +0 -5
  407. package/dist/org/us/region/mt/kalamazoo/KalamazooCities.js +0 -4
  408. package/dist/org/us/region/mt/kalamazoo/KalamazooCityCode.d.ts +0 -3
  409. package/dist/org/us/region/mt/kalamazoo/KalamazooCityCode.js +0 -4
  410. package/dist/org/us/region/mt/kalamazoo/KalamazooMessages_en.d.ts +0 -4
  411. package/dist/org/us/region/mt/kalamazoo/KalamazooMessages_en.js +0 -6
  412. package/dist/org/us/region/mt/kalamazoo/KalamazooMessages_fr.d.ts +0 -4
  413. package/dist/org/us/region/mt/kalamazoo/KalamazooMessages_fr.js +0 -6
  414. package/dist/org/us/region/mt/kalamazoo/galesburg/Galesburg.d.ts +0 -1
  415. package/dist/org/us/region/mt/kalamazoo/galesburg/Galesburg.js +0 -5
  416. package/dist/org/us/region/mt/kalamazoo/galesburg/GalesburgMessages.js +0 -2
  417. package/dist/org/us/region/nh/kalamazoo/Kalamazoo.d.ts +0 -2
  418. package/dist/org/us/region/nh/kalamazoo/KalamazooCities.d.ts +0 -2
  419. package/dist/org/us/region/nh/kalamazoo/KalamazooCities.js +0 -4
  420. package/dist/org/us/region/nh/kalamazoo/KalamazooCityCode.d.ts +0 -3
  421. package/dist/org/us/region/nh/kalamazoo/KalamazooCityCode.js +0 -4
  422. package/dist/org/us/region/nh/kalamazoo/KalamazooMessages_en.d.ts +0 -4
  423. package/dist/org/us/region/nh/kalamazoo/KalamazooMessages_en.js +0 -6
  424. package/dist/org/us/region/nh/kalamazoo/KalamazooMessages_fr.d.ts +0 -4
  425. package/dist/org/us/region/nh/kalamazoo/KalamazooMessages_fr.js +0 -6
  426. package/dist/org/us/region/nh/kalamazoo/galesburg/Galesburg.d.ts +0 -1
  427. package/dist/org/us/region/nh/kalamazoo/galesburg/Galesburg.js +0 -5
  428. package/dist/org/us/region/nh/kalamazoo/galesburg/GalesburgMessages.d.ts +0 -2
  429. package/dist/org/us/region/nh/kalamazoo/galesburg/GalesburgMessages.js +0 -2
  430. package/dist/org/us/region/nv/kalamazoo/Kalamazoo.d.ts +0 -2
  431. package/dist/org/us/region/nv/kalamazoo/KalamazooCities.d.ts +0 -2
  432. package/dist/org/us/region/nv/kalamazoo/KalamazooCities.js +0 -4
  433. package/dist/org/us/region/nv/kalamazoo/KalamazooCityCode.d.ts +0 -3
  434. package/dist/org/us/region/nv/kalamazoo/KalamazooCityCode.js +0 -4
  435. package/dist/org/us/region/nv/kalamazoo/KalamazooMessages_en.d.ts +0 -4
  436. package/dist/org/us/region/nv/kalamazoo/KalamazooMessages_en.js +0 -6
  437. package/dist/org/us/region/nv/kalamazoo/KalamazooMessages_fr.d.ts +0 -4
  438. package/dist/org/us/region/nv/kalamazoo/KalamazooMessages_fr.js +0 -6
  439. package/dist/org/us/region/nv/kalamazoo/galesburg/Galesburg.d.ts +0 -1
  440. package/dist/org/us/region/nv/kalamazoo/galesburg/Galesburg.js +0 -5
  441. package/dist/org/us/region/nv/kalamazoo/galesburg/GalesburgMessages.d.ts +0 -2
  442. package/dist/org/us/region/nv/kalamazoo/galesburg/GalesburgMessages.js +0 -2
  443. package/dist/source/Article.d.ts +0 -4
  444. package/dist/source/ArticleFactory.d.ts +0 -7
  445. package/dist/source/ArticleFactory.js +0 -11
  446. package/dist/source/Source.d.ts +0 -45
  447. package/tsconfig.json +0 -23
  448. package/tsconfig.prod.json +0 -10
  449. /package/dist/{build.d.ts → OpenGraphCommand.test.d.ts} +0 -0
  450. /package/dist/{data/RR0Data.js → RR0Build.test.d.ts} +0 -0
  451. /package/dist/{data/RR0DataFactory.js → anchor/AnchorReplaceCommandTest.d.ts} +0 -0
  452. /package/dist/{event/RR0Event.js → anchor/AnchorReplacerTest.d.ts} +0 -0
  453. /package/dist/{source/Article.js → lang/LanguageReplaceCommant.test.d.ts} +0 -0
  454. /package/dist/{source/Source.js → org/cn/ChinaMessages.js} +0 -0
@@ -0,0 +1,225 @@
1
+ import { TimeReplacer } from "./TimeReplacer.js";
2
+ import { rr0TestUtil } from "../../test";
3
+ import { describe, expect, test } from "@javarome/testscript";
4
+ import { TimeRenderer } from "./TimeRenderer.js";
5
+ import { TimeElementFactory } from "./TimeElementFactory.js";
6
+ import { TimeTextBuilder } from "../text/TimeTextBuilder.js";
7
+ import path from "path";
8
+ describe("TimeReplacer", async () => {
9
+ const timeRoot = rr0TestUtil.time.timeOptions.root;
10
+ const timeService = await rr0TestUtil.time.getService({
11
+ root: timeRoot,
12
+ files: [
13
+ path.join(timeRoot, "1/9/4/7/07/02/index.html"),
14
+ path.join(timeRoot, "2/0/0/3/index.html"),
15
+ path.join(timeRoot, "2/0/0/3/12/24/index.html"),
16
+ path.join(timeRoot, "2/0/0/4/index.html"),
17
+ path.join(timeRoot, "2/0/0/4/09/index.html"),
18
+ path.join(timeRoot, "2/0/0/5/index.html"),
19
+ path.join(timeRoot, "2/0/0/5/08/23/index.html"),
20
+ path.join(timeRoot, "2/0/0/6/index.html"),
21
+ path.join(timeRoot, "2/0/0/6/07/14/index.html"),
22
+ path.join(timeRoot, "2/0/0/7/06/15/index.html")
23
+ ]
24
+ });
25
+ const textBuilder = new TimeTextBuilder(rr0TestUtil.intlOptions);
26
+ const timeRenderer = new TimeRenderer(timeService, textBuilder);
27
+ const timeElementFactory = new TimeElementFactory(timeRenderer);
28
+ const replacer = new TimeReplacer(timeElementFactory);
29
+ function timeUrl(pathStr) {
30
+ return path.join("/", timeService.root, pathStr, "index.html");
31
+ }
32
+ test("parses year", async () => {
33
+ {
34
+ const context = rr0TestUtil.time.newHtmlContext("1/9/9/0/08/index.html", "");
35
+ const timeEl = context.file.document.createElement("time");
36
+ timeEl.textContent = "2003";
37
+ const replacement = await replacer.replacement(context, timeEl);
38
+ expect(replacement.outerHTML).toBe(`<span class="time-resolved">en <a href="${path.join("/", timeService.root, "2/0/0/3/")}"><time datetime="2003">2003</time></a></span>`);
39
+ expect(context.time.getYear()).toBe(2003);
40
+ expect(context.time.getMonth()).toBe(undefined);
41
+ expect(context.time.getDayOfMonth()).toBe(undefined);
42
+ expect(context.time.getHour()).toBe(undefined);
43
+ expect(context.time.getMinutes()).toBe(undefined);
44
+ expect(context.time.getTimeZone()).toBe(undefined);
45
+ }
46
+ {
47
+ const context = rr0TestUtil.time.newHtmlContext("1/9/9/0/08", "");
48
+ const timeEl = context.file.document.createElement("time");
49
+ timeEl.innerHTML = "2003\n ";
50
+ const replacement = await replacer.replacement(context, timeEl);
51
+ expect(replacement.outerHTML).toBe(`<span class="time-resolved">en <a href="${path.join("/", timeService.root, "2/0/0/3/")}"><time datetime="2003">2003</time></a></span>`);
52
+ expect(context.time.getYear()).toBe(2003);
53
+ expect(context.time.getMonth()).toBe(undefined);
54
+ expect(context.time.getDayOfMonth()).toBe(undefined);
55
+ expect(context.time.getHour()).toBe(undefined);
56
+ expect(context.time.getMinutes()).toBe(undefined);
57
+ expect(context.time.getTimeZone()).toBe(undefined);
58
+ }
59
+ });
60
+ test("parses interval", async () => {
61
+ const context = rr0TestUtil.time.newHtmlContext("1/9/9/0/08/index.html", "");
62
+ const interval = "2003/2004";
63
+ const original = context.file.document.createElement("time");
64
+ original.textContent = interval;
65
+ const replaced = await replacer.replacement(context, original);
66
+ expect(replaced.outerHTML)
67
+ .toBe(`<span class="time-interval"><span class="time-resolved">en <a href="${path.join("/", timeService.root, "2/0/0/3/")}"><time datetime="2003">2003</time></a></span> à <span class="time-resolved">en <a href="${path.join("/", timeService.root, "2/0/0/4/")}"><time datetime="2004">2004</time></a></span></span>`);
68
+ expect(context.time.getYear()).toBe(2004);
69
+ expect(context.time.getMonth()).toBe(undefined);
70
+ expect(context.time.getDayOfMonth()).toBe(undefined);
71
+ expect(context.time.getHour()).toBe(undefined);
72
+ expect(context.time.getMinutes()).toBe(undefined);
73
+ expect(context.time.getTimeZone()).toBe(undefined);
74
+ });
75
+ test("parses unsupported", async () => {
76
+ const interval = "moi";
77
+ const context = rr0TestUtil.time.newHtmlContext("1/9/9/0/08/index.html", "");
78
+ const original = context.file.document.createElement("time");
79
+ original.textContent = interval;
80
+ const replacement = await replacer.replacement(context, original);
81
+ expect(replacement.outerHTML).toBe(`<time>moi</time>`);
82
+ expect(context.time.getYear()).toBe(1990);
83
+ expect(context.time.getMonth()).toBe(8);
84
+ expect(context.time.getDayOfMonth()).toBe(undefined);
85
+ expect(context.time.getHour()).toBe(undefined);
86
+ expect(context.time.getMinutes()).toBe(undefined);
87
+ expect(context.time.getTimeZone()).toBe(undefined);
88
+ });
89
+ test("parses timezone", async () => {
90
+ {
91
+ const context = rr0TestUtil.time.newHtmlContext("1/9/9/0/08", "");
92
+ const original = context.file.document.createElement("time");
93
+ original.textContent = "2003-12-24T10:22CDT";
94
+ const replacement = await replacer.replacement(context, original);
95
+ expect(replacement.outerHTML)
96
+ .toBe(`<span class="time-resolved">le <a href="${path.join("/", timeService.root, "2/0/0/3/12/24/")}"><time datetime="2003-12-24T10:22-05">mercredi 24 décembre 2003 à 10:22</time></a></span>`); // TODO: Text should have timezone info
97
+ expect(context.time.getYear()).toBe(2003);
98
+ expect(context.time.getMonth()).toBe(12);
99
+ expect(context.time.getDayOfMonth()).toBe(24);
100
+ expect(context.time.getHour()).toBe(10);
101
+ expect(context.time.getMinutes()).toBe(22);
102
+ expect(context.time.getTimeshift()).toBe("-05");
103
+ }
104
+ /*{
105
+ const context = rr0TestUtil.newHtmlContext("time/1/9/9/0/08/index.html", "")
106
+ const interval = "2003-12-24 (CDT)"
107
+ const replacer = new TimeReplacer(["time/2/0/0/3/12/24"])
108
+ expect(replacer.replacement(context, `<time>${interval}</time>`, interval))
109
+ .toBe(`<a href="/time/2/0/0/3/12/24/">mercredi 24 décembre 2003</a>`) // TODO: Text should have timezone info
110
+ expect(context.time.getYear()).toBe(2003)
111
+ expect(context.time.getMonth()).toBe(12)
112
+ expect(context.time.getDayOfMonth()).toBe(24)
113
+ expect(context.time.getHour()).toBe(undefined)
114
+ expect(context.time.getMinutes()).toBe(undefined)
115
+ expect(context.time.getTimeZone()).toBe("CDT")
116
+ }*/
117
+ });
118
+ test("parses month", async () => {
119
+ const context = rr0TestUtil.time.newHtmlContext("1/9/9/0/08", "");
120
+ const original = context.file.document.createElement("time");
121
+ original.textContent = "2004-09";
122
+ const replacement = await replacer.replacement(context, original);
123
+ expect(replacement.outerHTML).toBe(`<span class="time-resolved">en <a href="${path.join("/", timeService.root, "2/0/0/4/09/")}"><time datetime="2004-09">septembre 2004</time></a></span>`);
124
+ expect(context.time.getYear()).toBe(2004);
125
+ expect(context.time.getMonth()).toBe(9);
126
+ expect(context.time.getDayOfMonth()).toBe(undefined);
127
+ expect(context.time.getHour()).toBe(undefined);
128
+ expect(context.time.getMinutes()).toBe(undefined);
129
+ });
130
+ describe("parses day", () => {
131
+ test("from full date", async () => {
132
+ const context = rr0TestUtil.time.newHtmlContext("1/9/9/0/08", "");
133
+ const timeEl = context.file.document.createElement("time");
134
+ timeEl.textContent = "2005-08-23";
135
+ const replacement = await replacer.replacement(context, timeEl);
136
+ expect(replacement.outerHTML).toBe(`<span class="time-resolved">le <a href="${path.join("/", timeService.root, "2/0/0/5/08/23/")}"><time datetime="2005-08-23">mardi 23 août 2005</time></a></span>`);
137
+ expect(context.time.getYear()).toBe(2005);
138
+ expect(context.time.getMonth()).toBe(8);
139
+ expect(context.time.getDayOfMonth()).toBe(23);
140
+ expect(context.time.getHour()).toBe(undefined);
141
+ expect(context.time.getMinutes()).toBe(undefined);
142
+ });
143
+ });
144
+ test("reset context", async () => {
145
+ const context = rr0TestUtil.time.newHtmlContext("1/9/9/0/08/index.html", "");
146
+ const timeEl = context.file.document.createElement("time");
147
+ timeEl.textContent = "2005";
148
+ const replacement = await replacer.replacement(context, timeEl);
149
+ expect(replacement.outerHTML).toBe(`<span class="time-resolved">en <a href="${rr0TestUtil.time.url("2/0/0/5/")}"><time datetime="2005">2005</time></a></span>`);
150
+ const original = context.file.document.createElement("time");
151
+ const datetime = "2006";
152
+ original.textContent = datetime;
153
+ const replacement2 = await replacer.replacement(context, original);
154
+ expect(replacement2.outerHTML).toBe(`<span class="time-resolved">en <a href="${rr0TestUtil.time.url("2/0/0/6/")}"><time datetime="${datetime}" title="2006">l'année suivante</time></a></span>`);
155
+ });
156
+ test("avoids linking to current file", async () => {
157
+ const context = rr0TestUtil.time.newHtmlContext("1/9/9/0/08/index.html", "");
158
+ const timeEl = context.file.document.createElement("time");
159
+ const datetime = "1954-10-01";
160
+ timeEl.textContent = datetime;
161
+ const replacement = await replacer.replacement(context, timeEl);
162
+ expect(replacement.outerHTML)
163
+ .toBe(`<span class="time-resolved">le <time datetime="${datetime}">vendredi 1 octobre 1954</time></span>`);
164
+ });
165
+ describe("parse duration", () => {
166
+ test("with days, hours, minutes and seconds", async () => {
167
+ const context = rr0TestUtil.time.newHtmlContext("1/9/9/0/08/index.html", "");
168
+ const timeEl = context.file.document.createElement("time");
169
+ const datetime = "P2D10H23M45S";
170
+ timeEl.textContent = datetime;
171
+ const replacement = await replacer.replacement(context, timeEl);
172
+ expect(replacement.outerHTML).toBe(`<time datetime="${datetime}" class="duration">2 jours, 10 heures, 23 minutes et 45 secondes</time>`);
173
+ });
174
+ test("with context", async () => {
175
+ const context = rr0TestUtil.time.newHtmlContext("1/9/9/0/08/index.html", "");
176
+ {
177
+ const ctxElement = context.file.document.createElement("time");
178
+ ctxElement.textContent = "1947-07-02";
179
+ const replacement1 = await replacer.replacement(context, ctxElement);
180
+ expect(replacement1.outerHTML).toBe(`<span class="time-resolved">le <a href="${rr0TestUtil.time.url("1/9/4/7/07/02/")}"><time datetime="1947-07-02">mercredi 2 juillet 1947</time></a></span>`);
181
+ }
182
+ {
183
+ const element = context.file.document.createElement("time");
184
+ element.textContent = "P20M";
185
+ const replacement = await replacer.replacement(context, element);
186
+ expect(replacement.outerHTML).toBe(`<time datetime="P20M" class="duration">20 minutes</time>`);
187
+ }
188
+ });
189
+ test("with approximation", async () => {
190
+ const context = rr0TestUtil.time.newHtmlContext("1/9/9/0/08/index.html", "");
191
+ const original = context.file.document.createElement("time");
192
+ original.textContent = "P~2H";
193
+ const replacement = await replacer.replacement(context, original);
194
+ expect(replacement.outerHTML).toBe(`<time datetime="P2H" class="duration">environ 2 heures</time>`);
195
+ });
196
+ });
197
+ describe("parses hour", () => {
198
+ test("with context", async () => {
199
+ // Empty context
200
+ const context = rr0TestUtil.time.newHtmlContext("1/9/9/0/08/index.html", "");
201
+ const timeEl = context.file.document.createElement("time");
202
+ timeEl.textContent = "2006-07-14 17:56";
203
+ const replacement = await replacer.replacement(context, timeEl);
204
+ expect(replacement.outerHTML).toBe(`<span class="time-resolved">le <a href="${path.join("/", timeService.root, "2/0/0/6/07/14/")}"><time datetime="2006-07-14T17:56">vendredi 14 juillet 2006 à 17:56</time></a></span>`);
205
+ expect(context.time.getYear()).toBe(2006);
206
+ expect(context.time.getMonth()).toBe(7);
207
+ expect(context.time.getDayOfMonth()).toBe(14);
208
+ expect(context.time.getHour()).toBe(17);
209
+ expect(context.time.getMinutes()).toBe(56);
210
+ // Change day + hour
211
+ const timeEl1 = context.file.document.createElement("time");
212
+ timeEl1.textContent = "2007-06-15 18:47";
213
+ const replacement1 = await replacer.replacement(context, timeEl1);
214
+ expect(replacement1.outerHTML).toBe(`<span class="time-resolved">le <a href="${path.join("/", timeService.root, "2/0/0/7/06/15/")}"><time datetime="2007-06-15T18:47">vendredi 15 juin 2007 à 18:47</time></a></span>`);
215
+ expect(context.time.getYear()).toBe(2007);
216
+ expect(context.time.getMonth()).toBe(6);
217
+ expect(context.time.getDayOfMonth()).toBe(15);
218
+ expect(context.time.getHour()).toBe(18);
219
+ expect(context.time.getMinutes()).toBe(47);
220
+ // TODO: Change hour only
221
+ });
222
+ test("with approximation", async () => {
223
+ });
224
+ });
225
+ });
@@ -1,106 +1,71 @@
1
+ import { Level0Duration } from "@rr0/time";
1
2
  export class RelativeTimeTextBuilder {
2
3
  constructor(timeTextBuilder) {
3
4
  this.timeTextBuilder = timeTextBuilder;
4
5
  }
5
6
  build(oldContext, newContext) {
7
+ var _a, _b, _c, _d, _e;
6
8
  let text;
7
- let print = true;
8
- const previousTime = oldContext === null || oldContext === void 0 ? void 0 : oldContext.time;
9
+ const time = newContext.time;
10
+ const previousTime = time.equals(oldContext === null || oldContext === void 0 ? void 0 : oldContext.time) ? undefined : oldContext.time;
11
+ let options;
9
12
  if (previousTime === null || previousTime === void 0 ? void 0 : previousTime.isDefined()) {
13
+ options = {};
14
+ const deltaMs = time.date.compare(previousTime.date);
15
+ const deltaDuration = Level0Duration.toSpec(deltaMs);
10
16
  const deltaContext = oldContext.clone();
11
17
  const deltaTime = deltaContext.time;
12
- let dayOfMonthDelta;
13
- let yearDelta;
14
- let monthDelta;
15
- let hourDelta;
16
- let minutesDelta;
17
- function shouldSetDay() {
18
- return !previousTime.getMonth() || monthDelta === 0;
19
- }
20
- function shouldSetHour() {
21
- return !previousTime.getDayOfMonth() || dayOfMonthDelta === 0;
22
- }
23
- function shouldSetMinutes() {
24
- return !previousTime.getMinutes() || hourDelta === 0;
25
- }
26
- function setYear(year) {
27
- const previousYear = previousTime.getYear();
28
- if (previousYear) {
29
- yearDelta = year - previousYear;
30
- if (yearDelta != 0) {
31
- deltaTime.setYear(year);
32
- }
33
- }
34
- }
35
- function setMonth(month) {
36
- const previousMonth = previousTime.getMonth();
37
- if (yearDelta === 0) {
38
- monthDelta = month - (previousMonth || 0);
39
- if (monthDelta != 0) {
40
- deltaTime.setMonth(month);
41
- }
42
- }
43
- else if (yearDelta != 0) {
44
- deltaTime.setMonth(month);
45
- }
46
- }
47
- function setDayOfMonth(dayOfMonth) {
48
- const sameMonth = yearDelta === 0 && shouldSetDay();
49
- if (sameMonth) {
50
- dayOfMonthDelta = dayOfMonth - (previousTime.getDayOfMonth() || 0);
51
- if (dayOfMonthDelta != 0) {
52
- deltaTime.setDayOfMonth(dayOfMonth);
53
- }
54
- }
55
- else if (monthDelta != 0) {
56
- deltaTime.setDayOfMonth(dayOfMonth);
57
- }
58
- }
59
- function setHour(hour) {
60
- const sameDay = yearDelta === 0 && shouldSetDay() && shouldSetHour();
61
- if (sameDay) {
62
- hourDelta = hour - (previousTime.getHour() || 0);
63
- if (hourDelta != 0) {
64
- deltaTime.setHour(hour);
65
- }
66
- }
67
- else if (dayOfMonthDelta != 0) {
68
- deltaTime.setHour(hour);
69
- }
70
- }
71
- function setMinutes(minutes) {
72
- const sameHour = yearDelta === 0 && shouldSetDay() && shouldSetHour() && shouldSetMinutes();
73
- if (sameHour) {
74
- minutesDelta = minutes - (previousTime.getMinutes() || 0);
75
- if (minutesDelta != 0) {
76
- deltaTime.setMinutes(minutes);
77
- }
78
- }
79
- deltaTime.setMinutes(minutes);
80
- }
81
- const time = newContext.time;
82
18
  const year = time.getYear();
83
- if (year) {
84
- setYear(year);
19
+ const previousYear = previousTime.getYear();
20
+ const yearDelta = (_a = deltaDuration.years) === null || _a === void 0 ? void 0 : _a.value;
21
+ const sameYear = !yearDelta || yearDelta < 1;
22
+ const noYear = !previousYear;
23
+ const shouldSetYear = yearDelta || (noYear) || previousTime.getYear() !== time.getYear();
24
+ if (shouldSetYear) {
25
+ deltaTime.setYear(year);
26
+ options.year = "numeric";
85
27
  }
86
28
  const month = time.getMonth();
87
- if (month) {
88
- setMonth(month);
29
+ const previousMonth = previousTime.getMonth();
30
+ const deltaDurationMonth = (_b = deltaDuration.months) === null || _b === void 0 ? void 0 : _b.value;
31
+ const sameMonth = !deltaDurationMonth || deltaDurationMonth < 1;
32
+ const noMonth = !previousMonth;
33
+ const shouldSetMonth = deltaDurationMonth || (noMonth || shouldSetYear);
34
+ if (shouldSetMonth) {
35
+ deltaTime.setMonth(month);
36
+ options.month = "long";
89
37
  }
90
38
  const dayOfMonth = time.getDayOfMonth();
91
- if (dayOfMonth) {
92
- setDayOfMonth(dayOfMonth);
39
+ const previousDay = previousTime.getDayOfMonth();
40
+ const dayOfMonthDelta = (_c = deltaDuration.days) === null || _c === void 0 ? void 0 : _c.value;
41
+ const sameDay = !dayOfMonthDelta || dayOfMonthDelta < 1;
42
+ const shouldSetDay = dayOfMonthDelta || (!sameDay && sameYear && sameMonth);
43
+ const noDay = !previousDay;
44
+ if (shouldSetDay) {
45
+ deltaTime.setDayOfMonth(dayOfMonth);
46
+ options.day = "numeric";
47
+ options.weekday = "long";
93
48
  }
94
49
  const hour = time.getHour();
95
- if (hour) {
96
- setHour(hour);
50
+ const hourDelta = (_d = deltaDuration.hours) === null || _d === void 0 ? void 0 : _d.value;
51
+ const shouldSetHour = hourDelta || (hour && (noDay || (sameYear && sameMonth && sameDay))) || previousTime.getHour() !== time.getHour();
52
+ if (shouldSetHour) {
53
+ deltaTime.setHour(hour);
54
+ options.hour = "2-digit";
97
55
  }
98
56
  const minutes = time.getMinutes();
99
- if (minutes) {
100
- setMinutes(minutes);
57
+ const minutesDelta = (_e = deltaDuration.minutes) === null || _e === void 0 ? void 0 : _e.value;
58
+ const sameHour = hourDelta === 0;
59
+ const shouldSetMinutes = minutesDelta || (minutes && (sameYear && sameMonth && sameDay && sameHour));
60
+ if (shouldSetMinutes) {
61
+ deltaTime.setMinutes(minutes);
62
+ options.minute = "2-digit";
63
+ }
64
+ if (deltaContext.time.isDefined()) {
65
+ newContext = deltaContext;
101
66
  }
102
- let messages = newContext.messages.context.time.relative;
103
- if (dayOfMonthDelta) {
67
+ const messages = newContext.messages.context.time.relative;
68
+ if (dayOfMonthDelta && sameYear && sameMonth) {
104
69
  switch (dayOfMonthDelta) {
105
70
  case -1:
106
71
  text = messages.day.before;
@@ -111,13 +76,13 @@ export class RelativeTimeTextBuilder {
111
76
  }
112
77
  }
113
78
  else {
114
- if (!dayOfMonth) {
115
- switch (monthDelta) {
79
+ if (!dayOfMonth && sameYear) {
80
+ switch (deltaDurationMonth) {
116
81
  case -1:
117
82
  text = messages.month.before;
118
83
  break;
119
84
  case +1:
120
- text = messages.month.after;
85
+ text = time.getMonth() - previousTime.getMonth() === 1 ? messages.month.after : messages.month.later;
121
86
  break;
122
87
  }
123
88
  }
@@ -142,23 +107,9 @@ export class RelativeTimeTextBuilder {
142
107
  }
143
108
  }
144
109
  }
145
- if (!text) {
146
- let defaultContext;
147
- if (deltaContext.time.isDefined()) {
148
- defaultContext = deltaContext;
149
- const dayOfMonth = defaultContext.time.getDayOfMonth();
150
- if (dayOfMonth && shouldSetDay()) {
151
- defaultContext.time.setMonth(newContext.time.getMonth() || previousTime.getMonth(), false); // give month
152
- defaultContext.time.setYear(newContext.time.getYear() || previousTime.getYear(), false); // give year
153
- // context for the day but won't
154
- print = false;
155
- }
156
- newContext = defaultContext;
157
- }
158
- }
159
110
  }
160
111
  if (!text) {
161
- text = this.timeTextBuilder.build(newContext, print);
112
+ text = this.timeTextBuilder.build(newContext, options);
162
113
  }
163
114
  return text;
164
115
  }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,125 @@
1
+ import { RelativeTimeTextBuilder } from "./RelativeTimeTextBuilder.js";
2
+ import { rr0TestUtil } from "../../test";
3
+ import { describe, expect, test } from "@javarome/testscript";
4
+ import { TimeTextBuilder } from "./TimeTextBuilder.js";
5
+ describe("RelativeTimeTextBuilder", () => {
6
+ const timeTextBuilder = new TimeTextBuilder(rr0TestUtil.intlOptions);
7
+ const relativeTimeTextBuilder = new RelativeTimeTextBuilder(timeTextBuilder);
8
+ test("next year", () => {
9
+ {
10
+ const previousContext = rr0TestUtil.time.newHtmlContext("1/9/9/0/08", "");
11
+ previousContext.time.setYear(2003);
12
+ const context = previousContext.clone();
13
+ context.time.setYear(2004);
14
+ const s1 = relativeTimeTextBuilder.build(previousContext, context);
15
+ expect(s1).toBe("l'année suivante");
16
+ context.time.setMonth(6);
17
+ const s2 = relativeTimeTextBuilder.build(previousContext, context);
18
+ expect(s2).toBe("juin 2004");
19
+ }
20
+ });
21
+ test("change year", () => {
22
+ const previousContext = rr0TestUtil.time.newHtmlContext("1/9/9/0/08", "");
23
+ previousContext.time.setYear(1947);
24
+ const context = previousContext.clone();
25
+ context.time.setYear(1990);
26
+ context.time.setMonth(8);
27
+ context.time.setDayOfMonth(4);
28
+ const s = relativeTimeTextBuilder.build(previousContext, context);
29
+ expect(s).toBe("samedi 4 août 1990");
30
+ });
31
+ test("next month", () => {
32
+ {
33
+ const context1 = rr0TestUtil.time.newHtmlContext("1/9/9/0/08", "");
34
+ context1.time.setYear(2003);
35
+ {
36
+ context1.time.setMonth(2);
37
+ const next2months = context1.clone();
38
+ next2months.time.setMonth(context1.time.getMonth() + 2);
39
+ const s11 = relativeTimeTextBuilder.build(context1, next2months);
40
+ expect(s11).toBe("avril");
41
+ }
42
+ context1.time.setMonth(9);
43
+ const context2 = context1.clone();
44
+ context2.time.setMonth(context2.time.getMonth() + 1);
45
+ const s1 = relativeTimeTextBuilder.build(context1, context2);
46
+ expect(s1).toBe("le mois suivant");
47
+ const context3 = context2.clone();
48
+ context3.time.setDayOfMonth(23); // Resets day of month in context
49
+ const s2 = relativeTimeTextBuilder.build(context2, context3);
50
+ expect(s2).toBe("jeudi 23");
51
+ const context4 = context3.clone();
52
+ context4.time.setMonth(12);
53
+ const s3 = relativeTimeTextBuilder.build(context3, context4);
54
+ expect(s3).toBe("un mois plus tard");
55
+ const context5 = context4.clone();
56
+ context5.time.setMonth(1);
57
+ context5.time.setDayOfMonth(24);
58
+ const s4 = relativeTimeTextBuilder.build(context4, context5);
59
+ expect(s4).toBe("vendredi 24 janvier");
60
+ }
61
+ {
62
+ const context = rr0TestUtil.time.newHtmlContext("1/9/9/0/08", "<html lang='en'></html>");
63
+ context.time.setYear(2003);
64
+ context.time.setMonth(9);
65
+ const previousContext = context.clone();
66
+ context.time.setMonth(context.time.getMonth() + 1);
67
+ const s = relativeTimeTextBuilder.build(previousContext, context);
68
+ expect(s).toBe("the month after");
69
+ }
70
+ });
71
+ test("next day", () => {
72
+ {
73
+ const context = rr0TestUtil.time.newHtmlContext("1/9/9/0/08", "");
74
+ context.time.setYear(2003);
75
+ context.time.setMonth(9);
76
+ context.time.setDayOfMonth(23);
77
+ const previousContext = context.clone();
78
+ expect(relativeTimeTextBuilder.build(previousContext, context)).toBe("mardi 23 septembre 2003");
79
+ context.time.setDayOfMonth(24);
80
+ expect(relativeTimeTextBuilder.build(previousContext, context)).toBe("le lendemain");
81
+ }
82
+ {
83
+ const context = rr0TestUtil.time.newHtmlContext("1/9/9/0/08", "<html lang='en'></html>");
84
+ context.time.setYear(2003);
85
+ context.time.setMonth(9);
86
+ context.time.setDayOfMonth(23);
87
+ const previousContext = context.clone();
88
+ expect(relativeTimeTextBuilder.build(previousContext, context)).toBe("Tuesday, September 23, 2003");
89
+ context.time.setDayOfMonth(context.time.getDayOfMonth() + 1);
90
+ expect(relativeTimeTextBuilder.build(previousContext, context)).toBe("the day after");
91
+ }
92
+ });
93
+ describe("hour", () => {
94
+ test("next", () => {
95
+ {
96
+ let previousContext = rr0TestUtil.time.newHtmlContext("1/9/9/0/08", "");
97
+ const context = previousContext.clone();
98
+ context.time.setYear(2003);
99
+ context.time.setMonth(9);
100
+ context.time.setDayOfMonth(23);
101
+ context.time.setHour(16);
102
+ expect(relativeTimeTextBuilder.build(previousContext, context)).toBe("mardi 23 septembre 2003 à 16 h");
103
+ previousContext = context.clone();
104
+ context.time.setHour(17);
105
+ expect(relativeTimeTextBuilder.build(previousContext, context)).toBe("une heure plus tard");
106
+ context.time.setMinutes(43);
107
+ expect(relativeTimeTextBuilder.build(previousContext, context)).toBe("17:43");
108
+ }
109
+ {
110
+ let previousContext = rr0TestUtil.time.newHtmlContext("1/9/9/0/08", "<html lang='en'></html>");
111
+ const context = previousContext.clone();
112
+ context.time.setYear(2003);
113
+ context.time.setMonth(9);
114
+ context.time.setDayOfMonth(23);
115
+ context.time.setHour(16);
116
+ expect(relativeTimeTextBuilder.build(previousContext, context)).toBe("Tuesday, September 23, 2003 at 04 PM");
117
+ previousContext = context.clone();
118
+ context.time.setHour(17);
119
+ expect(relativeTimeTextBuilder.build(previousContext, context)).toBe("one hour later");
120
+ context.time.setMinutes(43);
121
+ expect(relativeTimeTextBuilder.build(previousContext, context)).toBe("05:43 PM");
122
+ }
123
+ });
124
+ });
125
+ });
@@ -1,13 +1,12 @@
1
1
  import { RR0Context } from "../../RR0Context.js";
2
2
  export declare class TimeTextBuilder {
3
3
  readonly options: Intl.DateTimeFormatOptions;
4
+ /**
5
+ * @param options The default date format.to use.
6
+ */
4
7
  constructor(options: Intl.DateTimeFormatOptions);
5
8
  /**
6
9
  * Build a textual representation of context's time, according to context's locale.
7
- *
8
- * @param context
9
- * @param print
10
- * @param options
11
10
  */
12
- build(context: RR0Context, print: boolean, options?: Intl.DateTimeFormatOptions): string;
11
+ build(context: RR0Context, options?: Intl.DateTimeFormatOptions): string;
13
12
  }
@@ -1,60 +1,47 @@
1
1
  export class TimeTextBuilder {
2
+ /**
3
+ * @param options The default date format.to use.
4
+ */
2
5
  constructor(options) {
3
6
  this.options = options;
4
7
  }
5
8
  /**
6
9
  * Build a textual representation of context's time, according to context's locale.
7
- *
8
- * @param context
9
- * @param print
10
- * @param options
11
10
  */
12
- build(context, print, options = this.options) {
11
+ build(context, options = this.options) {
13
12
  const time = context.time;
14
13
  const printOptions = {};
15
14
  const date = new Date(undefined, undefined, undefined);
16
15
  const year = time.getYear();
17
16
  if (year) {
18
17
  date.setFullYear(year);
19
- if (print) {
20
- printOptions.year = options.year;
21
- }
18
+ printOptions.year = options.year;
22
19
  }
23
20
  const month = time.getMonth();
24
21
  if (month) {
25
22
  date.setDate(1); // Avoid increasing month if today is > 30
26
23
  date.setMonth(month - 1);
27
- if (print) {
28
- printOptions.month = options.month;
29
- }
24
+ printOptions.month = options.month;
30
25
  }
31
26
  const dayOfMonth = time.getDayOfMonth();
32
27
  if (dayOfMonth) {
33
28
  date.setDate(dayOfMonth);
34
- // if (print) {
35
29
  printOptions.day = options.day;
36
30
  printOptions.weekday = options.weekday;
37
- // }
38
31
  }
39
32
  const hour = time.getHour();
40
33
  if (hour) {
41
34
  date.setHours(hour);
42
- // if (print) {
43
35
  printOptions.hour = options.hour;
44
- // }
45
36
  }
46
37
  const minutes = time.getMinutes();
47
38
  if (minutes) {
48
39
  date.setMinutes(minutes);
49
- // if (print) {
50
40
  printOptions.minute = options.minute;
51
- // }
52
41
  }
53
42
  const timeZone = time.getTimeZone();
54
43
  if (timeZone) {
55
- if (print) {
56
- // printOptions.timeZoneName = context.time.options.timeZoneName
57
- }
44
+ // printOptions.timeZoneName = context.time.options.timeZoneName
58
45
  }
59
46
  let text;
60
47
  if (Number.isNaN(date.getTime())) {
@@ -62,7 +49,7 @@ export class TimeTextBuilder {
62
49
  // TODO: Handle partial date (month only, etc.)
63
50
  }
64
51
  else { // Valid date?
65
- const locale = context.file.lang.lang || context.locale;
52
+ const locale = context.locale;
66
53
  if (year < 0) {
67
54
  date.setFullYear(date.getFullYear() + 1);
68
55
  printOptions.era = "narrow";
@@ -0,0 +1 @@
1
+ export {};