@natlibfi/marc-record-validators-melinda 11.6.7 → 12.0.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/melinda-node-tests.yml +1 -1
- package/dist/access-rights.js +63 -91
- package/dist/access-rights.js.map +7 -1
- package/dist/access-rights.test.js +137 -0
- package/dist/access-rights.test.js.map +7 -0
- package/dist/addMissingField041.js +21 -53
- package/dist/addMissingField041.js.map +7 -1
- package/dist/addMissingField041.test.js +39 -0
- package/dist/addMissingField041.test.js.map +7 -0
- package/dist/addMissingField336.js +99 -191
- package/dist/addMissingField336.js.map +7 -1
- package/dist/addMissingField336.test.js +39 -0
- package/dist/addMissingField336.test.js.map +7 -0
- package/dist/addMissingField337.js +63 -132
- package/dist/addMissingField337.js.map +7 -1
- package/dist/addMissingField337.test.js +39 -0
- package/dist/addMissingField337.test.js.map +7 -0
- package/dist/addMissingField338.js +147 -253
- package/dist/addMissingField338.js.map +7 -1
- package/dist/addMissingField338.test.js +39 -0
- package/dist/addMissingField338.test.js.map +7 -0
- package/dist/cyrillux-usemarcon-replacement.js +119 -272
- package/dist/cyrillux-usemarcon-replacement.js.map +7 -1
- package/dist/cyrillux-usemarcon-replacement.test.js +46 -0
- package/dist/cyrillux-usemarcon-replacement.test.js.map +7 -0
- package/dist/cyrillux.js +119 -223
- package/dist/cyrillux.js.map +7 -1
- package/dist/cyrillux.test.js +39 -0
- package/dist/cyrillux.test.js.map +7 -0
- package/dist/disambiguateSeriesStatements.js +40 -81
- package/dist/disambiguateSeriesStatements.js.map +7 -1
- package/dist/disambiguateSeriesStatements.test.js +44 -0
- package/dist/disambiguateSeriesStatements.test.js.map +7 -0
- package/dist/double-commas.js +7 -14
- package/dist/double-commas.js.map +7 -1
- package/dist/double-commas.test.js +48 -0
- package/dist/double-commas.test.js.map +7 -0
- package/dist/duplicates-ind1.js +10 -31
- package/dist/duplicates-ind1.js.map +7 -1
- package/dist/duplicates-ind1.test.js +40 -0
- package/dist/duplicates-ind1.test.js.map +7 -0
- package/dist/empty-fields.js +10 -22
- package/dist/empty-fields.js.map +7 -1
- package/dist/empty-fields.test.js +129 -0
- package/dist/empty-fields.test.js.map +7 -0
- package/dist/ending-punctuation-conf.js +871 -769
- package/dist/ending-punctuation-conf.js.map +7 -1
- package/dist/ending-punctuation.js +84 -167
- package/dist/ending-punctuation.js.map +7 -1
- package/dist/ending-punctuation.test.js +2290 -0
- package/dist/ending-punctuation.test.js.map +7 -0
- package/dist/ending-whitespace.js +10 -35
- package/dist/ending-whitespace.js.map +7 -1
- package/dist/ending-whitespace.test.js +38 -0
- package/dist/ending-whitespace.test.js.map +7 -0
- package/dist/field-008-18-34-character-groups.js +40 -125
- package/dist/field-008-18-34-character-groups.js.map +7 -1
- package/dist/field-008-18-34-character-groups.test.js +45 -0
- package/dist/field-008-18-34-character-groups.test.js.map +7 -0
- package/dist/field-505-separators.js +19 -39
- package/dist/field-505-separators.js.map +7 -1
- package/dist/field-505-separators.test.js +45 -0
- package/dist/field-505-separators.test.js.map +7 -0
- package/dist/field-521-fix.js +19 -47
- package/dist/field-521-fix.js.map +7 -1
- package/dist/field-521-fix.test.js +44 -0
- package/dist/field-521-fix.test.js.map +7 -0
- package/dist/field-exclusion.js +37 -91
- package/dist/field-exclusion.js.map +7 -1
- package/dist/field-exclusion.test.js +821 -0
- package/dist/field-exclusion.test.js.map +7 -0
- package/dist/field-structure.js +52 -104
- package/dist/field-structure.js.map +7 -1
- package/dist/field-structure.test.js +587 -0
- package/dist/field-structure.test.js.map +7 -0
- package/dist/field33XUtils.js +119 -503
- package/dist/field33XUtils.js.map +7 -1
- package/dist/fields-present.js +11 -23
- package/dist/fields-present.js.map +7 -1
- package/dist/fields-present.test.js +95 -0
- package/dist/fields-present.test.js.map +7 -0
- package/dist/fix-33X.js +393 -431
- package/dist/fix-33X.js.map +7 -1
- package/dist/fix-33X.test.js +39 -0
- package/dist/fix-33X.test.js.map +7 -0
- package/dist/fix-country-codes.js +20 -50
- package/dist/fix-country-codes.js.map +7 -1
- package/dist/fix-country-codes.test.js +44 -0
- package/dist/fix-country-codes.test.js.map +7 -0
- package/dist/fix-language-codes.js +23 -53
- package/dist/fix-language-codes.js.map +7 -1
- package/dist/fix-language-codes.test.js +38 -0
- package/dist/fix-language-codes.test.js.map +7 -0
- package/dist/fixRelatorTerms.js +82 -209
- package/dist/fixRelatorTerms.js.map +7 -1
- package/dist/fixRelatorTerms.test.js +44 -0
- package/dist/fixRelatorTerms.test.js.map +7 -0
- package/dist/fixed-fields.js +21 -30
- package/dist/fixed-fields.js.map +7 -1
- package/dist/fixed-fields.test.js +87 -0
- package/dist/fixed-fields.test.js.map +7 -0
- package/dist/identical-fields.js +8 -24
- package/dist/identical-fields.js.map +7 -1
- package/dist/identical-fields.test.js +119 -0
- package/dist/identical-fields.test.js.map +7 -0
- package/dist/index.js +119 -413
- package/dist/index.js.map +7 -1
- package/dist/indicator-fixes.js +57 -95
- package/dist/indicator-fixes.js.map +7 -1
- package/dist/indicator-fixes.test.js +42 -0
- package/dist/indicator-fixes.test.js.map +7 -0
- package/dist/isbn-issn.js +66 -126
- package/dist/isbn-issn.js.map +7 -1
- package/dist/isbn-issn.test.js +398 -0
- package/dist/isbn-issn.test.js.map +7 -0
- package/dist/item-language.js +32 -65
- package/dist/item-language.js.map +7 -1
- package/dist/item-language.test.js +322 -0
- package/dist/item-language.test.js.map +7 -0
- package/dist/melindaCustomMergeFields.js +5182 -11233
- package/dist/melindaCustomMergeFields.js.map +7 -1
- package/dist/merge-fields/controlSubfields.js +75 -142
- package/dist/merge-fields/controlSubfields.js.map +7 -1
- package/dist/merge-fields/counterpartField.js +182 -379
- package/dist/merge-fields/counterpartField.js.map +7 -1
- package/dist/merge-fields/index.js +15 -49
- package/dist/merge-fields/index.js.map +7 -1
- package/dist/merge-fields/mergableIndicator.js +18 -51
- package/dist/merge-fields/mergableIndicator.js.map +7 -1
- package/dist/merge-fields/mergableTag.js +78 -30
- package/dist/merge-fields/mergableTag.js.map +7 -1
- package/dist/merge-fields/mergeConfig.js +66 -171
- package/dist/merge-fields/mergeConfig.js.map +7 -1
- package/dist/merge-fields/mergeConstraints.js +323 -1214
- package/dist/merge-fields/mergeConstraints.js.map +7 -1
- package/dist/merge-fields/mergeField.js +47 -111
- package/dist/merge-fields/mergeField.js.map +7 -1
- package/dist/merge-fields/mergeIndicator.js +64 -118
- package/dist/merge-fields/mergeIndicator.js.map +7 -1
- package/dist/merge-fields/mergeOrAddPostprocess.js +14 -38
- package/dist/merge-fields/mergeOrAddPostprocess.js.map +7 -1
- package/dist/merge-fields/mergeOrAddSubfield.js +62 -104
- package/dist/merge-fields/mergeOrAddSubfield.js.map +7 -1
- package/dist/merge-fields/mergeSubfield.js +47 -95
- package/dist/merge-fields/mergeSubfield.js.map +7 -1
- package/dist/merge-fields/removeDuplicateSubfields.js +18 -31
- package/dist/merge-fields/removeDuplicateSubfields.js.map +7 -1
- package/dist/merge-fields/worldKnowledge.js +15 -40
- package/dist/merge-fields/worldKnowledge.js.map +7 -1
- package/dist/merge-fields.test.js +44 -0
- package/dist/merge-fields.test.js.map +7 -0
- package/dist/mergeField500Lisapainokset.js +28 -57
- package/dist/mergeField500Lisapainokset.js.map +7 -1
- package/dist/mergeField500Lisapainokset.test.js +44 -0
- package/dist/mergeField500Lisapainokset.test.js.map +7 -0
- package/dist/mergeRelatorTermFields.js +33 -69
- package/dist/mergeRelatorTermFields.js.map +7 -1
- package/dist/mergeRelatorTermFields.test.js +44 -0
- package/dist/mergeRelatorTermFields.test.js.map +7 -0
- package/dist/modernize-502.js +23 -55
- package/dist/modernize-502.js.map +7 -1
- package/dist/modernize-502.test.js +38 -0
- package/dist/modernize-502.test.js.map +7 -0
- package/dist/multiple-subfield-0.js +23 -48
- package/dist/multiple-subfield-0.js.map +7 -1
- package/dist/multiple-subfield-0.test.js +44 -0
- package/dist/multiple-subfield-0.test.js.map +7 -0
- package/dist/non-breaking-space.js +11 -32
- package/dist/non-breaking-space.js.map +7 -1
- package/dist/non-breaking-space.test.js +38 -0
- package/dist/non-breaking-space.test.js.map +7 -0
- package/dist/normalize-dashes.js +18 -37
- package/dist/normalize-dashes.js.map +7 -1
- package/dist/normalize-dashes.test.js +44 -0
- package/dist/normalize-dashes.test.js.map +7 -0
- package/dist/normalize-identifiers.js +54 -140
- package/dist/normalize-identifiers.js.map +7 -1
- package/dist/normalize-identifiers.test.js +44 -0
- package/dist/normalize-identifiers.test.js.map +7 -0
- package/dist/normalize-qualifying-information.js +23 -48
- package/dist/normalize-qualifying-information.js.map +7 -1
- package/dist/normalize-qualifying-information.test.js +44 -0
- package/dist/normalize-qualifying-information.test.js.map +7 -0
- package/dist/normalize-utf8-diacritics.js +19 -105
- package/dist/normalize-utf8-diacritics.js.map +7 -1
- package/dist/normalize-utf8-diacritics.test.js +44 -0
- package/dist/normalize-utf8-diacritics.test.js.map +7 -0
- package/dist/normalizeFieldForComparison.js +67 -158
- package/dist/normalizeFieldForComparison.js.map +7 -1
- package/dist/normalizeSubfieldValueForComparison.js +37 -77
- package/dist/normalizeSubfieldValueForComparison.js.map +7 -1
- package/dist/prepublicationUtils.js +58 -111
- package/dist/prepublicationUtils.js.map +7 -1
- package/dist/punctuation/index.js +56 -72
- package/dist/punctuation/index.js.map +7 -1
- package/dist/punctuation/rules/aut.js +372 -331
- package/dist/punctuation/rules/aut.js.map +7 -1
- package/dist/punctuation/rules/bib.js +420 -373
- package/dist/punctuation/rules/bib.js.map +7 -1
- package/dist/punctuation/rules/index.js +7 -21
- package/dist/punctuation/rules/index.js.map +7 -1
- package/dist/punctuation.test.js +44 -0
- package/dist/punctuation.test.js.map +7 -0
- package/dist/punctuation2.js +251 -800
- package/dist/punctuation2.js.map +7 -1
- package/dist/punctuation2.test.js +44 -0
- package/dist/punctuation2.test.js.map +7 -0
- package/dist/reindexSubfield6OccurenceNumbers.js +61 -96
- package/dist/reindexSubfield6OccurenceNumbers.js.map +7 -1
- package/dist/reindexSubfield6OccurenceNumbers.test.js +44 -0
- package/dist/reindexSubfield6OccurenceNumbers.test.js.map +7 -0
- package/dist/removeDuplicateDataFields.js +102 -202
- package/dist/removeDuplicateDataFields.js.map +7 -1
- package/dist/removeDuplicateDataFields.test.js +44 -0
- package/dist/removeDuplicateDataFields.test.js.map +7 -0
- package/dist/removeInferiorDataFields.js +103 -227
- package/dist/removeInferiorDataFields.js.map +7 -1
- package/dist/removeInferiorDataFields.test.js +44 -0
- package/dist/removeInferiorDataFields.test.js.map +7 -0
- package/dist/resolvable-ext-references-melinda.js +25 -60
- package/dist/resolvable-ext-references-melinda.js.map +7 -1
- package/dist/resolvable-ext-references-melinda.test.js +160 -0
- package/dist/resolvable-ext-references-melinda.test.js.map +7 -0
- package/dist/resolveOrphanedSubfield6s.js +33 -64
- package/dist/resolveOrphanedSubfield6s.js.map +7 -1
- package/dist/resolveOrphanedSubfield6s.test.js +44 -0
- package/dist/resolveOrphanedSubfield6s.test.js.map +7 -0
- package/dist/sanitize-vocabulary-source-codes.js +27 -55
- package/dist/sanitize-vocabulary-source-codes.js.map +7 -1
- package/dist/sanitize-vocabulary-source-codes.test.js +45 -0
- package/dist/sanitize-vocabulary-source-codes.test.js.map +7 -0
- package/dist/sort-tags.js +13 -25
- package/dist/sort-tags.js.map +7 -1
- package/dist/sort-tags.test.js +261 -0
- package/dist/sort-tags.test.js.map +7 -0
- package/dist/sortFields.js +152 -222
- package/dist/sortFields.js.map +7 -1
- package/dist/sortFields.test.js +44 -0
- package/dist/sortFields.test.js.map +7 -0
- package/dist/sortRelatorTerms.js +30 -68
- package/dist/sortRelatorTerms.js.map +7 -1
- package/dist/sortRelatorTerms.test.js +44 -0
- package/dist/sortRelatorTerms.test.js.map +7 -0
- package/dist/sortSubfields.js +102 -255
- package/dist/sortSubfields.js.map +7 -1
- package/dist/sortSubfields.test.js +44 -0
- package/dist/sortSubfields.test.js.map +7 -0
- package/dist/stripPunctuation.js +13 -36
- package/dist/stripPunctuation.js.map +7 -1
- package/dist/stripPunctuation.test.js +44 -0
- package/dist/stripPunctuation.test.js.map +7 -0
- package/dist/subfield-exclusion.js +28 -75
- package/dist/subfield-exclusion.js.map +7 -1
- package/dist/subfield-exclusion.test.js +471 -0
- package/dist/subfield-exclusion.test.js.map +7 -0
- package/dist/subfield6Utils.js +107 -269
- package/dist/subfield6Utils.js.map +7 -1
- package/dist/subfield8Utils.js +26 -50
- package/dist/subfield8Utils.js.map +7 -1
- package/dist/subfieldValueNormalizations.js +40 -74
- package/dist/subfieldValueNormalizations.js.map +7 -1
- package/dist/subfieldValueNormalizations.test.js +45 -0
- package/dist/subfieldValueNormalizations.test.js.map +7 -0
- package/dist/sync-007-and-300.js +22 -53
- package/dist/sync-007-and-300.js.map +7 -1
- package/dist/sync-007-and-300.test.js +44 -0
- package/dist/sync-007-and-300.test.js.map +7 -0
- package/dist/translate-terms.js +67 -155
- package/dist/translate-terms.js.map +7 -1
- package/dist/translate-terms.test.js +44 -0
- package/dist/translate-terms.test.js.map +7 -0
- package/dist/typeOfDate-008.js +10 -25
- package/dist/typeOfDate-008.js.map +7 -1
- package/dist/typeOfDate-008.test.js +40 -0
- package/dist/typeOfDate-008.test.js.map +7 -0
- package/dist/unicode-decomposition.js +94 -107
- package/dist/unicode-decomposition.js.map +7 -1
- package/dist/unicode-decomposition.test.js +94 -0
- package/dist/unicode-decomposition.test.js.map +7 -0
- package/dist/update-field-540.js +30 -75
- package/dist/update-field-540.js.map +7 -1
- package/dist/update-field-540.test.js +44 -0
- package/dist/update-field-540.test.js.map +7 -0
- package/dist/urn.js +55 -128
- package/dist/urn.js.map +7 -1
- package/dist/urn.test.js +44 -0
- package/dist/urn.test.js.map +7 -0
- package/dist/utils.js +72 -126
- package/dist/utils.js.map +7 -1
- package/eslint.config.mjs +1 -2
- package/package.json +21 -93
- package/src/access-rights.js +1 -1
- package/src/{access-rights.spec.js → access-rights.test.js} +9 -10
- package/src/addMissingField041.js +1 -1
- package/src/{addMissingField336.spec.js → addMissingField041.test.js} +13 -14
- package/src/addMissingField336.js +3 -3
- package/src/{addMissingField041.spec.js → addMissingField336.test.js} +13 -14
- package/src/addMissingField337.js +2 -2
- package/src/{addMissingField337.spec.js → addMissingField337.test.js} +13 -14
- package/src/addMissingField338.js +2 -2
- package/src/{addMissingField338.spec.js → addMissingField338.test.js} +13 -14
- package/src/cyrillux-usemarcon-replacement.js +18 -18
- package/src/cyrillux-usemarcon-replacement.test.js +55 -0
- package/src/cyrillux.js +19 -12
- package/src/{cyrillux.spec.js → cyrillux.test.js} +13 -14
- package/src/disambiguateSeriesStatements.js +2 -2
- package/src/{disambiguateSeriesStatements.spec.js → disambiguateSeriesStatements.test.js} +12 -13
- package/src/double-commas.js +1 -1
- package/src/{double-commas.spec.js → double-commas.test.js} +9 -11
- package/src/duplicates-ind1.js +1 -1
- package/src/{duplicates-ind1.spec.js → duplicates-ind1.test.js} +12 -13
- package/src/{empty-fields.spec.js → empty-fields.test.js} +11 -13
- package/src/ending-punctuation.js +1 -1
- package/src/{ending-punctuation.spec.js → ending-punctuation.test.js} +172 -173
- package/src/{ending-whitespace.spec.js → ending-whitespace.test.js} +12 -13
- package/src/field-008-18-34-character-groups.js +2 -2
- package/src/{field-008-18-34-character-groups.spec.js → field-008-18-34-character-groups.test.js} +13 -13
- package/src/field-505-separators.js +3 -3
- package/src/{field-505-separators.spec.js → field-505-separators.test.js} +16 -14
- package/src/field-521-fix.js +2 -2
- package/src/{field-521-fix.spec.js → field-521-fix.test.js} +12 -13
- package/src/field-exclusion.js +1 -1
- package/src/{field-exclusion.spec.js → field-exclusion.test.js} +60 -57
- package/src/{field-structure.spec.js → field-structure.test.js} +29 -29
- package/src/{fields-present.spec.js → fields-present.test.js} +12 -15
- package/src/fix-33X.js +4 -4
- package/src/{fix-33X.spec.js → fix-33X.test.js} +13 -14
- package/src/fix-country-codes.js +1 -1
- package/src/{fix-country-codes.spec.js → fix-country-codes.test.js} +12 -13
- package/src/fix-language-codes.js +5 -5
- package/src/{fix-language-codes.spec.js → fix-language-codes.test.js} +12 -13
- package/src/fixRelatorTerms.js +5 -5
- package/src/{fixRelatorTerms.spec.js → fixRelatorTerms.test.js} +13 -13
- package/src/{fixed-fields.spec.js → fixed-fields.test.js} +11 -14
- package/src/identical-fields.js +1 -1
- package/src/{identical-fields.spec.js → identical-fields.test.js} +9 -11
- package/src/indicator-fixes.js +3 -3
- package/src/{indicator-fixes.spec.js → indicator-fixes.test.js} +9 -12
- package/src/isbn-issn.js +1 -1
- package/src/{isbn-issn.spec.js → isbn-issn.test.js} +20 -22
- package/src/{item-language.spec.js → item-language.test.js} +21 -22
- package/src/merge-fields/controlSubfields.js +1 -1
- package/src/merge-fields/counterpartField.js +8 -9
- package/src/merge-fields/index.js +1 -1
- package/src/merge-fields/mergableIndicator.js +1 -1
- package/src/merge-fields/mergeField.js +6 -6
- package/src/merge-fields/mergeIndicator.js +1 -1
- package/src/merge-fields/mergeOrAddPostprocess.js +4 -4
- package/src/merge-fields/mergeOrAddSubfield.js +2 -2
- package/src/merge-fields/mergeSubfield.js +4 -4
- package/src/merge-fields/removeDuplicateSubfields.js +2 -2
- package/src/{merge-fields.spec.js → merge-fields.test.js} +12 -13
- package/src/{mergeField500Lisapainokset.spec.js → mergeField500Lisapainokset.test.js} +12 -13
- package/src/mergeRelatorTermFields.js +5 -7
- package/src/{mergeRelatorTermFields.spec.js → mergeRelatorTermFields.test.js} +12 -13
- package/src/modernize-502.js +1 -1
- package/src/{modernize-502.spec.js → modernize-502.test.js} +12 -13
- package/src/multiple-subfield-0.js +3 -3
- package/src/{multiple-subfield-0.spec.js → multiple-subfield-0.test.js} +13 -13
- package/src/{non-breaking-space.spec.js → non-breaking-space.test.js} +12 -13
- package/src/normalize-dashes.js +2 -2
- package/src/{normalize-dashes.spec.js → normalize-dashes.test.js} +12 -13
- package/src/normalize-identifiers.js +1 -1
- package/src/{normalize-identifiers.spec.js → normalize-identifiers.test.js} +12 -13
- package/src/normalize-qualifying-information.js +2 -2
- package/src/{normalize-qualifying-information.spec.js → normalize-qualifying-information.test.js} +12 -13
- package/src/normalize-utf8-diacritics.js +2 -2
- package/src/{normalize-utf8-diacritics.spec.js → normalize-utf8-diacritics.test.js} +13 -13
- package/src/normalizeFieldForComparison.js +6 -6
- package/src/normalizeSubfieldValueForComparison.js +1 -1
- package/src/prepublicationUtils.js +4 -4
- package/src/punctuation/index.js +1 -1
- package/src/punctuation/rules/index.js +2 -2
- package/src/{punctuation.spec.js → punctuation.test.js} +12 -13
- package/src/punctuation2.js +4 -4
- package/src/{punctuation2.spec.js → punctuation2.test.js} +12 -13
- package/src/reindexSubfield6OccurenceNumbers.js +5 -7
- package/src/{reindexSubfield6OccurenceNumbers.spec.js → reindexSubfield6OccurenceNumbers.test.js} +12 -13
- package/src/removeDuplicateDataFields.js +11 -19
- package/src/{removeDuplicateDataFields.spec.js → removeDuplicateDataFields.test.js} +12 -13
- package/src/removeInferiorDataFields.js +11 -11
- package/src/{removeInferiorDataFields.spec.js → removeInferiorDataFields.test.js} +13 -13
- package/src/resolvable-ext-references-melinda.js +1 -1
- package/src/{resolvable-ext-references-melinda.spec.js → resolvable-ext-references-melinda.test.js} +42 -27
- package/src/resolveOrphanedSubfield6s.js +5 -5
- package/src/{resolveOrphanedSubfield6s.spec.js → resolveOrphanedSubfield6s.test.js} +13 -13
- package/src/sanitize-vocabulary-source-codes.js +4 -4
- package/src/{sanitize-vocabulary-source-codes.spec.js → sanitize-vocabulary-source-codes.test.js} +16 -14
- package/src/{sort-tags.spec.js → sort-tags.test.js} +9 -11
- package/src/sortFields.js +4 -4
- package/src/{sortFields.spec.js → sortFields.test.js} +12 -13
- package/src/sortRelatorTerms.js +3 -3
- package/src/{sortRelatorTerms.spec.js → sortRelatorTerms.test.js} +13 -13
- package/src/sortSubfields.js +1 -1
- package/src/{sortSubfields.spec.js → sortSubfields.test.js} +13 -13
- package/src/stripPunctuation.js +3 -3
- package/src/{stripPunctuation.spec.js → stripPunctuation.test.js} +13 -13
- package/src/subfield-exclusion.js +1 -1
- package/src/{subfield-exclusion.spec.js → subfield-exclusion.test.js} +45 -36
- package/src/subfield6Utils.js +6 -10
- package/src/subfield8Utils.js +4 -4
- package/src/subfieldValueNormalizations.js +3 -3
- package/src/{subfieldValueNormalizations.spec.js → subfieldValueNormalizations.test.js} +18 -14
- package/src/sync-007-and-300.js +2 -2
- package/src/{sync-007-and-300.spec.js → sync-007-and-300.test.js} +13 -13
- package/src/translate-terms.js +3 -3
- package/src/{translate-terms.spec.js → translate-terms.test.js} +13 -13
- package/src/{typeOfDate-008.spec.js → typeOfDate-008.test.js} +12 -13
- package/src/{unicode-decomposition.spec.js → unicode-decomposition.test.js} +10 -16
- package/src/update-field-540.js +2 -2
- package/src/{update-field-540.spec.js → update-field-540.test.js} +13 -10
- package/src/urn.js +2 -2
- package/src/{urn.spec.js → urn.test.js} +12 -13
- package/src/utils.js +3 -3
- package/test-fixtures/field-505-separators/03/expectedResult.json +3 -1
- package/test-fixtures/field-505-separators/03/record.json +3 -0
- package/test-fixtures/normalize-subfield-value/01/metadata.json +4 -1
- package/test-fixtures/normalize-subfield-value/01/record.json +3 -0
- package/test-fixtures/normalize-subfield-value/02/expectedResult.json +3 -1
- package/test-fixtures/normalize-subfield-value/02/metadata.json +2 -1
- package/test-fixtures/normalize-subfield-value/02/record.json +3 -0
- package/test-fixtures/sanitize-vocabulary-source-codes/f03/expectedResult.json +3 -1
- package/test-fixtures/sanitize-vocabulary-source-codes/f04/expectedResult.json +3 -1
- package/test-fixtures/sanitize-vocabulary-source-codes/v04/metadata.json +1 -4
- package/test-fixtures/sanitize-vocabulary-source-codes/v04/record.json +1 -1
- package/dist/access-rights.spec.js +0 -195
- package/dist/access-rights.spec.js.map +0 -1
- package/dist/addMissingField041.spec.js +0 -45
- package/dist/addMissingField041.spec.js.map +0 -1
- package/dist/addMissingField336.spec.js +0 -45
- package/dist/addMissingField336.spec.js.map +0 -1
- package/dist/addMissingField337.spec.js +0 -43
- package/dist/addMissingField337.spec.js.map +0 -1
- package/dist/addMissingField338.spec.js +0 -45
- package/dist/addMissingField338.spec.js.map +0 -1
- package/dist/cyrillux-usemarcon-replacement.spec.js +0 -45
- package/dist/cyrillux-usemarcon-replacement.spec.js.map +0 -1
- package/dist/cyrillux.spec.js +0 -46
- package/dist/cyrillux.spec.js.map +0 -1
- package/dist/disambiguateSeriesStatements.spec.js +0 -51
- package/dist/disambiguateSeriesStatements.spec.js.map +0 -1
- package/dist/double-commas.spec.js +0 -73
- package/dist/double-commas.spec.js.map +0 -1
- package/dist/duplicates-ind1.spec.js +0 -45
- package/dist/duplicates-ind1.spec.js.map +0 -1
- package/dist/empty-fields.spec.js +0 -118
- package/dist/empty-fields.spec.js.map +0 -1
- package/dist/ending-punctuation.spec.js +0 -2654
- package/dist/ending-punctuation.spec.js.map +0 -1
- package/dist/ending-whitespace.spec.js +0 -42
- package/dist/ending-whitespace.spec.js.map +0 -1
- package/dist/field-008-18-34-character-groups.spec.js +0 -51
- package/dist/field-008-18-34-character-groups.spec.js.map +0 -1
- package/dist/field-505-separators.spec.js +0 -51
- package/dist/field-505-separators.spec.js.map +0 -1
- package/dist/field-521-fix.spec.js +0 -51
- package/dist/field-521-fix.spec.js.map +0 -1
- package/dist/field-exclusion.spec.js +0 -1054
- package/dist/field-exclusion.spec.js.map +0 -1
- package/dist/field-structure.spec.js +0 -535
- package/dist/field-structure.spec.js.map +0 -1
- package/dist/fields-present.spec.js +0 -121
- package/dist/fields-present.spec.js.map +0 -1
- package/dist/fix-33X.spec.js +0 -45
- package/dist/fix-33X.spec.js.map +0 -1
- package/dist/fix-country-codes.spec.js +0 -51
- package/dist/fix-country-codes.spec.js.map +0 -1
- package/dist/fix-language-codes.spec.js +0 -44
- package/dist/fix-language-codes.spec.js.map +0 -1
- package/dist/fixRelatorTerms.spec.js +0 -51
- package/dist/fixRelatorTerms.spec.js.map +0 -1
- package/dist/fixed-fields.spec.js +0 -140
- package/dist/fixed-fields.spec.js.map +0 -1
- package/dist/identical-fields.spec.js +0 -99
- package/dist/identical-fields.spec.js.map +0 -1
- package/dist/indicator-fixes.spec.js +0 -51
- package/dist/indicator-fixes.spec.js.map +0 -1
- package/dist/isbn-issn.spec.js +0 -595
- package/dist/isbn-issn.spec.js.map +0 -1
- package/dist/item-language.spec.js +0 -306
- package/dist/item-language.spec.js.map +0 -1
- package/dist/melindaCustomMergeFields.json +0 -5120
- package/dist/merge-fields.spec.js +0 -51
- package/dist/merge-fields.spec.js.map +0 -1
- package/dist/mergeField500Lisapainokset.spec.js +0 -51
- package/dist/mergeField500Lisapainokset.spec.js.map +0 -1
- package/dist/mergeRelatorTermFields.spec.js +0 -51
- package/dist/mergeRelatorTermFields.spec.js.map +0 -1
- package/dist/modernize-502.spec.js +0 -49
- package/dist/modernize-502.spec.js.map +0 -1
- package/dist/multiple-subfield-0.spec.js +0 -51
- package/dist/multiple-subfield-0.spec.js.map +0 -1
- package/dist/non-breaking-space.spec.js +0 -42
- package/dist/non-breaking-space.spec.js.map +0 -1
- package/dist/normalize-dashes.spec.js +0 -51
- package/dist/normalize-dashes.spec.js.map +0 -1
- package/dist/normalize-identifiers.spec.js +0 -51
- package/dist/normalize-identifiers.spec.js.map +0 -1
- package/dist/normalize-qualifying-information.spec.js +0 -51
- package/dist/normalize-qualifying-information.spec.js.map +0 -1
- package/dist/normalize-utf8-diacritics.spec.js +0 -51
- package/dist/normalize-utf8-diacritics.spec.js.map +0 -1
- package/dist/punctuation.spec.js +0 -51
- package/dist/punctuation.spec.js.map +0 -1
- package/dist/punctuation2.spec.js +0 -51
- package/dist/punctuation2.spec.js.map +0 -1
- package/dist/reindexSubfield6OccurenceNumbers.spec.js +0 -51
- package/dist/reindexSubfield6OccurenceNumbers.spec.js.map +0 -1
- package/dist/removeDuplicateDataFields.spec.js +0 -51
- package/dist/removeDuplicateDataFields.spec.js.map +0 -1
- package/dist/removeInferiorDataFields.spec.js +0 -51
- package/dist/removeInferiorDataFields.spec.js.map +0 -1
- package/dist/resolvable-ext-references-melinda.spec.js +0 -166
- package/dist/resolvable-ext-references-melinda.spec.js.map +0 -1
- package/dist/resolveOrphanedSubfield6s.spec.js +0 -51
- package/dist/resolveOrphanedSubfield6s.spec.js.map +0 -1
- package/dist/sanitize-vocabulary-source-codes.spec.js +0 -51
- package/dist/sanitize-vocabulary-source-codes.spec.js.map +0 -1
- package/dist/sort-tags.spec.js +0 -207
- package/dist/sort-tags.spec.js.map +0 -1
- package/dist/sortFields.spec.js +0 -51
- package/dist/sortFields.spec.js.map +0 -1
- package/dist/sortRelatorTerms.spec.js +0 -51
- package/dist/sortRelatorTerms.spec.js.map +0 -1
- package/dist/sortSubfields.spec.js +0 -52
- package/dist/sortSubfields.spec.js.map +0 -1
- package/dist/stripPunctuation.spec.js +0 -51
- package/dist/stripPunctuation.spec.js.map +0 -1
- package/dist/subfield-exclusion.spec.js +0 -523
- package/dist/subfield-exclusion.spec.js.map +0 -1
- package/dist/subfieldValueNormalizations.spec.js +0 -51
- package/dist/subfieldValueNormalizations.spec.js.map +0 -1
- package/dist/sync-007-and-300.spec.js +0 -51
- package/dist/sync-007-and-300.spec.js.map +0 -1
- package/dist/translate-terms.spec.js +0 -51
- package/dist/translate-terms.spec.js.map +0 -1
- package/dist/typeOfDate-008.spec.js +0 -47
- package/dist/typeOfDate-008.spec.js.map +0 -1
- package/dist/unicode-decomposition.spec.js +0 -91
- package/dist/unicode-decomposition.spec.js.map +0 -1
- package/dist/update-field-540.spec.js +0 -51
- package/dist/update-field-540.spec.js.map +0 -1
- package/dist/urn.spec.js +0 -52
- package/dist/urn.spec.js.map +0 -1
- package/src/cyrillux-usemarcon-replacement.spec.js +0 -47
|
@@ -1,432 +1,279 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
var _fixRelatorTerms = _interopRequireDefault(require("./fixRelatorTerms"));
|
|
20
|
-
var _indicatorFixes = _interopRequireDefault(require("./indicator-fixes"));
|
|
21
|
-
var _punctuation = _interopRequireDefault(require("./punctuation2"));
|
|
22
|
-
var _normalizeQualifyingInformation = _interopRequireDefault(require("./normalize-qualifying-information"));
|
|
23
|
-
var _sortSubfields = require("./sortSubfields");
|
|
24
|
-
var _utils = require("./utils");
|
|
25
|
-
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
26
|
-
/*
|
|
27
|
-
* cyrillux-usemarcon-replacement.js -- implement and improve https://github.com/NatLibFi/USEMARCON-Cyrillux/tree/master
|
|
28
|
-
*
|
|
29
|
-
* Author(s): Nicholas Volk <nicholas.volk@helsinki.fi>
|
|
30
|
-
*
|
|
31
|
-
*/
|
|
32
|
-
|
|
33
|
-
// import createDebugLogger from 'debug';
|
|
34
|
-
|
|
35
|
-
// const debug = createDebugLogger('@natlibfi/marc-record-validators-melinda/punctuation2');
|
|
36
|
-
|
|
37
|
-
const description = 'Replacement for Cyrillux usemarcon rules';
|
|
38
|
-
|
|
39
|
-
// Extended original list with 541, 561, 562, 583, 584
|
|
40
|
-
// 017, 044... et al are LL additions from 2019 (via USEMARCON-RDA)
|
|
41
|
-
const dropTags = ['001', '003', '010', '012', '014', '015', '016', '017', '019', '025', '029', '032', '035', '036', '037', '038', '042', '044', '049', '051', '061', '068', '071', '074', '079', '090', '091', '092', '094', '095', '096', '097', '099', '249', '261', '262', '350', '400', '411', '541', '561', '562', '574', '575', '577', '578', '583', '584', '589', '590', '591', '592', '593', '594', '595', '596', '597', '598', '599', '653', '698', '741', '742', '744', '751', '761', '790', '841', '842', '843', '844', '845', '850', '852', '853', '854', '855', '858', '859', '863', '864', '865', '866', '867', '868', '876', '877', '878', '882', '886', '887', '888', '890', '899'];
|
|
42
|
-
function _default() {
|
|
1
|
+
import clone from "clone";
|
|
2
|
+
import { MarcRecord } from "@natlibfi/marc-record";
|
|
3
|
+
import { default as fix33X } from "./fix-33X.js";
|
|
4
|
+
import { default as add041 } from "./addMissingField041.js";
|
|
5
|
+
import { default as add336 } from "./addMissingField336.js";
|
|
6
|
+
import { default as add337 } from "./addMissingField337.js";
|
|
7
|
+
import { default as add338 } from "./addMissingField338.js";
|
|
8
|
+
import { default as fixCountryCodes } from "./fix-country-codes.js";
|
|
9
|
+
import { default as fixLanguageCodes } from "./fix-language-codes.js";
|
|
10
|
+
import { default as fixRelatorTerms } from "./fixRelatorTerms.js";
|
|
11
|
+
import { default as fixIndicators } from "./indicator-fixes.js";
|
|
12
|
+
import { default as fixPunctuation } from "./punctuation2.js";
|
|
13
|
+
import { default as fixQualifyingInformation } from "./normalize-qualifying-information.js";
|
|
14
|
+
import { sortAdjacentSubfields } from "./sortSubfields.js";
|
|
15
|
+
import { fieldHasSubfield, nvdebug, recordRemoveValuelessSubfields, recordToString, removeSubfield } from "./utils.js";
|
|
16
|
+
const description = "Replacement for Cyrillux usemarcon rules";
|
|
17
|
+
const dropTags = ["001", "003", "010", "012", "014", "015", "016", "017", "019", "025", "029", "032", "035", "036", "037", "038", "042", "044", "049", "051", "061", "068", "071", "074", "079", "090", "091", "092", "094", "095", "096", "097", "099", "249", "261", "262", "350", "400", "411", "541", "561", "562", "574", "575", "577", "578", "583", "584", "589", "590", "591", "592", "593", "594", "595", "596", "597", "598", "599", "653", "698", "741", "742", "744", "751", "761", "790", "841", "842", "843", "844", "845", "850", "852", "853", "854", "855", "858", "859", "863", "864", "865", "866", "867", "868", "876", "877", "878", "882", "886", "887", "888", "890", "899"];
|
|
18
|
+
export default function() {
|
|
43
19
|
return {
|
|
44
20
|
description,
|
|
45
21
|
fix,
|
|
46
22
|
validate
|
|
47
23
|
};
|
|
48
24
|
function fix(record) {
|
|
49
|
-
|
|
25
|
+
nvdebug(`${description}: fix`);
|
|
50
26
|
realFix(record);
|
|
51
|
-
const res = {
|
|
52
|
-
message: [],
|
|
53
|
-
fix: [],
|
|
54
|
-
valid: true
|
|
55
|
-
};
|
|
27
|
+
const res = { message: [], fix: [], valid: true };
|
|
56
28
|
return res;
|
|
57
29
|
}
|
|
58
30
|
function realFixNonAleph(record) {
|
|
59
31
|
if (isAlephRecord(record)) {
|
|
60
32
|
return;
|
|
61
33
|
}
|
|
62
|
-
|
|
63
|
-
// Update LDR/17 to '4'
|
|
64
34
|
record.leader = `${record.leader.substring(0, 17)}4${record.leader.substring(18, 24)}`;
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
record.fields = record.fields.filter(f =>
|
|
68
|
-
(0, _utils.removeSubfield)(record, '020', 'c');
|
|
69
|
-
|
|
70
|
-
// Remove 084 fields that don't have $2 ykl (based on USEMARCON-RDA/bw_rda_kyril.rul code by LL 2019)
|
|
71
|
-
record.fields = record.fields.filter(f => f.tag !== '084' || f.subfields.some(sf => sf.code === '2' && sf.value === 'ykl'));
|
|
35
|
+
record.fields = record.fields.filter((f) => !dropTags.includes(f.tag));
|
|
36
|
+
removeSubfield(record, "020", "c");
|
|
37
|
+
record.fields = record.fields.filter((f) => f.tag !== "084" || f.subfields.some((sf) => sf.code === "2" && sf.value === "ykl"));
|
|
72
38
|
fieldSpecificStuff(record.fields);
|
|
73
39
|
function fieldSpecificStuff(fields) {
|
|
74
40
|
const [field, ...rest] = fields;
|
|
75
|
-
if (field ===
|
|
41
|
+
if (field === void 0) {
|
|
76
42
|
return;
|
|
77
43
|
}
|
|
78
44
|
removeOwnershipSubfield5(field);
|
|
79
|
-
removeFromOldCatalog(field);
|
|
45
|
+
removeFromOldCatalog(field);
|
|
80
46
|
translateFieldToFinnish(field);
|
|
81
47
|
return fieldSpecificStuff(rest);
|
|
82
48
|
}
|
|
83
|
-
fixField040(record);
|
|
84
|
-
|
|
49
|
+
fixField040(record);
|
|
85
50
|
fieldSpecificStuff2(record.fields);
|
|
86
51
|
function fieldSpecificStuff2(fields) {
|
|
87
52
|
const [field, ...rest] = fields;
|
|
88
|
-
if (field ===
|
|
53
|
+
if (field === void 0) {
|
|
89
54
|
return;
|
|
90
55
|
}
|
|
91
|
-
removeSubfieldH(field);
|
|
92
|
-
|
|
56
|
+
removeSubfieldH(field);
|
|
93
57
|
field100eKirjoittaja(field);
|
|
94
58
|
function field100eKirjoittaja(f) {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
f
|
|
98
|
-
code: 'e',
|
|
99
|
-
value: 'kirjoittaja.'
|
|
100
|
-
}, ...f.subfields];
|
|
101
|
-
(0, _sortSubfields.sortAdjacentSubfields)(f);
|
|
102
|
-
// Punctuation will be done later on...
|
|
59
|
+
if (f.tag === "100" && !fieldHasSubfield(f, "e") && record.isBK()) {
|
|
60
|
+
f.subfields = [{ code: "e", value: "kirjoittaja." }, ...f.subfields];
|
|
61
|
+
sortAdjacentSubfields(f);
|
|
103
62
|
return;
|
|
104
63
|
}
|
|
105
64
|
}
|
|
106
65
|
field260To264s(field, record);
|
|
107
|
-
|
|
108
|
-
// NB! 300 (before or after 33X creation?)
|
|
109
66
|
field410To490And810(field, record);
|
|
110
67
|
field440To490And830(field, record);
|
|
111
|
-
// handle505(field); // not applying them usemarcon-cyrillux rules for field 505 as I can't understand their motivation.
|
|
112
68
|
return fieldSpecificStuff2(rest);
|
|
113
69
|
}
|
|
114
70
|
}
|
|
115
71
|
function realFixAll1(record) {
|
|
116
|
-
fixLeader(record);
|
|
117
|
-
|
|
118
|
-
(
|
|
119
|
-
(
|
|
120
|
-
|
|
121
|
-
(
|
|
122
|
-
|
|
123
|
-
// Field 028: use $b$a, not $a$b:
|
|
124
|
-
const f028 = record.fields.filter(f => f.tag === '028');
|
|
125
|
-
f028.forEach(f => (0, _sortSubfields.sortAdjacentSubfields)(f)); // eslint-disable-line array-callback-return
|
|
126
|
-
|
|
127
|
-
(0, _addMissingField.default)().fix(record);
|
|
72
|
+
fixLeader(record);
|
|
73
|
+
fixCountryCodes().fix(record);
|
|
74
|
+
fixLanguageCodes().fix(record);
|
|
75
|
+
recordRemoveValuelessSubfields(record);
|
|
76
|
+
const f028 = record.fields.filter((f) => f.tag === "028");
|
|
77
|
+
f028.forEach((f) => sortAdjacentSubfields(f));
|
|
78
|
+
add041().fix(record);
|
|
128
79
|
}
|
|
129
80
|
function realFixAll2(record) {
|
|
130
|
-
(
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
(
|
|
134
|
-
(
|
|
135
|
-
(
|
|
136
|
-
(
|
|
137
|
-
(
|
|
138
|
-
|
|
139
|
-
// The fixer below implements Cyrillux rules such as 245I1 | 245I1 | If (Exists(@100) Or Exists(@110) Or Exists(@111) Or Exists(@130)) Then '1' Else '0' and plenty of other good stuff:
|
|
140
|
-
(0, _indicatorFixes.default)().fix(record);
|
|
141
|
-
(0, _punctuation.default)().fix(record);
|
|
81
|
+
fixQualifyingInformation().fix(record);
|
|
82
|
+
fixRelatorTerms().fix(record);
|
|
83
|
+
fix33X().fix(record);
|
|
84
|
+
add336().fix(record);
|
|
85
|
+
add337().fix(record);
|
|
86
|
+
add338().fix(record);
|
|
87
|
+
fixIndicators().fix(record);
|
|
88
|
+
fixPunctuation().fix(record);
|
|
142
89
|
}
|
|
143
90
|
function realFix(record) {
|
|
144
91
|
realFixAll1(record);
|
|
145
92
|
realFixNonAleph(record);
|
|
146
93
|
realFixAll2(record);
|
|
147
|
-
const res = {
|
|
148
|
-
message: [],
|
|
149
|
-
fix: [],
|
|
150
|
-
valid: true
|
|
151
|
-
};
|
|
94
|
+
const res = { message: [], fix: [], valid: true };
|
|
152
95
|
return res;
|
|
153
96
|
}
|
|
154
|
-
|
|
155
|
-
// Validation is currently done in subparts
|
|
156
97
|
function validate(record) {
|
|
157
|
-
|
|
158
|
-
const originalString =
|
|
159
|
-
const clonedRecord = new
|
|
160
|
-
subfieldValues: false
|
|
161
|
-
});
|
|
98
|
+
nvdebug(`${description}: validate`);
|
|
99
|
+
const originalString = recordToString(record);
|
|
100
|
+
const clonedRecord = new MarcRecord(record, { subfieldValues: false });
|
|
162
101
|
realFix(clonedRecord);
|
|
163
|
-
const modifiedString =
|
|
102
|
+
const modifiedString = recordToString(clonedRecord);
|
|
164
103
|
if (originalString === modifiedString) {
|
|
165
|
-
return {
|
|
166
|
-
message: [],
|
|
167
|
-
valid: true
|
|
168
|
-
};
|
|
104
|
+
return { message: [], valid: true };
|
|
169
105
|
}
|
|
170
|
-
return {
|
|
171
|
-
message: ['Record changed'],
|
|
172
|
-
valid: false
|
|
173
|
-
}; // Less than descriptive but will do...
|
|
106
|
+
return { message: ["Record changed"], valid: false };
|
|
174
107
|
}
|
|
175
108
|
}
|
|
176
109
|
function fixField040(record) {
|
|
177
|
-
const f040 = record.get(
|
|
178
|
-
const subfieldsBE = [
|
|
179
|
-
code:
|
|
180
|
-
value:
|
|
181
|
-
|
|
182
|
-
code: 'e',
|
|
183
|
-
value: 'rda'
|
|
184
|
-
}];
|
|
185
|
-
|
|
186
|
-
// Add 040 if there isn't one:
|
|
110
|
+
const f040 = record.get("040");
|
|
111
|
+
const subfieldsBE = [
|
|
112
|
+
{ code: "b", value: "mul" },
|
|
113
|
+
{ code: "e", value: "rda" }
|
|
114
|
+
];
|
|
187
115
|
if (f040.length === 0) {
|
|
188
|
-
const data = {
|
|
189
|
-
tag: '040',
|
|
190
|
-
ind1: ' ',
|
|
191
|
-
ind2: ' ',
|
|
192
|
-
subfields: subfieldsBE
|
|
193
|
-
};
|
|
116
|
+
const data = { tag: "040", ind1: " ", ind2: " ", subfields: subfieldsBE };
|
|
194
117
|
record.insertField(data);
|
|
195
118
|
return;
|
|
196
119
|
}
|
|
197
|
-
f040.forEach(f => fixField040Subfields(f));
|
|
198
|
-
|
|
120
|
+
f040.forEach((f) => fixField040Subfields(f));
|
|
199
121
|
function fixField040Subfields(field) {
|
|
200
|
-
field.subfields = field.subfields.filter(sf => ![
|
|
122
|
+
field.subfields = field.subfields.filter((sf) => !["b", "e"].includes(sf.code));
|
|
201
123
|
field.subfields.push(subfieldsBE[0]);
|
|
202
124
|
field.subfields.push(subfieldsBE[1]);
|
|
203
|
-
|
|
125
|
+
sortAdjacentSubfields(field);
|
|
204
126
|
}
|
|
205
127
|
}
|
|
206
|
-
function removeFromOldCatalog(field) {
|
|
128
|
+
export function removeFromOldCatalog(field) {
|
|
207
129
|
if (!field.tag.match(/^(?:240|65[0135]|[1678](?:00|10|11|30))$/u)) {
|
|
208
130
|
return;
|
|
209
131
|
}
|
|
210
|
-
|
|
211
|
-
field.subfields?.forEach(sf => removeFromOldCatalogFromSubfield(sf)); // eslint-disable-line array-callback-return
|
|
212
|
-
|
|
132
|
+
field.subfields?.forEach((sf) => removeFromOldCatalogFromSubfield(sf));
|
|
213
133
|
function removeFromOldCatalogFromSubfield(subfield) {
|
|
214
|
-
if (!subfield.value.includes(
|
|
134
|
+
if (!subfield.value.includes("[from old catalog]")) {
|
|
215
135
|
return;
|
|
216
136
|
}
|
|
217
|
-
subfield.value = subfield.value.replace(/ *\[from old catalog\]/gui,
|
|
137
|
+
subfield.value = subfield.value.replace(/ *\[from old catalog\]/gui, "");
|
|
218
138
|
}
|
|
219
139
|
}
|
|
220
140
|
function removeSubfieldH(field) {
|
|
221
|
-
if (!field.subfields || ![
|
|
141
|
+
if (!field.subfields || !["245", "246", "247", "740", "760", "762", "765", "767", "770", "772", "773", "774", "775", "776", "777", "780", "785", "786", "787", "788"].includes(field.tag)) {
|
|
222
142
|
return;
|
|
223
143
|
}
|
|
224
|
-
const filteredFields = field.subfields.filter(sf => sf.code !==
|
|
144
|
+
const filteredFields = field.subfields.filter((sf) => sf.code !== "h");
|
|
225
145
|
if (filteredFields.length > 0) {
|
|
226
146
|
field.subfields = filteredFields;
|
|
227
147
|
return;
|
|
228
148
|
}
|
|
229
149
|
}
|
|
230
|
-
function removeOwnershipSubfield5(field) {
|
|
150
|
+
export function removeOwnershipSubfield5(field) {
|
|
231
151
|
if (!field.subfields || field.subfields.length === 0) {
|
|
232
152
|
return;
|
|
233
153
|
}
|
|
234
|
-
const remainingSubfields = field.subfields.filter(sf => sf.code !==
|
|
154
|
+
const remainingSubfields = field.subfields.filter((sf) => sf.code !== "5");
|
|
235
155
|
if (remainingSubfields.length === 0) {
|
|
236
|
-
// sanity check/robustness
|
|
237
156
|
return;
|
|
238
157
|
}
|
|
239
158
|
field.subfields = remainingSubfields;
|
|
240
159
|
}
|
|
241
|
-
function fixLeader(record) {
|
|
160
|
+
export function fixLeader(record) {
|
|
242
161
|
record.leader = `${record.leader.substring(0, 9)}a22${record.leader.substring(12, 18)}i${record.leader.substring(19, 20)}4500`;
|
|
243
162
|
}
|
|
244
163
|
function field410To490And810(field, record) {
|
|
245
|
-
|
|
246
|
-
if (field.tag !== '410') {
|
|
164
|
+
if (field.tag !== "410") {
|
|
247
165
|
return;
|
|
248
166
|
}
|
|
249
|
-
const field810 = (
|
|
250
|
-
field.tag =
|
|
251
|
-
field.ind1 =
|
|
252
|
-
field.ind2 =
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
field810.tag = '810';
|
|
257
|
-
field810.ind2 = ' ';
|
|
258
|
-
// 810: Fix punctuation elsewhere. (Note that the current support is lagging...)
|
|
167
|
+
const field810 = clone(field);
|
|
168
|
+
field.tag = "490";
|
|
169
|
+
field.ind1 = "1";
|
|
170
|
+
field.ind2 = " ";
|
|
171
|
+
sortAdjacentSubfields(field);
|
|
172
|
+
field810.tag = "810";
|
|
173
|
+
field810.ind2 = " ";
|
|
259
174
|
record.insertField(field810);
|
|
260
175
|
}
|
|
261
176
|
function field440To490And830(field, record) {
|
|
262
|
-
|
|
263
|
-
if (field.tag !== '440') {
|
|
177
|
+
if (field.tag !== "440") {
|
|
264
178
|
return;
|
|
265
179
|
}
|
|
266
|
-
const field830 = (
|
|
267
|
-
field.tag =
|
|
268
|
-
field.ind1 =
|
|
269
|
-
field.ind2 =
|
|
270
|
-
|
|
271
|
-
field830.tag = '830';
|
|
272
|
-
// 830: Fix punctuation elsewhere. (Note that the current support is lagging...)
|
|
180
|
+
const field830 = clone(field);
|
|
181
|
+
field.tag = "490";
|
|
182
|
+
field.ind1 = "1";
|
|
183
|
+
field.ind2 = " ";
|
|
184
|
+
field830.tag = "830";
|
|
273
185
|
record.insertField(field830);
|
|
274
186
|
}
|
|
275
187
|
function isAlephRecord(record) {
|
|
276
|
-
|
|
277
|
-
return record.fields.some(field => ['CAT', 'LKR', 'LOW', 'SID'].includes(field.tag));
|
|
188
|
+
return record.fields.some((field) => ["CAT", "LKR", "LOW", "SID"].includes(field.tag));
|
|
278
189
|
}
|
|
279
190
|
function field260To264s(field, record) {
|
|
280
|
-
|
|
281
|
-
// As per my quick reading of usemarcon-cyrillux
|
|
282
|
-
if (field.tag !== '260') {
|
|
191
|
+
if (field.tag !== "260") {
|
|
283
192
|
return;
|
|
284
193
|
}
|
|
285
194
|
createCopyright264Field(field);
|
|
286
|
-
field.tag =
|
|
287
|
-
field.ind1 =
|
|
288
|
-
field.ind2 =
|
|
289
|
-
|
|
290
|
-
// NB! Usemarcon does not handle 260$e$f$g => 264$a$b$c, so I'm not botherin with it either... (However, we could check our merge reducer code...)
|
|
291
|
-
|
|
195
|
+
field.tag = "264";
|
|
196
|
+
field.ind1 = " ";
|
|
197
|
+
field.ind2 = "1";
|
|
292
198
|
function getCopyrightYear(string) {
|
|
293
199
|
if (string.match(/^(?:\[?[Ccp]|[^0-9]*(?:cop|©|℗))[^0-9]*(?:1[789][0-9][0-9]|20[0-2][0-9])[^0-9]*$/u)) {
|
|
294
|
-
return string.replace(/[^0-9]/ug,
|
|
200
|
+
return string.replace(/[^0-9]/ug, "");
|
|
295
201
|
}
|
|
296
202
|
return false;
|
|
297
203
|
}
|
|
298
|
-
field.subfields?.forEach(sf => field260To264Normalization(sf));
|
|
299
|
-
|
|
204
|
+
field.subfields?.forEach((sf) => field260To264Normalization(sf));
|
|
300
205
|
function field260To264Normalization(subfield) {
|
|
301
206
|
subfield.value = field260To264Normalization2(subfield);
|
|
302
207
|
}
|
|
303
|
-
function createCopyright264Value(
|
|
304
|
-
|
|
305
|
-
const [c] = field.subfields.filter(sf => sf.code === 'c');
|
|
208
|
+
function createCopyright264Value(field2) {
|
|
209
|
+
const [c] = field2.subfields.filter((sf) => sf.code === "c");
|
|
306
210
|
if (!c) {
|
|
307
|
-
return
|
|
211
|
+
return void 0;
|
|
308
212
|
}
|
|
309
213
|
const copyrightYear = getCopyrightYear(c.value);
|
|
310
214
|
if (!copyrightYear) {
|
|
311
|
-
return
|
|
215
|
+
return void 0;
|
|
312
216
|
}
|
|
313
|
-
const copType = c.value.match(/(?:^\[?p|℗)/u) ?
|
|
314
|
-
const returnValue = c.value.includes(
|
|
315
|
-
// Moidy the original value:
|
|
217
|
+
const copType = c.value.match(/(?:^\[?p|℗)/u) ? "\u2117" : "\xA9";
|
|
218
|
+
const returnValue = c.value.includes("[") ? `[${copType}${copyrightYear}]` : `${copType}${copyrightYear}`;
|
|
316
219
|
c.value = `[${copyrightYear}]`;
|
|
317
220
|
return returnValue;
|
|
318
221
|
}
|
|
319
|
-
function createCopyright264Field(
|
|
320
|
-
const c = createCopyright264Value(
|
|
222
|
+
function createCopyright264Field(field2) {
|
|
223
|
+
const c = createCopyright264Value(field2);
|
|
321
224
|
if (!c) {
|
|
322
|
-
return
|
|
225
|
+
return void 0;
|
|
323
226
|
}
|
|
324
|
-
const data = {
|
|
325
|
-
'tag': '264',
|
|
326
|
-
'ind1': ' ',
|
|
327
|
-
'ind2': '4',
|
|
328
|
-
'subfields': [{
|
|
329
|
-
'code': 'c',
|
|
330
|
-
'value': c
|
|
331
|
-
}]
|
|
332
|
-
};
|
|
227
|
+
const data = { "tag": "264", "ind1": " ", "ind2": "4", "subfields": [{ "code": "c", "value": c }] };
|
|
333
228
|
record.insertField(data);
|
|
334
229
|
}
|
|
335
230
|
function field260To264Normalization2(subfield) {
|
|
336
|
-
if (subfield.code ===
|
|
337
|
-
return subfield.value.replace(/\b[Ss]\. ?l\./u,
|
|
231
|
+
if (subfield.code === "a") {
|
|
232
|
+
return subfield.value.replace(/\b[Ss]\. ?l\./u, "Kustannuspaikka tuntematon");
|
|
338
233
|
}
|
|
339
|
-
if (subfield.code ===
|
|
340
|
-
return subfield.value.replace(/\b[Ss]\. ?n\./u,
|
|
234
|
+
if (subfield.code === "b") {
|
|
235
|
+
return subfield.value.replace(/\b[Ss]\. ?n\./u, "kustantaja tuntematon");
|
|
341
236
|
}
|
|
342
|
-
if (subfield.code ===
|
|
237
|
+
if (subfield.code === "c") {
|
|
343
238
|
const year = getCopyrightYear(subfield.value);
|
|
344
239
|
if (year) {
|
|
345
|
-
const c = subfield.value.match(/(?:^p|℗)/u) ?
|
|
346
|
-
if (subfield.value.includes(
|
|
240
|
+
const c = subfield.value.match(/(?:^p|℗)/u) ? "p" : "c";
|
|
241
|
+
if (subfield.value.includes("[")) {
|
|
347
242
|
return `${c}[${year}]`;
|
|
348
243
|
}
|
|
349
244
|
return `${c}${year}`;
|
|
350
245
|
}
|
|
351
|
-
return subfield.value.replace(/\b[Ss]\. ?a\./u,
|
|
246
|
+
return subfield.value.replace(/\b[Ss]\. ?a\./u, "julkaisuaika tuntematon");
|
|
352
247
|
}
|
|
353
248
|
return subfield.value;
|
|
354
249
|
}
|
|
355
250
|
}
|
|
356
|
-
|
|
357
|
-
/*
|
|
358
|
-
function handle505(field) {
|
|
359
|
-
if (field.tag !== '505') {
|
|
360
|
-
return;
|
|
361
|
-
}
|
|
362
|
-
// Don't know how/why usemarcon-cyrillux is so sure about ind1...
|
|
363
|
-
field.ind1 = '0';
|
|
364
|
-
// usemarcon-cyrillux drops irrelevant subfields, so we do the same. However, we have included some control subfields in the kept side:
|
|
365
|
-
const keptSubfields = field.subfields.filter(sf => ['a', 'g', 'r', 't', 'u', '6', '8', '9'].includes(sf.code));
|
|
366
|
-
|
|
367
|
-
if (keptSubfields.some(sf => ['a', 'g', 'r', 't', 'u'].includes(sf.code))) {
|
|
368
|
-
field.subfields = keptSubfields;
|
|
369
|
-
return;
|
|
370
|
-
}
|
|
371
|
-
}
|
|
372
|
-
*/
|
|
373
|
-
|
|
374
251
|
function translateFieldToFinnish(field) {
|
|
375
|
-
if (![
|
|
252
|
+
if (!["020", "300"].includes(field.tag)) {
|
|
376
253
|
return;
|
|
377
254
|
}
|
|
378
|
-
field.subfields?.forEach(sf => translateSubfieldToFinnish(sf));
|
|
379
|
-
|
|
255
|
+
field.subfields?.forEach((sf) => translateSubfieldToFinnish(sf));
|
|
380
256
|
function translateSubfieldToFinnish(subfield) {
|
|
381
|
-
if (field.tag ===
|
|
257
|
+
if (field.tag === "020" && ["a", "q", "z"].includes(subfield.code)) {
|
|
382
258
|
subfield.value = finnishTranslationsAndMappings(expandFinnishAbbreviations(expandSwedishAbbreviations(expandEnglishAbbreviations(subfield.value))));
|
|
383
259
|
return;
|
|
384
260
|
}
|
|
385
|
-
if (field.tag ===
|
|
261
|
+
if (field.tag === "300") {
|
|
386
262
|
subfield.value = finnishTranslationsAndMappings(expandFinnishAbbreviations(expandSwedishAbbreviations(expandEnglishAbbreviations(subfield.value))));
|
|
387
263
|
return;
|
|
388
264
|
}
|
|
389
265
|
}
|
|
390
266
|
}
|
|
391
267
|
function expandEnglishAbbreviations(value) {
|
|
392
|
-
return value.replace(/\bbk\.\b/gui,
|
|
393
|
-
// expand to MTS-compliant form
|
|
394
|
-
replace(/\b1 hr\./gui, '1 hour').replace(/\bhr\./gui, 'hours').replace(/\bill\./gui, 'illustrated').
|
|
395
|
-
// or illustrations (or Swedish "illustrerad" or...)
|
|
396
|
-
replace(/\billus\./gui, 'illustrated').
|
|
397
|
-
// or illustrations
|
|
398
|
-
replace(/incl\./gui, 'includes').replace(/fold\.? maps/gui, 'folded maps').
|
|
399
|
-
// replace(/\bmin\./gu, 'minutes').
|
|
400
|
-
// replace(/\bmin\b/gu, 'minutes').
|
|
401
|
-
replace(/\bp\.\b/gui, 'pages').replace(/\bp\b/gu, 'pages').replace(/\bpbk\.\b/gui, 'paperback').replace(/\bpbk\b/gui, 'paperback').
|
|
402
|
-
// expand to MTS-compliant form
|
|
403
|
-
replace(/\bpdf\b/gui, 'PDF').replace(/\bports\./gui, 'portraits').replace('sd., col.', 'sound, color').replace(/ *\((?:chiefly col\.|chiefly color|some col[s.])\)/gui, '').replace(/\b1 hr\./gui, '1 hour');
|
|
268
|
+
return value.replace(/\bbk\.\b/gui, "book").replace(/chiefly col\./ui, "chiefly color").replace(/col\. ill\./ui, "color illustrations").replace(/diagrs\./ui, "diagrams").replace(/\bhbk\.\b/gui, "hardcover").replace(/\bhbk\b/gui, "hardcover").replace(/\b1 hr\./gui, "1 hour").replace(/\bhr\./gui, "hours").replace(/\bill\./gui, "illustrated").replace(/\billus\./gui, "illustrated").replace(/incl\./gui, "includes").replace(/fold\.? maps/gui, "folded maps").replace(/\bp\.\b/gui, "pages").replace(/\bp\b/gu, "pages").replace(/\bpbk\.\b/gui, "paperback").replace(/\bpbk\b/gui, "paperback").replace(/\bpdf\b/gui, "PDF").replace(/\bports\./gui, "portraits").replace("sd., col.", "sound, color").replace(/ *\((?:chiefly col\.|chiefly color|some col[s.])\)/gui, "").replace(/\b1 hr\./gui, "1 hour");
|
|
404
269
|
}
|
|
405
270
|
function expandFinnishAbbreviations(value) {
|
|
406
|
-
return value.replace(/\bcn\. /gu,
|
|
407
|
-
// replace(/\bmin\./gu, 'minuuttia').
|
|
408
|
-
// replace(/\bmin\b/gu, 'minuuttia').
|
|
409
|
-
replace(/\bnid\./gu, 'nidottu').replace(/\bnid\b/gui, 'nidottu').replace(/\bsid\./gu, 'sidottu').replace(/\bsid\b/gui, 'sidottu').replace(/\bverkkojulk\.\b/gu, 'verkkojulkaisu').replace(/\bverkkojulk\b/gu, 'verkkojulkaisu').replace(/^\(([^)]+)\)$/u, '$1');
|
|
410
|
-
// <- removal of brackets above could use a better location
|
|
271
|
+
return value.replace(/\bcn\. /gu, "noin ").replace(/\bnid\./gu, "nidottu").replace(/\bnid\b/gui, "nidottu").replace(/\bsid\./gu, "sidottu").replace(/\bsid\b/gui, "sidottu").replace(/\bverkkojulk\.\b/gu, "verkkojulkaisu").replace(/\bverkkojulk\b/gu, "verkkojulkaisu").replace(/^\(([^)]+)\)$/u, "$1");
|
|
411
272
|
}
|
|
412
273
|
function expandSwedishAbbreviations(value) {
|
|
413
|
-
return value.replace(/\bca\. /gu,
|
|
414
|
-
// replace(/\bmin\./gu, 'minuter').
|
|
415
|
-
// replace(/\bmin\b/gu, 'minuter');
|
|
274
|
+
return value.replace(/\bca\. /gu, "circa ").replace(/\bhft\./gui, "h\xE4ftad").replace(/\bhft\b/gui, "h\xE4ftad");
|
|
416
275
|
}
|
|
417
276
|
function finnishTranslationsAndMappings(value) {
|
|
418
|
-
return value.replace(
|
|
419
|
-
// https://github.com/NatLibFi/USEMARCON-BOOKWHERE-RDA/blob/master/bw_rda_kyril.rul#L365
|
|
420
|
-
replace(/(\b1\]?) с\./gui, '$1 sivu').replace(/(\d\]?) с\./gui, '$1 sivua').replace(/(\d) см/gui, '$1 cm').replace(/\bcharts\b/gui, 'kaavioita').replace('chiefly color illustrations', 'pääosin värikuvitettu').replace('chiefly', 'pääosin').replace(/\bcirca\b/gui, 'noin').replace(/coil[- ]?bound/gui, 'kierreselkä').replace('color illustrations', 'värikuvitus').replace(/comb[- ]?bound/gui, 'kierreselkä').replace(/\bdigital\b/gui, 'digitaalinen').replace(/\belectronic book\b/gui, 'verkkoaineisto').replace('(flera nummersviter)', '(useita numerointijaksoja)').replace(/\bfolded sheet\b/gui, 'taitelehti').replace(/\bfärgillustratione[nr]\b/gui, 'värikuvitus').replace(/\bhard(?:back|cover)\b/gui, 'kovakantinen').replace(/\bhours\b/gui, 'tuntia').replace(/\bi flera nummersviter/gui, 'useina numerointijaksoina').replace('illustrated', 'kuvitettu').replace(/illustrations?\b/gui, 'kuvitettu').
|
|
421
|
-
// Based on usemacron-bookwhere (NB! usemarcon-cyrillux had kuvitus/kuvitettu)
|
|
422
|
-
replace(/\binbunden\b/gui, 'kovakantinen').
|
|
423
|
-
// swe
|
|
424
|
-
replace(/\binsert\b/gui, 'liite').replace(/\binserts\b/gui, 'liitteitä').replace(/\bin various pagings/gui, 'useina numerointijaksoina').replace('leaves of plates', 'kuvalehteä').replace(/\bljudskiva\b/gui, 'äänilevy').replace(/\bljudskivor\b/gui, 'äänilevyä').replace(/\bmap\b/gui, 'kartta').replace(/\bmaps\b/gui, 'karttoja').
|
|
425
|
-
// or karttaa?
|
|
426
|
-
replace('minutes', 'minuuttia').replace('mjuka pärmar', 'pehmeäkantinen').replace('online resource', 'verkkoaineisto').replace('onlineresurs', 'verkkoaineisto').replace('onumrerade', 'numeroimatonta').replace('pages of plates', 'kuvalehteä').replace(/\bpages\b/gui, 'sivua').replace(/\bpaperback\b/gui, 'pehmeäkantinen').
|
|
427
|
-
// MTS alt
|
|
428
|
-
replace(/\bSeiten\b/gu, 'sivua').replace(/\bsoftcover\b/gui, 'pehmeäkantinen').
|
|
429
|
-
// MTS pref
|
|
430
|
-
replace('sound, color', 'äänellinen, värillinen').replace('sound cassettes', 'äänikasettia').replace('sound cassette', 'äänikasetti').replace('sound discs', 'äänilevyä').replace(/sound disc\b/gui, 'äänilevy').replace(/(?:spiral[- ]?bound|spiralrygg)/gui, 'kierreselkä').replace('svartvit', 'mustavalkoinen').replace('unnumbered', 'numeroimatonta').replace('(various pagings)', '(useita numerointijaksoja)').replace(/\bverkkojulkaisu\b/gui, 'verkkoaineisto').replace('videodiscs', 'videolevyä').replace('videodisc', 'videolevy').replace(/\b1 hour\b/gui, '1 tunti');
|
|
277
|
+
return value.replace("analog", "analoginen").replace("approximately", "noin").replace("audio discs", "\xE4\xE4nilevy\xE4").replace("black and white", "mustavalkoinen").replace(/\bbilaga\b/gui, "liite").replace(/\bbilagor\b/gui, "liitett\xE4").replace(/(\b1\]?) с\./gui, "$1 sivu").replace(/(\d\]?) с\./gui, "$1 sivua").replace(/(\d) см/gui, "$1 cm").replace(/\bcharts\b/gui, "kaavioita").replace("chiefly color illustrations", "p\xE4\xE4osin v\xE4rikuvitettu").replace("chiefly", "p\xE4\xE4osin").replace(/\bcirca\b/gui, "noin").replace(/coil[- ]?bound/gui, "kierreselk\xE4").replace("color illustrations", "v\xE4rikuvitus").replace(/comb[- ]?bound/gui, "kierreselk\xE4").replace(/\bdigital\b/gui, "digitaalinen").replace(/\belectronic book\b/gui, "verkkoaineisto").replace("(flera nummersviter)", "(useita numerointijaksoja)").replace(/\bfolded sheet\b/gui, "taitelehti").replace(/\bfärgillustratione[nr]\b/gui, "v\xE4rikuvitus").replace(/\bhard(?:back|cover)\b/gui, "kovakantinen").replace(/\bhours\b/gui, "tuntia").replace(/\bi flera nummersviter/gui, "useina numerointijaksoina").replace("illustrated", "kuvitettu").replace(/illustrations?\b/gui, "kuvitettu").replace(/\binbunden\b/gui, "kovakantinen").replace(/\binsert\b/gui, "liite").replace(/\binserts\b/gui, "liitteit\xE4").replace(/\bin various pagings/gui, "useina numerointijaksoina").replace("leaves of plates", "kuvalehte\xE4").replace(/\bljudskiva\b/gui, "\xE4\xE4nilevy").replace(/\bljudskivor\b/gui, "\xE4\xE4nilevy\xE4").replace(/\bmap\b/gui, "kartta").replace(/\bmaps\b/gui, "karttoja").replace("minutes", "minuuttia").replace("mjuka p\xE4rmar", "pehme\xE4kantinen").replace("online resource", "verkkoaineisto").replace("onlineresurs", "verkkoaineisto").replace("onumrerade", "numeroimatonta").replace("pages of plates", "kuvalehte\xE4").replace(/\bpages\b/gui, "sivua").replace(/\bpaperback\b/gui, "pehme\xE4kantinen").replace(/\bSeiten\b/gu, "sivua").replace(/\bsoftcover\b/gui, "pehme\xE4kantinen").replace("sound, color", "\xE4\xE4nellinen, v\xE4rillinen").replace("sound cassettes", "\xE4\xE4nikasettia").replace("sound cassette", "\xE4\xE4nikasetti").replace("sound discs", "\xE4\xE4nilevy\xE4").replace(/sound disc\b/gui, "\xE4\xE4nilevy").replace(/(?:spiral[- ]?bound|spiralrygg)/gui, "kierreselk\xE4").replace("svartvit", "mustavalkoinen").replace("unnumbered", "numeroimatonta").replace("(various pagings)", "(useita numerointijaksoja)").replace(/\bverkkojulkaisu\b/gui, "verkkoaineisto").replace("videodiscs", "videolevy\xE4").replace("videodisc", "videolevy").replace(/\b1 hour\b/gui, "1 tunti");
|
|
431
278
|
}
|
|
432
|
-
//# sourceMappingURL=cyrillux-usemarcon-replacement.js.map
|
|
279
|
+
//# sourceMappingURL=cyrillux-usemarcon-replacement.js.map
|