@natlibfi/marc-record-validators-melinda 3.2.0 → 3.3.14-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (593) hide show
  1. package/.github/CODEOWNERS +2 -0
  2. package/.github/dependabot.yml +40 -0
  3. package/.github/workflows/melinda-node-tests.yml +61 -0
  4. package/LICENSE.txt +21 -661
  5. package/README.md +4 -5
  6. package/dist/access-rights.js +94 -0
  7. package/dist/access-rights.js.map +1 -0
  8. package/dist/access-rights.spec.js +150 -0
  9. package/dist/access-rights.spec.js.map +1 -0
  10. package/dist/double-commas.js +17 -27
  11. package/dist/double-commas.js.map +1 -1
  12. package/dist/double-commas.spec.js +72 -27
  13. package/dist/double-commas.spec.js.map +1 -1
  14. package/dist/duplicates-ind1.js +47 -27
  15. package/dist/duplicates-ind1.js.map +1 -1
  16. package/dist/duplicates-ind1.spec.js +44 -27
  17. package/dist/duplicates-ind1.spec.js.map +1 -1
  18. package/dist/empty-fields.js +79 -29
  19. package/dist/empty-fields.js.map +1 -1
  20. package/dist/empty-fields.spec.js +113 -27
  21. package/dist/empty-fields.spec.js.map +1 -1
  22. package/dist/ending-punctuation-conf.js +772 -129
  23. package/dist/ending-punctuation-conf.js.map +1 -1
  24. package/dist/ending-punctuation.js +291 -72
  25. package/dist/ending-punctuation.js.map +1 -1
  26. package/dist/ending-punctuation.spec.js +2638 -118
  27. package/dist/ending-punctuation.spec.js.map +1 -1
  28. package/dist/ending-whitespace.js +58 -0
  29. package/dist/ending-whitespace.js.map +1 -0
  30. package/dist/ending-whitespace.spec.js +42 -0
  31. package/dist/ending-whitespace.spec.js.map +1 -0
  32. package/dist/field-521-fix.js +96 -0
  33. package/dist/field-521-fix.js.map +1 -0
  34. package/dist/field-521-fix.spec.js +51 -0
  35. package/dist/field-521-fix.spec.js.map +1 -0
  36. package/dist/field-exclusion.js +214 -63
  37. package/dist/field-exclusion.js.map +1 -1
  38. package/dist/field-exclusion.spec.js +1057 -31
  39. package/dist/field-exclusion.spec.js.map +1 -1
  40. package/dist/field-structure.js +249 -78
  41. package/dist/field-structure.js.map +1 -1
  42. package/dist/field-structure.spec.js +534 -31
  43. package/dist/field-structure.spec.js.map +1 -1
  44. package/dist/fields-present.js +31 -27
  45. package/dist/fields-present.js.map +1 -1
  46. package/dist/fields-present.spec.js +120 -27
  47. package/dist/fields-present.spec.js.map +1 -1
  48. package/dist/fixed-fields.js +72 -27
  49. package/dist/fixed-fields.js.map +1 -1
  50. package/dist/fixed-fields.spec.js +139 -27
  51. package/dist/fixed-fields.spec.js.map +1 -1
  52. package/dist/identical-fields.js +42 -28
  53. package/dist/identical-fields.js.map +1 -1
  54. package/dist/identical-fields.spec.js +98 -27
  55. package/dist/identical-fields.spec.js.map +1 -1
  56. package/dist/index.js +202 -27
  57. package/dist/index.js.map +1 -1
  58. package/dist/indicator-fixes.js +191 -0
  59. package/dist/indicator-fixes.js.map +1 -0
  60. package/dist/indicator-fixes.spec.js +51 -0
  61. package/dist/indicator-fixes.spec.js.map +1 -0
  62. package/dist/isbn-issn.js +266 -27
  63. package/dist/isbn-issn.js.map +1 -1
  64. package/dist/isbn-issn.spec.js +594 -27
  65. package/dist/isbn-issn.spec.js.map +1 -1
  66. package/dist/item-language.js +171 -27
  67. package/dist/item-language.js.map +1 -1
  68. package/dist/item-language.spec.js +305 -27
  69. package/dist/item-language.spec.js.map +1 -1
  70. package/dist/mergeField500Lisapainokset.js +155 -0
  71. package/dist/mergeField500Lisapainokset.js.map +1 -0
  72. package/dist/mergeField500Lisapainokset.spec.js +51 -0
  73. package/dist/mergeField500Lisapainokset.spec.js.map +1 -0
  74. package/dist/mergeRelatorTermFields.js +140 -0
  75. package/dist/mergeRelatorTermFields.js.map +1 -0
  76. package/dist/mergeRelatorTermFields.spec.js +51 -0
  77. package/dist/mergeRelatorTermFields.spec.js.map +1 -0
  78. package/dist/multiple-subfield-0.js +120 -0
  79. package/dist/multiple-subfield-0.js.map +1 -0
  80. package/dist/multiple-subfield-0.spec.js +51 -0
  81. package/dist/multiple-subfield-0.spec.js.map +1 -0
  82. package/dist/non-breaking-space.js +61 -0
  83. package/dist/non-breaking-space.js.map +1 -0
  84. package/dist/non-breaking-space.spec.js +42 -0
  85. package/dist/non-breaking-space.spec.js.map +1 -0
  86. package/dist/normalize-identifiers.js +210 -0
  87. package/dist/normalize-identifiers.js.map +1 -0
  88. package/dist/normalize-identifiers.spec.js +51 -0
  89. package/dist/normalize-identifiers.spec.js.map +1 -0
  90. package/dist/normalize-utf8-diacritics.js +140 -0
  91. package/dist/normalize-utf8-diacritics.js.map +1 -0
  92. package/dist/normalize-utf8-diacritics.spec.js +51 -0
  93. package/dist/normalize-utf8-diacritics.spec.js.map +1 -0
  94. package/dist/punctuation/index.js +281 -0
  95. package/dist/punctuation/index.js.map +1 -0
  96. package/dist/punctuation/rules/aut.js +332 -0
  97. package/dist/punctuation/rules/aut.js.map +1 -0
  98. package/dist/punctuation/rules/bib.js +374 -0
  99. package/dist/punctuation/rules/bib.js.map +1 -0
  100. package/dist/punctuation/rules/index.js +21 -0
  101. package/dist/punctuation/rules/index.js.map +1 -0
  102. package/dist/punctuation.spec.js +51 -0
  103. package/dist/punctuation.spec.js.map +1 -0
  104. package/dist/punctuation2.js +726 -0
  105. package/dist/punctuation2.js.map +1 -0
  106. package/dist/punctuation2.spec.js +51 -0
  107. package/dist/punctuation2.spec.js.map +1 -0
  108. package/dist/reindexSubfield6OccurenceNumbers.js +199 -0
  109. package/dist/reindexSubfield6OccurenceNumbers.js.map +1 -0
  110. package/dist/reindexSubfield6OccurenceNumbers.spec.js +51 -0
  111. package/dist/reindexSubfield6OccurenceNumbers.spec.js.map +1 -0
  112. package/dist/removeDuplicateDataFields.js +405 -0
  113. package/dist/removeDuplicateDataFields.js.map +1 -0
  114. package/dist/removeDuplicateDataFields.spec.js +51 -0
  115. package/dist/removeDuplicateDataFields.spec.js.map +1 -0
  116. package/dist/removeInferiorDataFields.js +245 -0
  117. package/dist/removeInferiorDataFields.js.map +1 -0
  118. package/dist/removeInferiorDataFields.spec.js +51 -0
  119. package/dist/removeInferiorDataFields.spec.js.map +1 -0
  120. package/dist/resolvable-ext-references-melinda.js +112 -31
  121. package/dist/resolvable-ext-references-melinda.js.map +1 -1
  122. package/dist/resolvable-ext-references-melinda.spec.js +166 -27
  123. package/dist/resolvable-ext-references-melinda.spec.js.map +1 -1
  124. package/dist/resolveOrphanedSubfield6s.js +116 -0
  125. package/dist/resolveOrphanedSubfield6s.js.map +1 -0
  126. package/dist/resolveOrphanedSubfield6s.spec.js +51 -0
  127. package/dist/resolveOrphanedSubfield6s.spec.js.map +1 -0
  128. package/dist/sanitize-vocabulary-source-codes.js +93 -0
  129. package/dist/sanitize-vocabulary-source-codes.js.map +1 -0
  130. package/dist/sanitize-vocabulary-source-codes.spec.js +51 -0
  131. package/dist/sanitize-vocabulary-source-codes.spec.js.map +1 -0
  132. package/dist/sort-tags.js +53 -27
  133. package/dist/sort-tags.js.map +1 -1
  134. package/dist/sort-tags.spec.js +206 -27
  135. package/dist/sort-tags.spec.js.map +1 -1
  136. package/dist/sortRelatorTerms.js +135 -0
  137. package/dist/sortRelatorTerms.js.map +1 -0
  138. package/dist/sortRelatorTerms.spec.js +51 -0
  139. package/dist/sortRelatorTerms.spec.js.map +1 -0
  140. package/dist/sortSubfields.js +279 -0
  141. package/dist/sortSubfields.js.map +1 -0
  142. package/dist/sortSubfields.spec.js +51 -0
  143. package/dist/sortSubfields.spec.js.map +1 -0
  144. package/dist/stripPunctuation.js +49 -0
  145. package/dist/stripPunctuation.js.map +1 -0
  146. package/dist/stripPunctuation.spec.js +51 -0
  147. package/dist/stripPunctuation.spec.js.map +1 -0
  148. package/dist/subfield-exclusion.js +174 -57
  149. package/dist/subfield-exclusion.js.map +1 -1
  150. package/dist/subfield-exclusion.spec.js +521 -31
  151. package/dist/subfield-exclusion.spec.js.map +1 -1
  152. package/dist/subfield6Utils.js +457 -0
  153. package/dist/subfield6Utils.js.map +1 -0
  154. package/dist/subfield8Utils.js +99 -0
  155. package/dist/subfield8Utils.js.map +1 -0
  156. package/dist/typeOfDate-008.js +48 -0
  157. package/dist/typeOfDate-008.js.map +1 -0
  158. package/dist/typeOfDate-008.spec.js +47 -0
  159. package/dist/typeOfDate-008.spec.js.map +1 -0
  160. package/dist/unicode-decomposition.js +139 -30
  161. package/dist/unicode-decomposition.js.map +1 -1
  162. package/dist/unicode-decomposition.spec.js +90 -27
  163. package/dist/unicode-decomposition.spec.js.map +1 -1
  164. package/dist/update-field-540.js +119 -0
  165. package/dist/update-field-540.js.map +1 -0
  166. package/dist/update-field-540.spec.js +51 -0
  167. package/dist/update-field-540.spec.js.map +1 -0
  168. package/dist/urn.js +185 -0
  169. package/dist/urn.js.map +1 -0
  170. package/dist/urn.spec.js +238 -0
  171. package/dist/urn.spec.js.map +1 -0
  172. package/dist/utils.js +58 -0
  173. package/dist/utils.js.map +1 -0
  174. package/package.json +114 -124
  175. package/src/access-rights.js +84 -0
  176. package/src/access-rights.spec.js +126 -0
  177. package/src/double-commas.js +12 -49
  178. package/src/double-commas.spec.js +50 -82
  179. package/src/duplicates-ind1.js +34 -74
  180. package/src/duplicates-ind1.spec.js +39 -117
  181. package/src/empty-fields.js +62 -74
  182. package/src/empty-fields.spec.js +134 -207
  183. package/src/ending-punctuation-conf.js +679 -644
  184. package/src/ending-punctuation.js +260 -250
  185. package/src/ending-punctuation.spec.js +2545 -2322
  186. package/src/ending-whitespace.js +40 -0
  187. package/src/ending-whitespace.spec.js +44 -0
  188. package/src/field-521-fix.js +92 -0
  189. package/src/field-521-fix.spec.js +52 -0
  190. package/src/field-exclusion.js +197 -215
  191. package/src/field-exclusion.spec.js +883 -481
  192. package/src/field-structure.js +213 -271
  193. package/src/field-structure.spec.js +597 -474
  194. package/src/fields-present.js +19 -49
  195. package/src/fields-present.spec.js +90 -91
  196. package/src/fixed-fields.js +61 -94
  197. package/src/fixed-fields.spec.js +81 -125
  198. package/src/identical-fields.js +29 -48
  199. package/src/identical-fields.spec.js +114 -146
  200. package/src/index.js +41 -46
  201. package/src/indicator-fixes.js +211 -0
  202. package/src/indicator-fixes.spec.js +52 -0
  203. package/src/isbn-issn.js +254 -106
  204. package/src/isbn-issn.spec.js +399 -172
  205. package/src/item-language.js +158 -195
  206. package/src/item-language.spec.js +314 -306
  207. package/src/mergeField500Lisapainokset.js +153 -0
  208. package/src/mergeField500Lisapainokset.spec.js +52 -0
  209. package/src/mergeRelatorTermFields.js +143 -0
  210. package/src/mergeRelatorTermFields.spec.js +52 -0
  211. package/src/multiple-subfield-0.js +129 -0
  212. package/src/multiple-subfield-0.spec.js +52 -0
  213. package/src/non-breaking-space.js +49 -0
  214. package/src/non-breaking-space.spec.js +44 -0
  215. package/src/normalize-identifiers.js +197 -0
  216. package/src/normalize-identifiers.spec.js +52 -0
  217. package/src/normalize-utf8-diacritics.js +141 -0
  218. package/src/normalize-utf8-diacritics.spec.js +52 -0
  219. package/src/punctuation/index.js +292 -0
  220. package/src/punctuation/rules/aut.js +372 -0
  221. package/src/punctuation/rules/bib.js +420 -0
  222. package/src/punctuation/rules/index.js +7 -0
  223. package/src/punctuation.spec.js +52 -0
  224. package/src/punctuation2.js +441 -0
  225. package/src/punctuation2.spec.js +52 -0
  226. package/src/reindexSubfield6OccurenceNumbers.js +210 -0
  227. package/src/reindexSubfield6OccurenceNumbers.spec.js +52 -0
  228. package/src/removeDuplicateDataFields.js +447 -0
  229. package/src/removeDuplicateDataFields.spec.js +52 -0
  230. package/src/removeInferiorDataFields.js +259 -0
  231. package/src/removeInferiorDataFields.spec.js +52 -0
  232. package/src/resolvable-ext-references-melinda.js +89 -122
  233. package/src/resolvable-ext-references-melinda.spec.js +168 -198
  234. package/src/resolveOrphanedSubfield6s.js +115 -0
  235. package/src/resolveOrphanedSubfield6s.spec.js +52 -0
  236. package/src/sanitize-vocabulary-source-codes.js +99 -0
  237. package/src/sanitize-vocabulary-source-codes.spec.js +52 -0
  238. package/src/sort-tags.js +34 -60
  239. package/src/sort-tags.spec.js +256 -290
  240. package/src/sortRelatorTerms.js +142 -0
  241. package/src/sortRelatorTerms.spec.js +52 -0
  242. package/src/sortSubfields.js +176 -0
  243. package/src/sortSubfields.spec.js +52 -0
  244. package/src/stripPunctuation.js +42 -0
  245. package/src/stripPunctuation.spec.js +52 -0
  246. package/src/subfield-exclusion.js +157 -180
  247. package/src/subfield-exclusion.spec.js +507 -453
  248. package/src/subfield6Utils.js +485 -0
  249. package/src/subfield8Utils.js +102 -0
  250. package/src/typeOfDate-008.js +40 -0
  251. package/src/typeOfDate-008.spec.js +47 -0
  252. package/src/unicode-decomposition.js +130 -145
  253. package/src/unicode-decomposition.spec.js +89 -115
  254. package/src/update-field-540.js +99 -0
  255. package/src/update-field-540.spec.js +52 -0
  256. package/src/urn.js +164 -0
  257. package/src/urn.spec.js +231 -0
  258. package/src/utils.js +52 -0
  259. package/test-fixtures/duplicates-ind1/01/expectedResult.json +4 -0
  260. package/test-fixtures/duplicates-ind1/01/metadata.json +4 -0
  261. package/test-fixtures/duplicates-ind1/01/record.json +16 -0
  262. package/test-fixtures/duplicates-ind1/02/expectedResult.json +6 -0
  263. package/test-fixtures/duplicates-ind1/02/metadata.json +4 -0
  264. package/test-fixtures/duplicates-ind1/02/record.json +16 -0
  265. package/test-fixtures/duplicates-ind1/03/expectedResult.json +13 -0
  266. package/test-fixtures/duplicates-ind1/03/metadata.json +6 -0
  267. package/test-fixtures/duplicates-ind1/03/record.json +16 -0
  268. package/test-fixtures/ending-whitespace/01/expectedResult.json +4 -0
  269. package/test-fixtures/ending-whitespace/01/metadata.json +6 -0
  270. package/test-fixtures/ending-whitespace/01/record.json +15 -0
  271. package/test-fixtures/ending-whitespace/02/expectedResult.json +4 -0
  272. package/test-fixtures/ending-whitespace/02/metadata.json +6 -0
  273. package/test-fixtures/ending-whitespace/02/record.json +15 -0
  274. package/test-fixtures/ending-whitespace/03/expectedResult.json +17 -0
  275. package/test-fixtures/ending-whitespace/03/metadata.json +6 -0
  276. package/test-fixtures/ending-whitespace/03/record.json +15 -0
  277. package/test-fixtures/ending-whitespace/04/expectedResult.json +10 -0
  278. package/test-fixtures/ending-whitespace/04/metadata.json +6 -0
  279. package/test-fixtures/ending-whitespace/04/record.json +8 -0
  280. package/test-fixtures/fix521/01/expectedResult.json +6 -0
  281. package/test-fixtures/fix521/01/metadata.json +5 -0
  282. package/test-fixtures/fix521/01/record.json +13 -0
  283. package/test-fixtures/fix521/02/expectedResult.json +15 -0
  284. package/test-fixtures/fix521/02/metadata.json +5 -0
  285. package/test-fixtures/fix521/02/record.json +13 -0
  286. package/test-fixtures/fix521/03/expectedResult.json +5 -0
  287. package/test-fixtures/fix521/03/metadata.json +5 -0
  288. package/test-fixtures/fix521/03/record.json +13 -0
  289. package/test-fixtures/indicator-fixes/01/expectedResult.json +9 -0
  290. package/test-fixtures/indicator-fixes/01/metadata.json +5 -0
  291. package/test-fixtures/indicator-fixes/01/record.json +64 -0
  292. package/test-fixtures/indicator-fixes/02/expectedResult.json +66 -0
  293. package/test-fixtures/indicator-fixes/02/metadata.json +5 -0
  294. package/test-fixtures/indicator-fixes/02/record.json +64 -0
  295. package/test-fixtures/indicator-fixes/03/expectedResult.json +55 -0
  296. package/test-fixtures/indicator-fixes/03/metadata.json +5 -0
  297. package/test-fixtures/indicator-fixes/03/record.json +54 -0
  298. package/test-fixtures/indicator-fixes/04/expectedResult.json +66 -0
  299. package/test-fixtures/indicator-fixes/04/metadata.json +5 -0
  300. package/test-fixtures/indicator-fixes/04/record.json +65 -0
  301. package/test-fixtures/indicator-fixes/05/expectedResult.json +66 -0
  302. package/test-fixtures/indicator-fixes/05/metadata.json +5 -0
  303. package/test-fixtures/indicator-fixes/05/record.json +65 -0
  304. package/test-fixtures/indicator-fixes/06/expectedResult.json +75 -0
  305. package/test-fixtures/indicator-fixes/06/metadata.json +5 -0
  306. package/test-fixtures/indicator-fixes/06/record.json +74 -0
  307. package/test-fixtures/lisapainokset/fixer/01/expectedResult.json +37 -0
  308. package/test-fixtures/lisapainokset/fixer/01/metadata.json +6 -0
  309. package/test-fixtures/lisapainokset/fixer/01/record.json +61 -0
  310. package/test-fixtures/lisapainokset/fixer/02/expectedResult.json +44 -0
  311. package/test-fixtures/lisapainokset/fixer/02/metadata.json +6 -0
  312. package/test-fixtures/lisapainokset/fixer/02/record.json +45 -0
  313. package/test-fixtures/lisapainokset/fixer/03/expectedResult.json +21 -0
  314. package/test-fixtures/lisapainokset/fixer/03/metadata.json +6 -0
  315. package/test-fixtures/lisapainokset/fixer/03/record.json +45 -0
  316. package/test-fixtures/lisapainokset/validator/01/expectedResult.json +7 -0
  317. package/test-fixtures/lisapainokset/validator/01/metadata.json +6 -0
  318. package/test-fixtures/lisapainokset/validator/01/record.json +45 -0
  319. package/test-fixtures/lisapainokset/validator/02/expectedResult.json +6 -0
  320. package/test-fixtures/lisapainokset/validator/02/metadata.json +6 -0
  321. package/test-fixtures/lisapainokset/validator/02/record.json +61 -0
  322. package/test-fixtures/lisapainokset/validator/03/expectedResult.json +4 -0
  323. package/test-fixtures/lisapainokset/validator/03/metadata.json +6 -0
  324. package/test-fixtures/lisapainokset/validator/03/record.json +37 -0
  325. package/test-fixtures/mergeRelatorTermFields/fixer/01/expectedResult.json +14 -0
  326. package/test-fixtures/mergeRelatorTermFields/fixer/01/metadata.json +6 -0
  327. package/test-fixtures/mergeRelatorTermFields/fixer/01/record.json +16 -0
  328. package/test-fixtures/mergeRelatorTermFields/fixer/02/expectedResult.json +17 -0
  329. package/test-fixtures/mergeRelatorTermFields/fixer/02/metadata.json +6 -0
  330. package/test-fixtures/mergeRelatorTermFields/fixer/02/record.json +23 -0
  331. package/test-fixtures/mergeRelatorTermFields/validator/01/expectedResult.json +6 -0
  332. package/test-fixtures/mergeRelatorTermFields/validator/01/metadata.json +6 -0
  333. package/test-fixtures/mergeRelatorTermFields/validator/01/record.json +16 -0
  334. package/test-fixtures/mergeRelatorTermFields/validator/02/expectedResult.json +4 -0
  335. package/test-fixtures/mergeRelatorTermFields/validator/02/metadata.json +6 -0
  336. package/test-fixtures/mergeRelatorTermFields/validator/02/record.json +16 -0
  337. package/test-fixtures/non-breaking-space/01/expectedResult.json +4 -0
  338. package/test-fixtures/non-breaking-space/01/metadata.json +6 -0
  339. package/test-fixtures/non-breaking-space/01/record.json +15 -0
  340. package/test-fixtures/non-breaking-space/02/expectedResult.json +4 -0
  341. package/test-fixtures/non-breaking-space/02/metadata.json +6 -0
  342. package/test-fixtures/non-breaking-space/02/record.json +15 -0
  343. package/test-fixtures/non-breaking-space/03/expectedResult.json +17 -0
  344. package/test-fixtures/non-breaking-space/03/metadata.json +6 -0
  345. package/test-fixtures/non-breaking-space/03/record.json +15 -0
  346. package/test-fixtures/non-breaking-space/04/expectedResult.json +21 -0
  347. package/test-fixtures/non-breaking-space/04/metadata.json +6 -0
  348. package/test-fixtures/non-breaking-space/04/record.json +19 -0
  349. package/test-fixtures/normalize-identifiers/01/expectedResult.json +8 -0
  350. package/test-fixtures/normalize-identifiers/01/metadata.json +5 -0
  351. package/test-fixtures/normalize-identifiers/01/record.json +81 -0
  352. package/test-fixtures/normalize-identifiers/02/expectedResult.json +92 -0
  353. package/test-fixtures/normalize-identifiers/02/metadata.json +5 -0
  354. package/test-fixtures/normalize-identifiers/02/record.json +92 -0
  355. package/test-fixtures/normalize-identifiers/03/expectedResult.json +63 -0
  356. package/test-fixtures/normalize-identifiers/03/metadata.json +5 -0
  357. package/test-fixtures/normalize-identifiers/03/record.json +61 -0
  358. package/test-fixtures/normalize-identifiers/04/expectedResult.json +79 -0
  359. package/test-fixtures/normalize-identifiers/04/metadata.json +5 -0
  360. package/test-fixtures/normalize-identifiers/04/record.json +77 -0
  361. package/test-fixtures/normalize-utf8-diacritics/01/expectedResult.json +7 -0
  362. package/test-fixtures/normalize-utf8-diacritics/01/metadata.json +5 -0
  363. package/test-fixtures/normalize-utf8-diacritics/01/record.json +39 -0
  364. package/test-fixtures/normalize-utf8-diacritics/02/expectedResult.json +41 -0
  365. package/test-fixtures/normalize-utf8-diacritics/02/metadata.json +5 -0
  366. package/test-fixtures/normalize-utf8-diacritics/02/record.json +39 -0
  367. package/test-fixtures/normalize-utf8-diacritics/03/expectedResult.json +5 -0
  368. package/test-fixtures/normalize-utf8-diacritics/03/metadata.json +5 -0
  369. package/test-fixtures/normalize-utf8-diacritics/03/record.json +37 -0
  370. package/test-fixtures/normalize-utf8-diacritics/04/expectedResult.json +41 -0
  371. package/test-fixtures/normalize-utf8-diacritics/04/metadata.json +5 -0
  372. package/test-fixtures/normalize-utf8-diacritics/04/record.json +39 -0
  373. package/test-fixtures/normalize-utf8-diacritics/05/expectedResult.json +41 -0
  374. package/test-fixtures/normalize-utf8-diacritics/05/metadata.json +5 -0
  375. package/test-fixtures/normalize-utf8-diacritics/05/record.json +41 -0
  376. package/test-fixtures/punctuation/01/expectedResult.json +3 -0
  377. package/test-fixtures/punctuation/01/metadata.json +4 -0
  378. package/test-fixtures/punctuation/01/record.json +18 -0
  379. package/test-fixtures/punctuation/02/expectedResult.json +3 -0
  380. package/test-fixtures/punctuation/02/metadata.json +4 -0
  381. package/test-fixtures/punctuation/02/record.json +18 -0
  382. package/test-fixtures/punctuation/03/expectedResult.json +21 -0
  383. package/test-fixtures/punctuation/03/metadata.json +5 -0
  384. package/test-fixtures/punctuation/03/record.json +19 -0
  385. package/test-fixtures/punctuation/04/expectedResult.json +21 -0
  386. package/test-fixtures/punctuation/04/metadata.json +5 -0
  387. package/test-fixtures/punctuation/04/record.json +19 -0
  388. package/test-fixtures/punctuation/05/expectedResult.json +44 -0
  389. package/test-fixtures/punctuation/05/metadata.json +5 -0
  390. package/test-fixtures/punctuation/05/record.json +42 -0
  391. package/test-fixtures/punctuation2/01/expectedResult.json +12 -0
  392. package/test-fixtures/punctuation2/01/metadata.json +6 -0
  393. package/test-fixtures/punctuation2/01/record.json +37 -0
  394. package/test-fixtures/punctuation2/02/expectedResult.json +4 -0
  395. package/test-fixtures/punctuation2/02/metadata.json +6 -0
  396. package/test-fixtures/punctuation2/02/record.json +14 -0
  397. package/test-fixtures/punctuation2/04/expectedResult.json +7 -0
  398. package/test-fixtures/punctuation2/04/metadata.json +6 -0
  399. package/test-fixtures/punctuation2/04/record.json +22 -0
  400. package/test-fixtures/punctuation2/05/expectedResult.json +6 -0
  401. package/test-fixtures/punctuation2/05/metadata.json +6 -0
  402. package/test-fixtures/punctuation2/05/record.json +12 -0
  403. package/test-fixtures/punctuation2/98/expectedResult.json +45 -0
  404. package/test-fixtures/punctuation2/98/metadata.json +6 -0
  405. package/test-fixtures/punctuation2/98/record.json +43 -0
  406. package/test-fixtures/punctuation2/99/expectedResult.json +15 -0
  407. package/test-fixtures/punctuation2/99/metadata.json +6 -0
  408. package/test-fixtures/punctuation2/99/record.json +14 -0
  409. package/test-fixtures/reindex-sf6-occurence-numbers/f01/expectedResult.json +35 -0
  410. package/test-fixtures/reindex-sf6-occurence-numbers/f01/metadata.json +6 -0
  411. package/test-fixtures/reindex-sf6-occurence-numbers/f01/record.json +34 -0
  412. package/test-fixtures/reindex-sf6-occurence-numbers/f02/expectedResult.json +53 -0
  413. package/test-fixtures/reindex-sf6-occurence-numbers/f02/metadata.json +6 -0
  414. package/test-fixtures/reindex-sf6-occurence-numbers/f02/record.json +51 -0
  415. package/test-fixtures/reindex-sf6-occurence-numbers/f03/expectedResult.json +46 -0
  416. package/test-fixtures/reindex-sf6-occurence-numbers/f03/metadata.json +7 -0
  417. package/test-fixtures/reindex-sf6-occurence-numbers/f03/record.json +44 -0
  418. package/test-fixtures/reindex-sf6-occurence-numbers/v01/expectedResult.json +6 -0
  419. package/test-fixtures/reindex-sf6-occurence-numbers/v01/metadata.json +5 -0
  420. package/test-fixtures/reindex-sf6-occurence-numbers/v01/record.json +31 -0
  421. package/test-fixtures/reindex-sf6-occurence-numbers/v02/expectedResult.json +6 -0
  422. package/test-fixtures/reindex-sf6-occurence-numbers/v02/metadata.json +6 -0
  423. package/test-fixtures/reindex-sf6-occurence-numbers/v02/record.json +38 -0
  424. package/test-fixtures/reindex-sf6-occurence-numbers/v03/expectedResult.json +6 -0
  425. package/test-fixtures/reindex-sf6-occurence-numbers/v03/metadata.json +6 -0
  426. package/test-fixtures/reindex-sf6-occurence-numbers/v03/record.json +30 -0
  427. package/test-fixtures/remove-duplicate-datafields/f01/expectedResult.json +35 -0
  428. package/test-fixtures/remove-duplicate-datafields/f01/metadata.json +6 -0
  429. package/test-fixtures/remove-duplicate-datafields/f01/record.json +34 -0
  430. package/test-fixtures/remove-duplicate-datafields/f03/expectedResult.json +20 -0
  431. package/test-fixtures/remove-duplicate-datafields/f03/metadata.json +6 -0
  432. package/test-fixtures/remove-duplicate-datafields/f03/record.json +33 -0
  433. package/test-fixtures/remove-duplicate-datafields/f03b/expectedResult.json +20 -0
  434. package/test-fixtures/remove-duplicate-datafields/f03b/metadata.json +6 -0
  435. package/test-fixtures/remove-duplicate-datafields/f03b/record.json +35 -0
  436. package/test-fixtures/remove-duplicate-datafields/f03c/expectedResult.json +25 -0
  437. package/test-fixtures/remove-duplicate-datafields/f03c/metadata.json +6 -0
  438. package/test-fixtures/remove-duplicate-datafields/f03c/record.json +43 -0
  439. package/test-fixtures/remove-duplicate-datafields/f04/expectedResult.json +31 -0
  440. package/test-fixtures/remove-duplicate-datafields/f04/metadata.json +6 -0
  441. package/test-fixtures/remove-duplicate-datafields/f04/record.json +41 -0
  442. package/test-fixtures/remove-duplicate-datafields/f05/expectedResult.json +23 -0
  443. package/test-fixtures/remove-duplicate-datafields/f05/metadata.json +6 -0
  444. package/test-fixtures/remove-duplicate-datafields/f05/record.json +29 -0
  445. package/test-fixtures/remove-duplicate-datafields/f06/expectedResult.json +24 -0
  446. package/test-fixtures/remove-duplicate-datafields/f06/metadata.json +6 -0
  447. package/test-fixtures/remove-duplicate-datafields/f06/record.json +41 -0
  448. package/test-fixtures/remove-duplicate-datafields/f07/expectedResult.json +15 -0
  449. package/test-fixtures/remove-duplicate-datafields/f07/metadata.json +6 -0
  450. package/test-fixtures/remove-duplicate-datafields/f07/record.json +21 -0
  451. package/test-fixtures/remove-duplicate-datafields/f08/expectedResult.json +21 -0
  452. package/test-fixtures/remove-duplicate-datafields/f08/metadata.json +6 -0
  453. package/test-fixtures/remove-duplicate-datafields/f08/record.json +33 -0
  454. package/test-fixtures/remove-duplicate-datafields/f09/expectedResult.json +6 -0
  455. package/test-fixtures/remove-duplicate-datafields/f09/metadata.json +6 -0
  456. package/test-fixtures/remove-duplicate-datafields/f09/record.json +9 -0
  457. package/test-fixtures/remove-duplicate-datafields/f10/expectedResult.json +15 -0
  458. package/test-fixtures/remove-duplicate-datafields/f10/metadata.json +6 -0
  459. package/test-fixtures/remove-duplicate-datafields/f10/record.json +24 -0
  460. package/test-fixtures/remove-duplicate-datafields/f11/expectedResult.json +30 -0
  461. package/test-fixtures/remove-duplicate-datafields/f11/metadata.json +6 -0
  462. package/test-fixtures/remove-duplicate-datafields/f11/record.json +53 -0
  463. package/test-fixtures/remove-duplicate-datafields/v01/expectedResult.json +6 -0
  464. package/test-fixtures/remove-duplicate-datafields/v01/metadata.json +6 -0
  465. package/test-fixtures/remove-duplicate-datafields/v01/record.json +31 -0
  466. package/test-fixtures/remove-duplicate-datafields/v02/expectedResult.json +10 -0
  467. package/test-fixtures/remove-duplicate-datafields/v02/metadata.json +6 -0
  468. package/test-fixtures/remove-duplicate-datafields/v02/record.json +45 -0
  469. package/test-fixtures/remove-duplicate-datafields/v03/expectedResult.json +6 -0
  470. package/test-fixtures/remove-duplicate-datafields/v03/metadata.json +7 -0
  471. package/test-fixtures/remove-duplicate-datafields/v03/record.json +37 -0
  472. package/test-fixtures/remove-duplicate-datafields/v04/expectedResult.json +8 -0
  473. package/test-fixtures/remove-duplicate-datafields/v04/metadata.json +6 -0
  474. package/test-fixtures/remove-duplicate-datafields/v04/record.json +41 -0
  475. package/test-fixtures/remove-inferior-datafields/f01/expectedResult.json +21 -0
  476. package/test-fixtures/remove-inferior-datafields/f01/metadata.json +6 -0
  477. package/test-fixtures/remove-inferior-datafields/f01/record.json +31 -0
  478. package/test-fixtures/remove-inferior-datafields/f03/expectedResult.json +16 -0
  479. package/test-fixtures/remove-inferior-datafields/f03/metadata.json +6 -0
  480. package/test-fixtures/remove-inferior-datafields/f03/record.json +27 -0
  481. package/test-fixtures/remove-inferior-datafields/f04/expectedResult.json +31 -0
  482. package/test-fixtures/remove-inferior-datafields/f04/metadata.json +6 -0
  483. package/test-fixtures/remove-inferior-datafields/f04/record.json +38 -0
  484. package/test-fixtures/remove-inferior-datafields/f05/expectedResult.json +34 -0
  485. package/test-fixtures/remove-inferior-datafields/f05/metadata.json +6 -0
  486. package/test-fixtures/remove-inferior-datafields/f05/record.json +41 -0
  487. package/test-fixtures/remove-inferior-datafields/f06/expectedResult.json +16 -0
  488. package/test-fixtures/remove-inferior-datafields/f06/metadata.json +6 -0
  489. package/test-fixtures/remove-inferior-datafields/f06/record.json +20 -0
  490. package/test-fixtures/remove-inferior-datafields/v01/expectedResult.json +6 -0
  491. package/test-fixtures/remove-inferior-datafields/v01/metadata.json +6 -0
  492. package/test-fixtures/remove-inferior-datafields/v01/record.json +31 -0
  493. package/test-fixtures/remove-inferior-datafields/v02/expectedResult.json +6 -0
  494. package/test-fixtures/remove-inferior-datafields/v02/metadata.json +6 -0
  495. package/test-fixtures/remove-inferior-datafields/v02/record.json +21 -0
  496. package/test-fixtures/remove-orphanded-sf6s/f01/expectedResult.json +35 -0
  497. package/test-fixtures/remove-orphanded-sf6s/f01/metadata.json +6 -0
  498. package/test-fixtures/remove-orphanded-sf6s/f01/record.json +34 -0
  499. package/test-fixtures/remove-orphanded-sf6s/f02/expectedResult.json +40 -0
  500. package/test-fixtures/remove-orphanded-sf6s/f02/metadata.json +6 -0
  501. package/test-fixtures/remove-orphanded-sf6s/f02/record.json +43 -0
  502. package/test-fixtures/remove-orphanded-sf6s/v01/expectedResult.json +6 -0
  503. package/test-fixtures/remove-orphanded-sf6s/v01/metadata.json +6 -0
  504. package/test-fixtures/remove-orphanded-sf6s/v01/record.json +31 -0
  505. package/test-fixtures/remove-orphanded-sf6s/v02/expectedResult.json +6 -0
  506. package/test-fixtures/remove-orphanded-sf6s/v02/metadata.json +6 -0
  507. package/test-fixtures/remove-orphanded-sf6s/v02/record.json +31 -0
  508. package/test-fixtures/resolvable-ext-references-melinda.js +0 -27
  509. package/test-fixtures/sanitize-vocabulary-source-codes/f01/expectedResult.json +32 -0
  510. package/test-fixtures/sanitize-vocabulary-source-codes/f01/metadata.json +6 -0
  511. package/test-fixtures/sanitize-vocabulary-source-codes/f01/record.json +32 -0
  512. package/test-fixtures/sanitize-vocabulary-source-codes/f02/expectedResult.json +24 -0
  513. package/test-fixtures/sanitize-vocabulary-source-codes/f02/metadata.json +6 -0
  514. package/test-fixtures/sanitize-vocabulary-source-codes/f02/record.json +24 -0
  515. package/test-fixtures/sanitize-vocabulary-source-codes/v01/expectedResult.json +12 -0
  516. package/test-fixtures/sanitize-vocabulary-source-codes/v01/metadata.json +6 -0
  517. package/test-fixtures/sanitize-vocabulary-source-codes/v01/record.json +24 -0
  518. package/test-fixtures/sort-relator-terms/f01/expectedResult.json +23 -0
  519. package/test-fixtures/sort-relator-terms/f01/metadata.json +6 -0
  520. package/test-fixtures/sort-relator-terms/f01/record.json +22 -0
  521. package/test-fixtures/sort-relator-terms/f02/expectedResult.json +26 -0
  522. package/test-fixtures/sort-relator-terms/f02/metadata.json +6 -0
  523. package/test-fixtures/sort-relator-terms/f02/record.json +22 -0
  524. package/test-fixtures/sort-relator-terms/v01/expectedResult.json +5 -0
  525. package/test-fixtures/sort-relator-terms/v01/metadata.json +6 -0
  526. package/test-fixtures/sort-relator-terms/v01/record.json +22 -0
  527. package/test-fixtures/sort-relator-terms/v02/expectedResult.json +6 -0
  528. package/test-fixtures/sort-relator-terms/v02/metadata.json +6 -0
  529. package/test-fixtures/sort-relator-terms/v02/record.json +14 -0
  530. package/test-fixtures/sort-subfields/f01/expectedResult.json +24 -0
  531. package/test-fixtures/sort-subfields/f01/metadata.json +6 -0
  532. package/test-fixtures/sort-subfields/f01/record.json +20 -0
  533. package/test-fixtures/sort-subfields/v01/expectedResult.json +5 -0
  534. package/test-fixtures/sort-subfields/v01/metadata.json +6 -0
  535. package/test-fixtures/sort-subfields/v01/record.json +24 -0
  536. package/test-fixtures/sort-subfields/v02/expectedResult.json +6 -0
  537. package/test-fixtures/sort-subfields/v02/metadata.json +6 -0
  538. package/test-fixtures/sort-subfields/v02/record.json +8 -0
  539. package/test-fixtures/strip-punctuation/01/expectedResult.json +12 -0
  540. package/test-fixtures/strip-punctuation/01/metadata.json +6 -0
  541. package/test-fixtures/strip-punctuation/01/record.json +37 -0
  542. package/test-fixtures/strip-punctuation/02/expectedResult.json +4 -0
  543. package/test-fixtures/strip-punctuation/02/metadata.json +6 -0
  544. package/test-fixtures/strip-punctuation/02/record.json +14 -0
  545. package/test-fixtures/strip-punctuation/04/expectedResult.json +6 -0
  546. package/test-fixtures/strip-punctuation/04/metadata.json +6 -0
  547. package/test-fixtures/strip-punctuation/04/record.json +22 -0
  548. package/test-fixtures/strip-punctuation/05/expectedResult.json +6 -0
  549. package/test-fixtures/strip-punctuation/05/metadata.json +6 -0
  550. package/test-fixtures/strip-punctuation/05/record.json +12 -0
  551. package/test-fixtures/strip-punctuation/98/expectedResult.json +44 -0
  552. package/test-fixtures/strip-punctuation/98/metadata.json +6 -0
  553. package/test-fixtures/strip-punctuation/98/record.json +45 -0
  554. package/test-fixtures/strip-punctuation/99/expectedResult.json +16 -0
  555. package/test-fixtures/strip-punctuation/99/metadata.json +6 -0
  556. package/test-fixtures/strip-punctuation/99/record.json +16 -0
  557. package/test-fixtures/subfield0/f01/expectedResult.json +25 -0
  558. package/test-fixtures/subfield0/f01/metadata.json +6 -0
  559. package/test-fixtures/subfield0/f01/record.json +23 -0
  560. package/test-fixtures/subfield0/f02/expectedResult.json +35 -0
  561. package/test-fixtures/subfield0/f02/metadata.json +6 -0
  562. package/test-fixtures/subfield0/f02/record.json +41 -0
  563. package/test-fixtures/subfield0/f03/expectedResult.json +21 -0
  564. package/test-fixtures/subfield0/f03/metadata.json +7 -0
  565. package/test-fixtures/subfield0/f03/record.json +24 -0
  566. package/test-fixtures/subfield0/v01/expectedResult.json +4 -0
  567. package/test-fixtures/subfield0/v01/metadata.json +6 -0
  568. package/test-fixtures/subfield0/v01/record.json +23 -0
  569. package/test-fixtures/subfield0/v02/expectedResult.json +9 -0
  570. package/test-fixtures/subfield0/v02/metadata.json +6 -0
  571. package/test-fixtures/subfield0/v02/record.json +38 -0
  572. package/test-fixtures/typeOfDate-008/01/expectedResult.json +3 -0
  573. package/test-fixtures/typeOfDate-008/01/metadata.json +4 -0
  574. package/test-fixtures/typeOfDate-008/01/record.json +14 -0
  575. package/test-fixtures/typeOfDate-008/02/expectedResult.json +4 -0
  576. package/test-fixtures/typeOfDate-008/02/metadata.json +4 -0
  577. package/test-fixtures/typeOfDate-008/02/record.json +14 -0
  578. package/test-fixtures/typeOfDate-008/03/expectedResult.json +14 -0
  579. package/test-fixtures/typeOfDate-008/03/metadata.json +5 -0
  580. package/test-fixtures/typeOfDate-008/03/record.json +14 -0
  581. package/test-fixtures/typeOfDate-008/04/expectedResult.json +14 -0
  582. package/test-fixtures/typeOfDate-008/04/metadata.json +5 -0
  583. package/test-fixtures/typeOfDate-008/04/record.json +14 -0
  584. package/test-fixtures/typeOfDate-008/05/expectedResult.json +14 -0
  585. package/test-fixtures/typeOfDate-008/05/metadata.json +5 -0
  586. package/test-fixtures/typeOfDate-008/05/record.json +14 -0
  587. package/test-fixtures/update-field-540/f01/expectedResult.json +23 -0
  588. package/test-fixtures/update-field-540/f01/metadata.json +6 -0
  589. package/test-fixtures/update-field-540/f01/record.json +23 -0
  590. package/test-fixtures/update-field-540/v01/expectedResult.json +7 -0
  591. package/test-fixtures/update-field-540/v01/metadata.json +6 -0
  592. package/test-fixtures/update-field-540/v01/record.json +23 -0
  593. package/.travis.yml +0 -10
@@ -1,651 +1,686 @@
1
- /**
2
- *
3
- * @licstart The following is the entire license notice for the JavaScript code in this file.
4
- *
5
- * MARC record validators used in Melinda
6
- *
7
- * Copyright (C) 2014-2018 University Of Helsinki (The National Library Of Finland)
8
- *
9
- * This file is part of marc-record-validators-melinda
10
- *
11
- * marc-record-validators-melinda program is free software: you can redistribute it and/or modify
12
- * it under the terms of the GNU Affero General Public License as
13
- * published by the Free Software Foundation, either version 3 of the
14
- * License, or (at your option) any later version.
15
- *
16
- * marc-record-validators-melinda is distributed in the hope that it will be useful,
17
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
18
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
- * GNU Affero General Public License for more details.
20
- *
21
- * You should have received a copy of the GNU Affero General Public License
22
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
23
- *
24
- * @licend The above is the entire license notice
25
- * for the JavaScript code in this file.
26
- *
27
- */
28
-
29
- 'use strict';
30
- const finnishTerms = ['ysa', 'yso', 'kassu', 'seko', 'valo', 'kulo', 'puho', 'oiko', 'mero', 'liito', 'fast', 'allars'];
1
+ // Const finnishTerms = ['ysa', 'yso', 'kassu', 'seko', 'valo', 'kulo', 'puho', 'oiko', 'mero', 'liito', 'fast', 'allars', 'kaunokki'];
2
+ const finnishTerms = [
3
+ /^ysa$/u,
4
+ /^yso$/u,
5
+ /^kassu$/u,
6
+ /^seko$/u,
7
+ /^valo$/u,
8
+ /^kulo$/u,
9
+ /^puho$/u,
10
+ /^oiko$/u,
11
+ /^mero$/u,
12
+ /^liito$/u,
13
+ /^fast$/u,
14
+ /^allars$/u,
15
+ /^kaunokki$/u,
16
+ /^bella$/u,
17
+ /^musa$/u,
18
+ /^local$/u,
19
+ /^slm\//u,
20
+ /^yso\//u,
21
+ /^kauno\//u
22
+ ];
31
23
 
32
24
  const validPuncMarks = '?"-!,)]';
33
25
  // Configuration specification
34
26
  const confSpec = [
35
- { // 010-035 EI
36
- rangeStart: 10,
37
- rangeEnd: 35,
38
- index: null,
39
- punc: false,
40
- special: null
41
- }, { // 036 KYLLÄ vain osakentän $b jälkeen
42
- rangeStart: null,
43
- rangeEnd: null,
44
- index: 36,
45
- punc: true,
46
- special: {
47
- afterOnly: 'b',
48
- strict: true // Punctuation only after $b, because $a is register number
49
- }
50
- }, { // 037-050 EI
51
- rangeStart: 37,
52
- rangeEnd: 50,
53
- index: null,
54
- punc: false,
55
- special: null
56
- }, { // 051 KYLLÄ
57
- rangeStart: null,
58
- rangeEnd: null,
59
- index: 51,
60
- punc: true,
61
- special: null
62
- }, { // 052-09X EI
63
- rangeStart: 52,
64
- rangeEnd: 99,
65
- index: null,
66
- punc: false,
67
- special: null
68
- }, { // 100 KYLLÄ
69
- rangeStart: null,
70
- rangeEnd: null,
71
- index: 100,
72
- punc: true,
73
- special: null
74
- }, { // 110 KYLLÄ
75
- rangeStart: null,
76
- rangeEnd: null,
77
- index: 110,
78
- punc: true,
79
- special: null
80
- }, { // 111 KYLLÄ
81
- rangeStart: null,
82
- rangeEnd: null,
83
- index: 111,
84
- punc: true,
85
- special: null
86
- }, { // 130 KYLLÄ
87
- rangeStart: null,
88
- rangeEnd: null,
89
- index: 130,
90
- punc: true,
91
- special: null
92
- }, { // 210 EI
93
- rangeStart: null,
94
- rangeEnd: null,
95
- index: 210,
96
- punc: false,
97
- special: null
98
- }, { // 222 EI
99
- rangeStart: null,
100
- rangeEnd: null,
101
- index: 222,
102
- punc: false,
103
- special: null
104
- }, { // 240 EI
105
- rangeStart: null,
106
- rangeEnd: null,
107
- index: 240,
108
- punc: false,
109
- special: null
110
- }, { // 242 KYLLÄ Jos viimeinen osakenttä on $y, piste on ennen sitä
111
- rangeStart: null,
112
- rangeEnd: null,
113
- index: 242,
114
- punc: true,
115
- special: {
116
- secondLastIfLast: 'y',
117
- last: false
118
- }
119
- }, { // 243 EI
120
- rangeStart: null,
121
- rangeEnd: null,
122
- index: 243,
123
- punc: false,
124
- special: null
125
- }, { // 245 KYLLÄ
126
- rangeStart: null,
127
- rangeEnd: null,
128
- index: 245,
129
- punc: true,
130
- special: null
131
- }, { // 246-247 EI
132
- rangeStart: 246,
133
- rangeEnd: 247,
134
- index: null,
135
- punc: false,
136
- special: null
137
- }, { // 250 KYLLÄ
138
- rangeStart: null,
139
- rangeEnd: null,
140
- index: 250,
141
- punc: true,
142
- special: null
143
- }, { // 254-258 KYLLÄ
144
- rangeStart: 254,
145
- rangeEnd: 258,
146
- index: null,
147
- punc: true,
148
- special: null
149
- }, { // 260 KYLLÄ Pääsääntö: $a : $b, $c. Tarkista eri poikkeukset ja välimerkitys MARC 21 Full -versiosta
150
- rangeStart: null,
151
- rangeEnd: null,
152
- index: 260,
153
- punc: true,
154
- special: {
155
- afterOnly: 'c',
156
- strict: false // Others fields may contain abbreviation
157
- }
158
- }, { // 263 EI
159
- rangeStart: null,
160
- rangeEnd: null,
161
- index: 263,
162
- punc: false,
163
- special: null
164
- }, { // 264 KYLLÄ Tarkista poikkeukset MARC 21 -sovellusohjeesta
165
- rangeStart: null,
166
- rangeEnd: null,
167
- index: 264,
168
- punc: true,
169
- special: {
170
- ifLast: 'c',
171
- ind: '4'
172
- }
173
- }, { // 270 EI
174
- rangeStart: null,
175
- rangeEnd: null,
176
- index: 270,
177
- punc: false,
178
- special: null
179
- }, { // 300 EI
180
- rangeStart: null,
181
- rangeEnd: null,
182
- index: 300,
183
- punc: false,
184
- special: null
185
- }, { // 306 EI
186
- rangeStart: null,
187
- rangeEnd: null,
188
- index: 306,
189
- punc: false,
190
- special: null
191
- }, { // 307 KYLLÄ
192
- rangeStart: null,
193
- rangeEnd: null,
194
- index: 307,
195
- punc: true,
196
- special: null
197
- }, { // 310 EI
198
- rangeStart: null,
199
- rangeEnd: null,
200
- index: 310,
201
- punc: false,
202
- special: null
203
- }, { // 321 EI
204
- rangeStart: null,
205
- rangeEnd: null,
206
- index: 321,
207
- punc: false,
208
- special: null
209
- }, { // 336-338 EI
210
- rangeStart: 336,
211
- rangeEnd: 338,
212
- index: null,
213
- punc: false,
214
- special: null
215
- }, { // 340 KYLLÄ Vain joidenkin osakenttien jälkeen. Tarkista osakentät MARC 21 Full -versiosta
216
- rangeStart: null,
217
- rangeEnd: null,
218
- index: 340,
219
- punc: true,
220
- special: {
221
- lastOf: ['a', 'd', 'e', 'f', 'h', 'i'],
222
- mandatory: ['b']
223
- }
224
- }, { // 342 EI
225
- rangeStart: null,
226
- rangeEnd: null,
227
- index: 342,
228
- punc: false,
229
- special: null
230
- }, { // 343 KYLLÄ
231
- rangeStart: null,
232
- rangeEnd: null,
233
- index: 343,
234
- punc: true,
235
- special: null
236
- }, { // 344-348 EI
237
- rangeStart: 344,
238
- rangeEnd: 348,
239
- index: null,
240
- punc: false,
241
- special: null
242
- }, { // 351-352 KYLLÄ
243
- rangeStart: 351,
244
- rangeEnd: 352,
245
- index: null,
246
- punc: true,
247
- special: null
248
- }, { // 355 EI
249
- rangeStart: null,
250
- rangeEnd: null,
251
- index: 355,
252
- punc: false,
253
- special: null
254
- }, { // 357 EI
255
- rangeStart: null,
256
- rangeEnd: null,
257
- index: 357,
258
- punc: false,
259
- special: null
260
- }, { // 362 KYLLÄ
261
- rangeStart: null,
262
- rangeEnd: null,
263
- index: 362,
264
- punc: true,
265
- special: null
266
- }, { // 363 EI
267
- rangeStart: null,
268
- rangeEnd: null,
269
- index: 363,
270
- punc: false,
271
- special: null
272
- }, { // 365-366 EI
273
- rangeStart: 365,
274
- rangeEnd: 366,
275
- index: null,
276
- punc: false,
277
- special: null
278
- }, { // 370 EI
279
- rangeStart: null,
280
- rangeEnd: null,
281
- index: 370,
282
- punc: false,
283
- special: null
284
- }, { // 377 EI
285
- rangeStart: null,
286
- rangeEnd: null,
287
- index: 377,
288
- punc: false,
289
- special: null
290
- }, { // 380-388 EI
291
- rangeStart: 380,
292
- rangeEnd: 388,
293
- index: null,
294
- punc: false,
295
- special: null
296
- }, { // 490 EI
297
- rangeStart: null,
298
- rangeEnd: null,
299
- index: 490,
300
- punc: false,
301
- special: null
302
- }, { // 500-509 KYLLÄ
303
- rangeStart: 500,
304
- rangeEnd: 509,
305
- index: null,
306
- punc: true,
307
- special: null
308
- }, { // 510 EI
309
- rangeStart: null,
310
- rangeEnd: null,
311
- index: 510,
312
- punc: false,
313
- special: null
314
- }, { // 511-518 KYLLÄ
315
- rangeStart: 511,
316
- rangeEnd: 518,
317
- index: null,
318
- punc: true,
319
- special: null
320
- }, { // 520 KYLLÄ Jos viimeinen osakenttä on $u, piste on ennen sitä
321
- rangeStart: null,
322
- rangeEnd: null,
323
- index: 520,
324
- punc: true,
325
- special: {
326
- secondLastIfLast: 'u'
327
- // Last: false //$u is URL and hence should not be checked as URL's can have '.' at end
328
- }
329
- }, { // 521-526 KYLLÄ
330
- rangeStart: 521,
331
- rangeEnd: 526,
332
- index: null,
333
- punc: true,
334
- special: null
335
- }, { // 530 KYLLÄ
336
- rangeStart: null,
337
- rangeEnd: null,
338
- index: 530,
339
- punc: true,
340
- special: null
341
- }, { // 533-534 KYLLÄ
342
- rangeStart: 533,
343
- rangeEnd: 534,
344
- index: null,
345
- punc: true,
346
- special: null
347
- }, { // 535-536 EI
348
- rangeStart: 535,
349
- rangeEnd: 536,
350
- index: null,
351
- punc: false,
352
- special: null
353
- }, { // 538 KYLLÄ Jos viimeinen osakenttä on $u, piste on ennen sitä
354
- rangeStart: null,
355
- rangeEnd: null,
356
- index: 538,
357
- punc: true,
358
- special: {
359
- secondLastIfLast: 'u'
360
- // Last: false //$u is URL and hence should not be checked as URL's can have '.' at end
361
- }
362
- }, { // 540-541 KYLLÄ
363
- rangeStart: 540,
364
- rangeEnd: 541,
365
- index: null,
366
- punc: true,
367
- special: null
368
- }, { // 542 EI
369
- rangeStart: null,
370
- rangeEnd: null,
371
- index: 542,
372
- punc: false,
373
- special: null
374
- }, { // 544-547 KYLLÄ
375
- rangeStart: 544,
376
- rangeEnd: 547,
377
- index: null,
378
- punc: true,
379
- special: null
380
- }, { // 550 KYLLÄ
381
- rangeStart: null,
382
- rangeEnd: null,
383
- index: 550,
384
- punc: true,
385
- special: null
386
- }, { // 552 KYLLÄ
387
- rangeStart: null,
388
- rangeEnd: null,
389
- index: 552,
390
- punc: true,
391
- special: null
392
- }, { // 555-556 KYLLÄ
393
- rangeStart: 555,
394
- rangeEnd: 556,
395
- index: null,
396
- punc: true,
397
- special: null
398
- }, { // 561-563 KYLLÄ
399
- rangeStart: 561,
400
- rangeEnd: 563,
401
- index: null,
402
- punc: true,
403
- special: null
404
- }, { // 565 EI
405
- rangeStart: null,
406
- rangeEnd: null,
407
- index: 565,
408
- punc: false,
409
- special: null
410
- }, { // 567 KYLLÄ osakentän $a jälkeen, EI muiden osakenttien jälkeen
411
- rangeStart: null,
412
- rangeEnd: null,
413
- index: 567,
414
- punc: true,
415
- special: {
416
- afterOnly: 'a',
417
- strict: true // $b can only be controlled term
418
- }
419
- }, { // 580-581 KYLLÄ
420
- rangeStart: 580,
421
- rangeEnd: 581,
422
- index: null,
423
- punc: true,
424
- special: null
425
- }, { // 583 EI
426
- rangeStart: null,
427
- rangeEnd: null,
428
- index: 583,
429
- punc: false,
430
- special: null
431
- }, { // 584-585 KYLLÄ
432
- rangeStart: 584,
433
- rangeEnd: 585,
434
- index: null,
435
- punc: true,
436
- special: null
437
- }, { // 586 EI
438
- rangeStart: null,
439
- rangeEnd: null,
440
- index: 586,
441
- punc: false,
442
- special: null
443
- }, { // 588 KYLLÄ
444
- rangeStart: null,
445
- rangeEnd: null,
446
- index: null,
447
- punc: true,
448
- special: null
449
- }, { // 59X EI
450
- rangeStart: 590,
451
- rangeEnd: 599,
452
- index: null,
453
- punc: false,
454
- special: null
455
- }, { // 600 KYLLÄ
456
- rangeStart: null,
457
- rangeEnd: null,
458
- index: 600,
459
- punc: true,
460
- special: null
461
- }, { // 610 KYLLÄ
462
- rangeStart: null,
463
- rangeEnd: null,
464
- index: 610,
465
- punc: true,
466
- special: null
467
- }, { // 611 KYLLÄ
468
- rangeStart: null,
469
- rangeEnd: null,
470
- index: 611,
471
- punc: true,
472
- special: null
473
- }, { // 630 KYLLÄ
474
- rangeStart: null,
475
- rangeEnd: null,
476
- index: 630,
477
- punc: true,
478
- special: null
479
- }, { // 647-651 EI suomalaisten sanastojen termeihin, muihin sanaston käytännön mukaan, yleensä KYLLÄ
480
- rangeStart: 647,
481
- rangeEnd: 651,
482
- index: null,
483
- punc: false,
484
- special: {
485
- termField: '2',
486
- finnishTerms,
487
- else: true
488
- }
489
- }, { // 653 EI
490
- rangeStart: null,
491
- rangeEnd: null,
492
- index: 653,
493
- punc: false,
494
- special: null
495
- }, { // 654-662 EI suomalaisten sanastojen termeihin, muihin sanaston käytännön mukaan, yleensä KYLLÄ
496
- rangeStart: 654,
497
- rangeEnd: 662,
498
- index: null,
499
- punc: false,
500
- special: {
501
- termField: '2',
502
- finnishTerms,
503
- else: true
504
- }
505
- }, { // 69X EI
506
- rangeStart: 690,
507
- rangeEnd: 699,
508
- index: null,
509
- punc: false,
510
- special: null
511
- }, { // 700 KYLLÄ
512
- rangeStart: null,
513
- rangeEnd: null,
514
- index: 700,
515
- punc: true,
516
- special: null
517
- }, { // 710 KYLLÄ
518
- rangeStart: null,
519
- rangeEnd: null,
520
- index: 710,
521
- punc: true,
522
- special: null
523
- }, { // 711 KYLLÄ
524
- rangeStart: null,
525
- rangeEnd: null,
526
- index: 711,
527
- punc: true,
528
- special: null
529
- }, { // 720 EI
530
- rangeStart: null,
531
- rangeEnd: null,
532
- index: 720,
533
- punc: false,
534
- special: null
535
- }, { // 730 KYLLÄ
536
- rangeStart: null,
537
- rangeEnd: null,
538
- index: 730,
539
- punc: true,
540
- special: null
541
- }, { // 740 KYLLÄ
542
- rangeStart: null,
543
- rangeEnd: null,
544
- index: 740,
545
- punc: true,
546
- special: null
547
- }, { // 751 EI
548
- rangeStart: null,
549
- rangeEnd: null,
550
- index: 751,
551
- punc: false,
552
- special: null
553
- }, { // 752 KYLLÄ
554
- rangeStart: null,
555
- rangeEnd: null,
556
- index: 752,
557
- punc: true,
558
- special: null
559
- }, { // 753 EI
560
- rangeStart: null,
561
- rangeEnd: null,
562
- index: 753,
563
- punc: false,
564
- special: null
565
- }, { // 754 KYLLÄ
566
- rangeStart: null,
567
- rangeEnd: null,
568
- index: 754,
569
- punc: true,
570
- special: null
571
- }, { // 758 EI
572
- rangeStart: null,
573
- rangeEnd: null,
574
- index: 758,
575
- punc: false,
576
- special: null
577
- }, { // 760-787 KYLLÄ osakentän $a jälkeen, EI muiden osakenttien jälkeen
578
- rangeStart: 760,
579
- rangeEnd: 787,
580
- index: null,
581
- punc: true,
582
- special: {
583
- afterOnly: 'a',
584
- strict: false
585
- }
586
- }, { // 800 KYLLÄ
587
- rangeStart: null,
588
- rangeEnd: null,
589
- index: 800,
590
- punc: true,
591
- special: null
592
- }, { // 810 KYLLÄ
593
- rangeStart: null,
594
- rangeEnd: null,
595
- index: 810,
596
- punc: true,
597
- special: null
598
- }, { // 811 KYLLÄ
599
- rangeStart: null,
600
- rangeEnd: null,
601
- index: 811,
602
- punc: true,
603
- special: null
604
- }, { // 830 KYLLÄ
605
- rangeStart: null,
606
- rangeEnd: null,
607
- index: 830,
608
- punc: true,
609
- special: null
610
- }, { // 850 EI
611
- rangeStart: null,
612
- rangeEnd: null,
613
- index: 850,
614
- punc: false,
615
- special: null
616
- }, { // 852 EI
617
- rangeStart: null,
618
- rangeEnd: null,
619
- index: 852,
620
- punc: false,
621
- special: null
622
- }, { // 856 EI
623
- rangeStart: null,
624
- rangeEnd: null,
625
- index: 856,
626
- punc: false,
627
- special: null
628
- }, { // 880 Samoin kuin vastaavat kentät
629
- rangeStart: null,
630
- rangeEnd: null,
631
- index: 880,
632
- punc: null,
633
- special: {
634
- linked: '6'
635
- }
636
- }, { // 882-887 EI
637
- rangeStart: 882,
638
- rangeEnd: 887,
639
- index: null,
640
- punc: false,
641
- special: null
642
- }, { // 9XX EI
643
- rangeStart: 900,
644
- rangeEnd: 999,
645
- index: null,
646
- punc: false,
647
- special: null
648
- }
27
+ { // 010-035 EI
28
+ rangeStart: 10,
29
+ rangeEnd: 35,
30
+ index: null,
31
+ punc: false,
32
+ special: null
33
+ }, { // 036 KYLLÄ vain osakentän $b jälkeen
34
+ rangeStart: null,
35
+ rangeEnd: null,
36
+ index: 36,
37
+ punc: true,
38
+ special: {
39
+ afterOnly: 'b',
40
+ strict: true // Punctuation only after $b, because $a is register number
41
+ }
42
+ }, { // 037-050 EI
43
+ rangeStart: 37,
44
+ rangeEnd: 50,
45
+ index: null,
46
+ punc: false,
47
+ special: null
48
+ }, { // 051 KYLLÄ
49
+ rangeStart: null,
50
+ rangeEnd: null,
51
+ index: 51,
52
+ punc: true,
53
+ special: null
54
+ }, { // 052-09X EI
55
+ rangeStart: 52,
56
+ rangeEnd: 99,
57
+ index: null,
58
+ punc: false,
59
+ special: null
60
+ }, { // 100 KYLLÄ
61
+ rangeStart: null,
62
+ rangeEnd: null,
63
+ index: 100,
64
+ punc: true,
65
+ special: null
66
+ }, { // 110 KYLLÄ
67
+ rangeStart: null,
68
+ rangeEnd: null,
69
+ index: 110,
70
+ punc: true,
71
+ special: null
72
+ }, { // 111 KYLLÄ
73
+ rangeStart: null,
74
+ rangeEnd: null,
75
+ index: 111,
76
+ punc: true,
77
+ special: null
78
+ }, { // 130 KYLLÄ
79
+ rangeStart: null,
80
+ rangeEnd: null,
81
+ index: 130,
82
+ punc: true,
83
+ special: null
84
+ }, { // 210 EI
85
+ rangeStart: null,
86
+ rangeEnd: null,
87
+ index: 210,
88
+ punc: false,
89
+ special: null
90
+ }, { // 222 EI
91
+ rangeStart: null,
92
+ rangeEnd: null,
93
+ index: 222,
94
+ punc: false,
95
+ special: null
96
+ }, { // 240 EI
97
+ rangeStart: null,
98
+ rangeEnd: null,
99
+ index: 240,
100
+ punc: false,
101
+ special: null
102
+ }, { // 242 KYLLÄ Jos viimeinen osakenttä on $y, piste on ennen sitä
103
+ rangeStart: null,
104
+ rangeEnd: null,
105
+ index: 242,
106
+ punc: true,
107
+ special: {
108
+ secondLastIfLast: 'y',
109
+ last: false
110
+ }
111
+ }, { // 243 EI
112
+ rangeStart: null,
113
+ rangeEnd: null,
114
+ index: 243,
115
+ punc: false,
116
+ special: null
117
+ }, { // 245 KYLLÄ
118
+ rangeStart: null,
119
+ rangeEnd: null,
120
+ index: 245,
121
+ punc: true,
122
+ special: null
123
+ }, { // 246-247 EI
124
+ rangeStart: 246,
125
+ rangeEnd: 247,
126
+ index: null,
127
+ punc: false,
128
+ special: null
129
+ }, { // 250 KYLLÄ
130
+ rangeStart: null,
131
+ rangeEnd: null,
132
+ index: 250,
133
+ punc: true,
134
+ special: null
135
+ }, { // 251 EI
136
+ rangeStart: null,
137
+ rangeEnd: null,
138
+ index: 251,
139
+ punc: false,
140
+ special: null
141
+ }, { // 254-256 KYLLÄ
142
+ rangeStart: 254,
143
+ rangeEnd: 256,
144
+ index: null,
145
+ punc: true,
146
+ special: null
147
+ }, { // 257
148
+ rangeStart: null,
149
+ rangeEnd: null,
150
+ index: 257,
151
+ punc: true,
152
+ special: {
153
+ noPuncIfField: '2'
154
+ }
155
+ }, { // 258 KYLLÄ
156
+ rangeStart: null,
157
+ rangeEnd: null,
158
+ index: 258,
159
+ punc: true,
160
+ special: null
161
+ }, { // 260 KYLLÄ Pääsääntö: $a : $b, $c. Tarkista eri poikkeukset ja välimerkitys MARC 21 Full -versiosta
162
+ rangeStart: null,
163
+ rangeEnd: null,
164
+ index: 260,
165
+ punc: true,
166
+ special: {
167
+ afterOnly: 'c',
168
+ strict: false // Others fields may contain abbreviation
169
+ }
170
+ }, { // 263 EI
171
+ rangeStart: null,
172
+ rangeEnd: null,
173
+ index: 263,
174
+ punc: false,
175
+ special: null
176
+ }, { // 264 KYLLÄ Tarkista poikkeukset MARC 21 -sovellusohjeesta
177
+ rangeStart: null,
178
+ rangeEnd: null,
179
+ index: 264,
180
+ punc: true,
181
+ special: {
182
+ ifBoth: true,
183
+ puncSubField: 'c',
184
+ ifInd2: ['0', '1', '2', '3'],
185
+ ifLastCharNot: ']-)?',
186
+ noPuncIfInd2: ['4']
187
+ }
188
+ }, { // 270 EI
189
+ rangeStart: null,
190
+ rangeEnd: null,
191
+ index: 270,
192
+ punc: false,
193
+ special: null
194
+ }, { // 300 EI
195
+ rangeStart: null,
196
+ rangeEnd: null,
197
+ index: 300,
198
+ punc: false,
199
+ special: null
200
+ }, { // 306 EI
201
+ rangeStart: null,
202
+ rangeEnd: null,
203
+ index: 306,
204
+ punc: false,
205
+ special: null
206
+ }, { // 307 KYLLÄ
207
+ rangeStart: null,
208
+ rangeEnd: null,
209
+ index: 307,
210
+ punc: true,
211
+ special: null
212
+ }, { // 310 EI
213
+ rangeStart: null,
214
+ rangeEnd: null,
215
+ index: 310,
216
+ punc: false,
217
+ special: null
218
+ }, { // 321 EI
219
+ rangeStart: null,
220
+ rangeEnd: null,
221
+ index: 321,
222
+ punc: false,
223
+ special: null
224
+ }, { // 335-338 EI
225
+ rangeStart: 335,
226
+ rangeEnd: 338,
227
+ index: null,
228
+ punc: false,
229
+ special: null
230
+ }, { // 340 KYLLÄ Vain joidenkin osakenttien jälkeen. Tarkista osakentät MARC 21 Full -versiosta
231
+ rangeStart: null,
232
+ rangeEnd: null,
233
+ index: 340,
234
+ punc: true,
235
+ special: {
236
+ lastOf: ['a', 'd', 'e', 'f', 'h', 'i'],
237
+ mandatory: ['b']
238
+ }
239
+ }, { // 341-342 EI
240
+ rangeStart: 341,
241
+ rangeEnd: 342,
242
+ index: null,
243
+ punc: false,
244
+ special: null
245
+ }, { // 343 KYLLÄ
246
+ rangeStart: null,
247
+ rangeEnd: null,
248
+ index: 343,
249
+ punc: true,
250
+ special: null
251
+ }, { // 344-348 EI
252
+ rangeStart: 344,
253
+ rangeEnd: 348,
254
+ index: null,
255
+ punc: false,
256
+ special: null
257
+ }, { // 351-352 KYLLÄ
258
+ rangeStart: 351,
259
+ rangeEnd: 352,
260
+ index: null,
261
+ punc: true,
262
+ special: null
263
+ }, { // 355 EI
264
+ rangeStart: null,
265
+ rangeEnd: null,
266
+ index: 355,
267
+ punc: false,
268
+ special: null
269
+ }, { // 357 EI
270
+ rangeStart: null,
271
+ rangeEnd: null,
272
+ index: 357,
273
+ punc: false,
274
+ special: null
275
+ }, { // 362 KYLLÄ
276
+ rangeStart: null,
277
+ rangeEnd: null,
278
+ index: 362,
279
+ punc: true,
280
+ special: null
281
+ }, { // 363 EI
282
+ rangeStart: null,
283
+ rangeEnd: null,
284
+ index: 363,
285
+ punc: false,
286
+ special: null
287
+ }, { // 365-366 EI
288
+ rangeStart: 365,
289
+ rangeEnd: 366,
290
+ index: null,
291
+ punc: false,
292
+ special: null
293
+ }, { // 370 EI
294
+ rangeStart: null,
295
+ rangeEnd: null,
296
+ index: 370,
297
+ punc: false,
298
+ special: null
299
+ }, { // 377 EI
300
+ rangeStart: null,
301
+ rangeEnd: null,
302
+ index: 377,
303
+ punc: false,
304
+ special: null
305
+ }, { // 380-388 EI
306
+ rangeStart: 380,
307
+ rangeEnd: 388,
308
+ index: null,
309
+ punc: false,
310
+ special: null
311
+ }, { // 490 EI
312
+ rangeStart: null,
313
+ rangeEnd: null,
314
+ index: 490,
315
+ punc: false,
316
+ special: null
317
+ }, { // 500-505 KYLLÄ
318
+ rangeStart: 500,
319
+ rangeEnd: 505,
320
+ index: null,
321
+ punc: true,
322
+ special: null
323
+ }, { // 506 KYLLÄ
324
+ index: 506,
325
+ punc: true,
326
+ special: {
327
+ noPuncIfField: 'f'
328
+ }
329
+ }, { // 507-509 KYLLÄ
330
+ rangeStart: 507,
331
+ rangeEnd: 509,
332
+ index: null,
333
+ punc: true,
334
+ special: null
335
+ }, { // 510 EI
336
+ rangeStart: null,
337
+ rangeEnd: null,
338
+ index: 510,
339
+ punc: false,
340
+ special: null
341
+ }, { // 511-518 KYLLÄ
342
+ rangeStart: 511,
343
+ rangeEnd: 518,
344
+ index: null,
345
+ punc: true,
346
+ special: null
347
+ }, { // 520 KYLLÄ Jos viimeinen osakenttä on $u, piste on ennen sitä
348
+ rangeStart: null,
349
+ rangeEnd: null,
350
+ index: 520,
351
+ punc: true,
352
+ special: {
353
+ secondLastIfLast: 'u'
354
+ // Last: false //$u is URL and hence should not be checked as URL's can have '.' at end
355
+ }
356
+ }, { // 521-526 KYLLÄ
357
+ rangeStart: 521,
358
+ rangeEnd: 526,
359
+ index: null,
360
+ punc: true,
361
+ special: null
362
+ }, { // 530 KYLLÄ
363
+ rangeStart: null,
364
+ rangeEnd: null,
365
+ index: 530,
366
+ punc: true,
367
+ special: null
368
+ }, { // 532 EI
369
+ rangeStart: null,
370
+ rangeEnd: null,
371
+ index: 532,
372
+ punc: false,
373
+ special: null
374
+ }, { // 533-534 KYLLÄ
375
+ rangeStart: 533,
376
+ rangeEnd: 534,
377
+ index: null,
378
+ punc: true,
379
+ special: null
380
+ }, { // 535-536 EI
381
+ rangeStart: 535,
382
+ rangeEnd: 536,
383
+ index: null,
384
+ punc: false,
385
+ special: null
386
+ }, { // 538 KYLLÄ Jos viimeinen osakenttä on $u, piste on ennen sitä
387
+ rangeStart: null,
388
+ rangeEnd: null,
389
+ index: 538,
390
+ punc: true,
391
+ special: {
392
+ secondLastIfLast: 'u'
393
+ // Last: false //$u is URL and hence should not be checked as URL's can have '.' at end
394
+ }
395
+ }, { // 540-541 KYLLÄ
396
+ rangeStart: 540,
397
+ rangeEnd: 541,
398
+ index: null,
399
+ punc: true,
400
+ special: {
401
+ noPuncIfField: 'u'
402
+ }
403
+ }, { // 542 EI
404
+ rangeStart: null,
405
+ rangeEnd: null,
406
+ index: 542,
407
+ punc: false,
408
+ special: null
409
+ }, { // 544-547 KYLLÄ
410
+ rangeStart: 544,
411
+ rangeEnd: 547,
412
+ index: null,
413
+ punc: true,
414
+ special: null
415
+ }, { // 550 KYLLÄ
416
+ rangeStart: null,
417
+ rangeEnd: null,
418
+ index: 550,
419
+ punc: true,
420
+ special: null
421
+ }, { // 552 KYLLÄ
422
+ rangeStart: null,
423
+ rangeEnd: null,
424
+ index: 552,
425
+ punc: true,
426
+ special: null
427
+ }, { // 555-556 KYLLÄ
428
+ rangeStart: 555,
429
+ rangeEnd: 556,
430
+ index: null,
431
+ punc: true,
432
+ special: null
433
+ }, { // 561-563 KYLLÄ
434
+ rangeStart: 561,
435
+ rangeEnd: 563,
436
+ index: null,
437
+ punc: true,
438
+ special: null
439
+ }, { // 565 EI
440
+ rangeStart: null,
441
+ rangeEnd: null,
442
+ index: 565,
443
+ punc: false,
444
+ special: null
445
+ }, { // 567 KYLLÄ osakentän $a jälkeen, EI muiden osakenttien jälkeen
446
+ rangeStart: null,
447
+ rangeEnd: null,
448
+ index: 567,
449
+ punc: true,
450
+ special: {
451
+ afterOnly: 'a',
452
+ strict: true // $b can only be controlled term
453
+ }
454
+ }, { // 580-581 KYLLÄ
455
+ rangeStart: 580,
456
+ rangeEnd: 581,
457
+ index: null,
458
+ punc: true,
459
+ special: null
460
+ }, { // 583 EI
461
+ rangeStart: null,
462
+ rangeEnd: null,
463
+ index: 583,
464
+ punc: false,
465
+ special: null
466
+ }, { // 584-585 KYLLÄ
467
+ rangeStart: 584,
468
+ rangeEnd: 585,
469
+ index: null,
470
+ punc: true,
471
+ special: null
472
+ }, { // 586 EI
473
+ rangeStart: null,
474
+ rangeEnd: null,
475
+ index: 586,
476
+ punc: false,
477
+ special: null
478
+ }, { // 588 KYLLÄ
479
+ rangeStart: null,
480
+ rangeEnd: null,
481
+ index: null,
482
+ punc: true,
483
+ special: null
484
+ }, { // 59X EI
485
+ rangeStart: 590,
486
+ rangeEnd: 599,
487
+ index: null,
488
+ punc: false,
489
+ special: null
490
+ }, { // 600 KYLLÄ
491
+ rangeStart: null,
492
+ rangeEnd: null,
493
+ index: 600,
494
+ punc: true,
495
+ special: null
496
+ }, { // 610 KYLLÄ
497
+ rangeStart: null,
498
+ rangeEnd: null,
499
+ index: 610,
500
+ punc: true,
501
+ special: null
502
+ }, { // 611 KYLLÄ
503
+ rangeStart: null,
504
+ rangeEnd: null,
505
+ index: 611,
506
+ punc: true,
507
+ special: null
508
+ }, { // 630 KYLLÄ
509
+ rangeStart: null,
510
+ rangeEnd: null,
511
+ index: 630,
512
+ punc: true,
513
+ special: null
514
+ }, { // 647-651 EI suomalaisten sanastojen termeihin, muihin sanaston käytännön mukaan, yleensä KYLLÄ
515
+ rangeStart: 647,
516
+ rangeEnd: 651,
517
+ index: null,
518
+ punc: false,
519
+ special: {
520
+ termField: '2',
521
+ finnishTerms,
522
+ else: true
523
+ }
524
+ }, { // 653 EI
525
+ rangeStart: null,
526
+ rangeEnd: null,
527
+ index: 653,
528
+ punc: false,
529
+ special: null
530
+ }, { // 654-662 EI suomalaisten sanastojen termeihin, muihin sanaston käytännön mukaan, yleensä KYLLÄ
531
+ rangeStart: 654,
532
+ rangeEnd: 662,
533
+ index: null,
534
+ punc: false,
535
+ special: {
536
+ termField: '2',
537
+ finnishTerms,
538
+ else: true
539
+ }
540
+ }, { // 69X EI
541
+ rangeStart: 690,
542
+ rangeEnd: 699,
543
+ index: null,
544
+ punc: false,
545
+ special: null
546
+ }, { // 700 KYLLÄ
547
+ rangeStart: null,
548
+ rangeEnd: null,
549
+ index: 700,
550
+ punc: true,
551
+ special: null
552
+ }, { // 710 KYLLÄ
553
+ rangeStart: null,
554
+ rangeEnd: null,
555
+ index: 710,
556
+ punc: true,
557
+ special: null
558
+ }, { // 711 KYLLÄ
559
+ rangeStart: null,
560
+ rangeEnd: null,
561
+ index: 711,
562
+ punc: true,
563
+ special: null
564
+ }, { // 720 EI
565
+ rangeStart: null,
566
+ rangeEnd: null,
567
+ index: 720,
568
+ punc: false,
569
+ special: null
570
+ }, { // 730 KYLLÄ
571
+ rangeStart: null,
572
+ rangeEnd: null,
573
+ index: 730,
574
+ punc: true,
575
+ special: null
576
+ }, { // 740 KYLLÄ
577
+ rangeStart: null,
578
+ rangeEnd: null,
579
+ index: 740,
580
+ punc: true,
581
+ special: null
582
+ }, { // 751 EI
583
+ rangeStart: null,
584
+ rangeEnd: null,
585
+ index: 751,
586
+ punc: false,
587
+ special: null
588
+ }, { // 752 KYLLÄ
589
+ rangeStart: null,
590
+ rangeEnd: null,
591
+ index: 752,
592
+ punc: true,
593
+ special: null
594
+ }, { // 753 EI
595
+ rangeStart: null,
596
+ rangeEnd: null,
597
+ index: 753,
598
+ punc: false,
599
+ special: null
600
+ }, { // 754 KYLLÄ
601
+ rangeStart: null,
602
+ rangeEnd: null,
603
+ index: 754,
604
+ punc: true,
605
+ special: null
606
+ }, { // 758 EI
607
+ rangeStart: null,
608
+ rangeEnd: null,
609
+ index: 758,
610
+ punc: false,
611
+ special: null
612
+ }, { // 760-787 KYLLÄ osakentän $a jälkeen, EI muiden osakenttien jälkeen
613
+ rangeStart: 760,
614
+ rangeEnd: 787,
615
+ index: null,
616
+ punc: true,
617
+ special: {
618
+ afterOnly: 'a',
619
+ strict: false
620
+ }
621
+ }, { // 800 KYLLÄ
622
+ rangeStart: null,
623
+ rangeEnd: null,
624
+ index: 800,
625
+ punc: true,
626
+ special: null
627
+ }, { // 810 KYLLÄ
628
+ rangeStart: null,
629
+ rangeEnd: null,
630
+ index: 810,
631
+ punc: true,
632
+ special: null
633
+ }, { // 811 KYLLÄ
634
+ rangeStart: null,
635
+ rangeEnd: null,
636
+ index: 811,
637
+ punc: true,
638
+ special: null
639
+ }, { // 830 KYLLÄ
640
+ rangeStart: null,
641
+ rangeEnd: null,
642
+ index: 830,
643
+ punc: true,
644
+ special: null
645
+ }, { // 850 EI
646
+ rangeStart: null,
647
+ rangeEnd: null,
648
+ index: 850,
649
+ punc: false,
650
+ special: null
651
+ }, { // 852 EI
652
+ rangeStart: null,
653
+ rangeEnd: null,
654
+ index: 852,
655
+ punc: false,
656
+ special: null
657
+ }, { // 856 EI
658
+ rangeStart: null,
659
+ rangeEnd: null,
660
+ index: 856,
661
+ punc: false,
662
+ special: null
663
+ }, { // 880 Samoin kuin vastaavat kentät
664
+ rangeStart: null,
665
+ rangeEnd: null,
666
+ index: 880,
667
+ punc: null,
668
+ special: {
669
+ linked: '6'
670
+ }
671
+ }, { // 882-887 EI
672
+ rangeStart: 882,
673
+ rangeEnd: 887,
674
+ index: null,
675
+ punc: false,
676
+ special: null
677
+ }, { // 9XX EI
678
+ rangeStart: 900,
679
+ rangeEnd: 999,
680
+ index: null,
681
+ punc: false,
682
+ special: null
683
+ }
649
684
  ];
650
685
 
651
686
  export {finnishTerms, validPuncMarks, confSpec};