chaffjs 0.33.0 → 0.35.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api.d.ts +7 -1
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js.map +1 -1
- package/dist/capitals-passage.d.ts +3 -0
- package/dist/capitals-passage.d.ts.map +1 -0
- package/dist/capitals-passage.js +26 -0
- package/dist/capitals-passage.js.map +1 -0
- package/dist/cli-text.d.ts.map +1 -1
- package/dist/cli-text.js +4 -2
- package/dist/cli-text.js.map +1 -1
- package/dist/coined-hyphen-name.d.ts +13 -0
- package/dist/coined-hyphen-name.d.ts.map +1 -0
- package/dist/coined-hyphen-name.js +21 -0
- package/dist/coined-hyphen-name.js.map +1 -0
- package/dist/commands/grade.d.ts.map +1 -1
- package/dist/commands/grade.js +66 -21
- package/dist/commands/grade.js.map +1 -1
- package/dist/company-kana-spelling.d.ts +6 -1
- package/dist/company-kana-spelling.d.ts.map +1 -1
- package/dist/company-kana-spelling.js +19 -2
- package/dist/company-kana-spelling.js.map +1 -1
- package/dist/company-name-ending.d.ts +7 -0
- package/dist/company-name-ending.d.ts.map +1 -0
- package/dist/company-name-ending.js +44 -0
- package/dist/company-name-ending.js.map +1 -0
- package/dist/company-names.d.ts +17 -4
- package/dist/company-names.d.ts.map +1 -1
- package/dist/company-names.js +49 -17
- package/dist/company-names.js.map +1 -1
- package/dist/custom/no-rewrite.d.ts +3 -0
- package/dist/custom/no-rewrite.d.ts.map +1 -0
- package/dist/custom/no-rewrite.js +3 -0
- package/dist/custom/no-rewrite.js.map +1 -0
- package/dist/custom/parse.d.ts.map +1 -1
- package/dist/custom/parse.js +14 -2
- package/dist/custom/parse.js.map +1 -1
- package/dist/detectors/acronym-context.d.ts +1 -1
- package/dist/detectors/acronym-context.d.ts.map +1 -1
- package/dist/detectors/acronym-context.js +4 -4
- package/dist/detectors/acronym-context.js.map +1 -1
- package/dist/detectors/acronym-definition.d.ts +13 -0
- package/dist/detectors/acronym-definition.d.ts.map +1 -0
- package/dist/detectors/acronym-definition.js +90 -0
- package/dist/detectors/acronym-definition.js.map +1 -0
- package/dist/detectors/acronym-lone.d.ts +13 -0
- package/dist/detectors/acronym-lone.d.ts.map +1 -0
- package/dist/detectors/acronym-lone.js +22 -0
- package/dist/detectors/acronym-lone.js.map +1 -0
- package/dist/detectors/acronym-name.d.ts +55 -0
- package/dist/detectors/acronym-name.d.ts.map +1 -0
- package/dist/detectors/acronym-name.js +75 -0
- package/dist/detectors/acronym-name.js.map +1 -0
- package/dist/detectors/age-words.d.ts +5 -0
- package/dist/detectors/age-words.d.ts.map +1 -0
- package/dist/detectors/age-words.js +8 -0
- package/dist/detectors/age-words.js.map +1 -0
- package/dist/detectors/annual-pay-mismatch.d.ts.map +1 -1
- package/dist/detectors/annual-pay-mismatch.js +2 -12
- package/dist/detectors/annual-pay-mismatch.js.map +1 -1
- package/dist/detectors/blank-structure.d.ts.map +1 -1
- package/dist/detectors/blank-structure.js +4 -3
- package/dist/detectors/blank-structure.js.map +1 -1
- package/dist/detectors/capitalised-term.d.ts +14 -2
- package/dist/detectors/capitalised-term.d.ts.map +1 -1
- package/dist/detectors/capitalised-term.js +115 -4
- package/dist/detectors/capitalised-term.js.map +1 -1
- package/dist/detectors/caps-caption.d.ts +11 -0
- package/dist/detectors/caps-caption.d.ts.map +1 -0
- package/dist/detectors/caps-caption.js +51 -0
- package/dist/detectors/caps-caption.js.map +1 -0
- package/dist/detectors/char-shape.d.ts.map +1 -1
- package/dist/detectors/char-shape.js +47 -18
- package/dist/detectors/char-shape.js.map +1 -1
- package/dist/detectors/clause-shape.d.ts +1 -1
- package/dist/detectors/clause-shape.d.ts.map +1 -1
- package/dist/detectors/clause-shape.js +9 -4
- package/dist/detectors/clause-shape.js.map +1 -1
- package/dist/detectors/closing-balance-mismatch.d.ts.map +1 -1
- package/dist/detectors/closing-balance-mismatch.js +1 -0
- package/dist/detectors/closing-balance-mismatch.js.map +1 -1
- package/dist/detectors/code-fences.d.ts +5 -0
- package/dist/detectors/code-fences.d.ts.map +1 -1
- package/dist/detectors/code-fences.js +9 -0
- package/dist/detectors/code-fences.js.map +1 -1
- package/dist/detectors/concrete-evidence.d.ts +13 -1
- package/dist/detectors/concrete-evidence.d.ts.map +1 -1
- package/dist/detectors/concrete-evidence.js +59 -0
- package/dist/detectors/concrete-evidence.js.map +1 -1
- package/dist/detectors/condition-toki.d.ts +16 -0
- package/dist/detectors/condition-toki.d.ts.map +1 -0
- package/dist/detectors/condition-toki.js +42 -0
- package/dist/detectors/condition-toki.js.map +1 -0
- package/dist/detectors/conjugated-entry.d.ts +17 -0
- package/dist/detectors/conjugated-entry.d.ts.map +1 -0
- package/dist/detectors/conjugated-entry.js +50 -0
- package/dist/detectors/conjugated-entry.js.map +1 -0
- package/dist/detectors/content-morphemes.d.ts +2 -0
- package/dist/detectors/content-morphemes.d.ts.map +1 -1
- package/dist/detectors/content-morphemes.js +1 -1
- package/dist/detectors/content-morphemes.js.map +1 -1
- package/dist/detectors/contraction-minority.d.ts +11 -0
- package/dist/detectors/contraction-minority.d.ts.map +1 -0
- package/dist/detectors/contraction-minority.js +10 -0
- package/dist/detectors/contraction-minority.js.map +1 -0
- package/dist/detectors/counter-edge.d.ts +5 -0
- package/dist/detectors/counter-edge.d.ts.map +1 -1
- package/dist/detectors/counter-edge.js +23 -0
- package/dist/detectors/counter-edge.js.map +1 -1
- package/dist/detectors/cross-facts.d.ts.map +1 -1
- package/dist/detectors/cross-facts.js +2 -1
- package/dist/detectors/cross-facts.js.map +1 -1
- package/dist/detectors/custom.d.ts.map +1 -1
- package/dist/detectors/custom.js +8 -2
- package/dist/detectors/custom.js.map +1 -1
- package/dist/detectors/date-any-year.d.ts +6 -3
- package/dist/detectors/date-any-year.d.ts.map +1 -1
- package/dist/detectors/date-any-year.js +47 -10
- package/dist/detectors/date-any-year.js.map +1 -1
- package/dist/detectors/date-heading-year.d.ts +18 -0
- package/dist/detectors/date-heading-year.d.ts.map +1 -0
- package/dist/detectors/date-heading-year.js +38 -0
- package/dist/detectors/date-heading-year.js.map +1 -0
- package/dist/detectors/date-year.d.ts +12 -2
- package/dist/detectors/date-year.d.ts.map +1 -1
- package/dist/detectors/date-year.js +31 -6
- package/dist/detectors/date-year.js.map +1 -1
- package/dist/detectors/defined-term-form.d.ts.map +1 -1
- package/dist/detectors/defined-term-form.js +26 -5
- package/dist/detectors/defined-term-form.js.map +1 -1
- package/dist/detectors/document-shape.d.ts.map +1 -1
- package/dist/detectors/document-shape.js +6 -0
- package/dist/detectors/document-shape.js.map +1 -1
- package/dist/detectors/due-date.d.ts.map +1 -1
- package/dist/detectors/due-date.js +18 -2
- package/dist/detectors/due-date.js.map +1 -1
- package/dist/detectors/en-shape.d.ts.map +1 -1
- package/dist/detectors/en-shape.js +5 -1
- package/dist/detectors/en-shape.js.map +1 -1
- package/dist/detectors/fact-consistency.d.ts.map +1 -1
- package/dist/detectors/fact-consistency.js +15 -15
- package/dist/detectors/fact-consistency.js.map +1 -1
- package/dist/detectors/form-line.d.ts +9 -0
- package/dist/detectors/form-line.d.ts.map +1 -0
- package/dist/detectors/form-line.js +36 -0
- package/dist/detectors/form-line.js.map +1 -0
- package/dist/detectors/formula-amount.d.ts.map +1 -1
- package/dist/detectors/formula-amount.js +2 -12
- package/dist/detectors/formula-amount.js.map +1 -1
- package/dist/detectors/gram-passages.d.ts +11 -0
- package/dist/detectors/gram-passages.d.ts.map +1 -0
- package/dist/detectors/gram-passages.js +26 -0
- package/dist/detectors/gram-passages.js.map +1 -0
- package/dist/detectors/heading-claim.d.ts +14 -0
- package/dist/detectors/heading-claim.d.ts.map +1 -0
- package/dist/detectors/heading-claim.js +49 -0
- package/dist/detectors/heading-claim.js.map +1 -0
- package/dist/detectors/heading-echo.d.ts.map +1 -1
- package/dist/detectors/heading-echo.js +29 -1
- package/dist/detectors/heading-echo.js.map +1 -1
- package/dist/detectors/heading-end-mark.d.ts +8 -3
- package/dist/detectors/heading-end-mark.d.ts.map +1 -1
- package/dist/detectors/heading-end-mark.js +18 -8
- package/dist/detectors/heading-end-mark.js.map +1 -1
- package/dist/detectors/heading-names.d.ts +7 -0
- package/dist/detectors/heading-names.d.ts.map +1 -0
- package/dist/detectors/heading-names.js +24 -0
- package/dist/detectors/heading-names.js.map +1 -0
- package/dist/detectors/heading-numbering.d.ts.map +1 -1
- package/dist/detectors/heading-numbering.js +7 -2
- package/dist/detectors/heading-numbering.js.map +1 -1
- package/dist/detectors/inch-mark.d.ts +10 -0
- package/dist/detectors/inch-mark.d.ts.map +1 -0
- package/dist/detectors/inch-mark.js +48 -0
- package/dist/detectors/inch-mark.js.map +1 -0
- package/dist/detectors/installment-total-mismatch.d.ts.map +1 -1
- package/dist/detectors/installment-total-mismatch.js +2 -12
- package/dist/detectors/installment-total-mismatch.js.map +1 -1
- package/dist/detectors/lexicon.d.ts +0 -1
- package/dist/detectors/lexicon.d.ts.map +1 -1
- package/dist/detectors/lexicon.js +29 -23
- package/dist/detectors/lexicon.js.map +1 -1
- package/dist/detectors/list-parallel.d.ts +5 -2
- package/dist/detectors/list-parallel.d.ts.map +1 -1
- package/dist/detectors/list-parallel.js +45 -7
- package/dist/detectors/list-parallel.js.map +1 -1
- package/dist/detectors/mark-shape.d.ts +6 -3
- package/dist/detectors/mark-shape.d.ts.map +1 -1
- package/dist/detectors/mark-shape.js +12 -6
- package/dist/detectors/mark-shape.js.map +1 -1
- package/dist/detectors/name-variant-apart.d.ts +27 -0
- package/dist/detectors/name-variant-apart.d.ts.map +1 -0
- package/dist/detectors/name-variant-apart.js +51 -0
- package/dist/detectors/name-variant-apart.js.map +1 -0
- package/dist/detectors/name-variant.d.ts.map +1 -1
- package/dist/detectors/name-variant.js +51 -17
- package/dist/detectors/name-variant.js.map +1 -1
- package/dist/detectors/number-unit.d.ts +10 -0
- package/dist/detectors/number-unit.d.ts.map +1 -1
- package/dist/detectors/number-unit.js +28 -8
- package/dist/detectors/number-unit.js.map +1 -1
- package/dist/detectors/numeral-word.d.ts +15 -0
- package/dist/detectors/numeral-word.d.ts.map +1 -0
- package/dist/detectors/numeral-word.js +26 -0
- package/dist/detectors/numeral-word.js.map +1 -0
- package/dist/detectors/organisation-run.d.ts +14 -0
- package/dist/detectors/organisation-run.d.ts.map +1 -0
- package/dist/detectors/organisation-run.js +73 -0
- package/dist/detectors/organisation-run.js.map +1 -0
- package/dist/detectors/orthographic-variant.d.ts.map +1 -1
- package/dist/detectors/orthographic-variant.js +13 -5
- package/dist/detectors/orthographic-variant.js.map +1 -1
- package/dist/detectors/orthography.d.ts.map +1 -1
- package/dist/detectors/orthography.js +16 -7
- package/dist/detectors/orthography.js.map +1 -1
- package/dist/detectors/outline-label.d.ts +14 -0
- package/dist/detectors/outline-label.d.ts.map +1 -0
- package/dist/detectors/outline-label.js +32 -0
- package/dist/detectors/outline-label.js.map +1 -0
- package/dist/detectors/page-marker.d.ts +6 -0
- package/dist/detectors/page-marker.d.ts.map +1 -0
- package/dist/detectors/page-marker.js +19 -0
- package/dist/detectors/page-marker.js.map +1 -0
- package/dist/detectors/parallel-definition.d.ts +16 -0
- package/dist/detectors/parallel-definition.d.ts.map +1 -0
- package/dist/detectors/parallel-definition.js +51 -0
- package/dist/detectors/parallel-definition.js.map +1 -0
- package/dist/detectors/per-unit-words.d.ts +7 -0
- package/dist/detectors/per-unit-words.d.ts.map +1 -0
- package/dist/detectors/per-unit-words.js +17 -0
- package/dist/detectors/per-unit-words.js.map +1 -0
- package/dist/detectors/period-multiple-mismatch.d.ts.map +1 -1
- package/dist/detectors/period-multiple-mismatch.js +2 -12
- package/dist/detectors/period-multiple-mismatch.js.map +1 -1
- package/dist/detectors/reference-number-variant.d.ts.map +1 -1
- package/dist/detectors/reference-number-variant.js +21 -3
- package/dist/detectors/reference-number-variant.js.map +1 -1
- package/dist/detectors/reference-text.d.ts.map +1 -1
- package/dist/detectors/reference-text.js +1 -0
- package/dist/detectors/reference-text.js.map +1 -1
- package/dist/detectors/registry/condition-toki.d.ts +3 -0
- package/dist/detectors/registry/condition-toki.d.ts.map +1 -0
- package/dist/detectors/registry/condition-toki.js +3 -0
- package/dist/detectors/registry/condition-toki.js.map +1 -0
- package/dist/detectors/registry/unfilled-placeholder.d.ts.map +1 -1
- package/dist/detectors/registry/unfilled-placeholder.js +2 -2
- package/dist/detectors/registry/unfilled-placeholder.js.map +1 -1
- package/dist/detectors/registry/vague-density.js +1 -1
- package/dist/detectors/registry/vague-density.js.map +1 -1
- package/dist/detectors/rent-multiple-mismatch.d.ts.map +1 -1
- package/dist/detectors/rent-multiple-mismatch.js +2 -12
- package/dist/detectors/rent-multiple-mismatch.js.map +1 -1
- package/dist/detectors/request-owner.d.ts +6 -2
- package/dist/detectors/request-owner.d.ts.map +1 -1
- package/dist/detectors/request-owner.js +57 -7
- package/dist/detectors/request-owner.js.map +1 -1
- package/dist/detectors/requirement-smell.d.ts.map +1 -1
- package/dist/detectors/requirement-smell.js +10 -2
- package/dist/detectors/requirement-smell.js.map +1 -1
- package/dist/detectors/row-sentence-amounts.d.ts.map +1 -1
- package/dist/detectors/row-sentence-amounts.js +5 -10
- package/dist/detectors/row-sentence-amounts.js.map +1 -1
- package/dist/detectors/sentence-length.d.ts.map +1 -1
- package/dist/detectors/sentence-length.js +24 -16
- package/dist/detectors/sentence-length.js.map +1 -1
- package/dist/detectors/sentence-rhythm.d.ts.map +1 -1
- package/dist/detectors/sentence-rhythm.js +6 -3
- package/dist/detectors/sentence-rhythm.js.map +1 -1
- package/dist/detectors/series-label.d.ts +2 -1
- package/dist/detectors/series-label.d.ts.map +1 -1
- package/dist/detectors/series-label.js +10 -4
- package/dist/detectors/series-label.js.map +1 -1
- package/dist/detectors/signals.d.ts +4 -0
- package/dist/detectors/signals.d.ts.map +1 -1
- package/dist/detectors/signals.js +95 -36
- package/dist/detectors/signals.js.map +1 -1
- package/dist/detectors/stated-amounts.d.ts +4 -0
- package/dist/detectors/stated-amounts.d.ts.map +1 -0
- package/dist/detectors/stated-amounts.js +12 -0
- package/dist/detectors/stated-amounts.js.map +1 -0
- package/dist/detectors/step-time-sum.d.ts.map +1 -1
- package/dist/detectors/step-time-sum.js +2 -1
- package/dist/detectors/step-time-sum.js.map +1 -1
- package/dist/detectors/structure-tree.d.ts.map +1 -1
- package/dist/detectors/structure-tree.js +11 -7
- package/dist/detectors/structure-tree.js.map +1 -1
- package/dist/detectors/team.d.ts.map +1 -1
- package/dist/detectors/team.js +10 -6
- package/dist/detectors/team.js.map +1 -1
- package/dist/detectors/template-sections.d.ts +14 -0
- package/dist/detectors/template-sections.d.ts.map +1 -0
- package/dist/detectors/template-sections.js +25 -0
- package/dist/detectors/template-sections.js.map +1 -0
- package/dist/detectors/time-order.d.ts.map +1 -1
- package/dist/detectors/time-order.js +17 -13
- package/dist/detectors/time-order.js.map +1 -1
- package/dist/detectors/titled-run.d.ts +22 -0
- package/dist/detectors/titled-run.d.ts.map +1 -0
- package/dist/detectors/titled-run.js +34 -0
- package/dist/detectors/titled-run.js.map +1 -0
- package/dist/detectors/unbalanced-bracket.d.ts.map +1 -1
- package/dist/detectors/unbalanced-bracket.js +4 -0
- package/dist/detectors/unbalanced-bracket.js.map +1 -1
- package/dist/detectors/undefined-term.d.ts.map +1 -1
- package/dist/detectors/undefined-term.js +8 -0
- package/dist/detectors/undefined-term.js.map +1 -1
- package/dist/detectors/unfilled-placeholder.d.ts +4 -0
- package/dist/detectors/unfilled-placeholder.d.ts.map +1 -0
- package/dist/detectors/unfilled-placeholder.js +9 -0
- package/dist/detectors/unfilled-placeholder.js.map +1 -0
- package/dist/detectors/unknown-word.d.ts +4 -1
- package/dist/detectors/unknown-word.d.ts.map +1 -1
- package/dist/detectors/unknown-word.js +18 -2
- package/dist/detectors/unknown-word.js.map +1 -1
- package/dist/detectors/use-interval.d.ts +1 -0
- package/dist/detectors/use-interval.d.ts.map +1 -1
- package/dist/detectors/use-interval.js +15 -10
- package/dist/detectors/use-interval.js.map +1 -1
- package/dist/detectors/use-maximum.d.ts.map +1 -1
- package/dist/detectors/use-maximum.js +3 -1
- package/dist/detectors/use-maximum.js.map +1 -1
- package/dist/detectors/vague-density.d.ts +5 -0
- package/dist/detectors/vague-density.d.ts.map +1 -0
- package/dist/detectors/vague-density.js +52 -0
- package/dist/detectors/vague-density.js.map +1 -0
- package/dist/extension/document-view.d.ts +2 -2
- package/dist/extension/document-view.d.ts.map +1 -1
- package/dist/extension/document-view.js +17 -8
- package/dist/extension/document-view.js.map +1 -1
- package/dist/extension/entry-genres.d.ts +5 -0
- package/dist/extension/entry-genres.d.ts.map +1 -0
- package/dist/extension/entry-genres.js +13 -0
- package/dist/extension/entry-genres.js.map +1 -0
- package/dist/extension/module-detector.d.ts.map +1 -1
- package/dist/extension/module-detector.js +4 -4
- package/dist/extension/module-detector.js.map +1 -1
- package/dist/extension/plugin-parse.d.ts +1 -1
- package/dist/extension/plugin-parse.d.ts.map +1 -1
- package/dist/extension/plugin-parse.js +24 -7
- package/dist/extension/plugin-parse.js.map +1 -1
- package/dist/extension/problem-text.d.ts.map +1 -1
- package/dist/extension/problem-text.js +2 -0
- package/dist/extension/problem-text.js.map +1 -1
- package/dist/facts/age-values.d.ts.map +1 -1
- package/dist/facts/age-values.js +20 -2
- package/dist/facts/age-values.js.map +1 -1
- package/dist/facts/column-units.d.ts +31 -0
- package/dist/facts/column-units.d.ts.map +1 -0
- package/dist/facts/column-units.js +37 -0
- package/dist/facts/column-units.js.map +1 -0
- package/dist/facts/fact-scope.d.ts +10 -1
- package/dist/facts/fact-scope.d.ts.map +1 -1
- package/dist/facts/fact-scope.js +34 -3
- package/dist/facts/fact-scope.js.map +1 -1
- package/dist/facts/fact-values.d.ts +4 -0
- package/dist/facts/fact-values.d.ts.map +1 -1
- package/dist/facts/fact-values.js +3 -1
- package/dist/facts/fact-values.js.map +1 -1
- package/dist/facts/labelled-facts.d.ts +10 -0
- package/dist/facts/labelled-facts.d.ts.map +1 -1
- package/dist/facts/labelled-facts.js +6 -1
- package/dist/facts/labelled-facts.js.map +1 -1
- package/dist/facts/per-unit.d.ts +36 -0
- package/dist/facts/per-unit.d.ts.map +1 -0
- package/dist/facts/per-unit.js +56 -0
- package/dist/facts/per-unit.js.map +1 -0
- package/dist/facts/row-sentence-amounts.d.ts +3 -12
- package/dist/facts/row-sentence-amounts.d.ts.map +1 -1
- package/dist/facts/row-sentence-amounts.js +1 -15
- package/dist/facts/row-sentence-amounts.js.map +1 -1
- package/dist/facts/table-facts.d.ts +13 -3
- package/dist/facts/table-facts.d.ts.map +1 -1
- package/dist/facts/table-facts.js +35 -13
- package/dist/facts/table-facts.js.map +1 -1
- package/dist/facts/term-values.d.ts +13 -1
- package/dist/facts/term-values.d.ts.map +1 -1
- package/dist/facts/term-values.js +71 -12
- package/dist/facts/term-values.js.map +1 -1
- package/dist/grade/baseline.d.ts +4 -2
- package/dist/grade/baseline.d.ts.map +1 -1
- package/dist/grade/baseline.js +13 -11
- package/dist/grade/baseline.js.map +1 -1
- package/dist/grade/expect-read.d.ts +16 -0
- package/dist/grade/expect-read.d.ts.map +1 -0
- package/dist/grade/expect-read.js +52 -0
- package/dist/grade/expect-read.js.map +1 -0
- package/dist/grade/expect.d.ts +50 -0
- package/dist/grade/expect.d.ts.map +1 -0
- package/dist/grade/expect.js +53 -0
- package/dist/grade/expect.js.map +1 -0
- package/dist/grade/grade-item.d.ts +1 -1
- package/dist/grade/grade-item.d.ts.map +1 -1
- package/dist/grade/grade-item.js +13 -3
- package/dist/grade/grade-item.js.map +1 -1
- package/dist/grade/item.d.ts +9 -1
- package/dist/grade/item.d.ts.map +1 -1
- package/dist/grade/item.js +32 -7
- package/dist/grade/item.js.map +1 -1
- package/dist/grade/result.d.ts +5 -0
- package/dist/grade/result.d.ts.map +1 -1
- package/dist/grade/results-read.d.ts.map +1 -1
- package/dist/grade/results-read.js +4 -2
- package/dist/grade/results-read.js.map +1 -1
- package/dist/grade/rubric-file.d.ts +23 -0
- package/dist/grade/rubric-file.d.ts.map +1 -0
- package/dist/grade/rubric-file.js +35 -0
- package/dist/grade/rubric-file.js.map +1 -0
- package/dist/grade/rubric.d.ts +2 -0
- package/dist/grade/rubric.d.ts.map +1 -1
- package/dist/grade/rubric.js +75 -47
- package/dist/grade/rubric.js.map +1 -1
- package/dist/grade/setup.d.ts +2 -1
- package/dist/grade/setup.d.ts.map +1 -1
- package/dist/grade/setup.js +2 -2
- package/dist/grade/setup.js.map +1 -1
- package/dist/grade/stamp.d.ts +2 -0
- package/dist/grade/stamp.d.ts.map +1 -1
- package/dist/grade/stamp.js +8 -2
- package/dist/grade/stamp.js.map +1 -1
- package/dist/grade/task-rubric.d.ts +16 -0
- package/dist/grade/task-rubric.d.ts.map +1 -0
- package/dist/grade/task-rubric.js +34 -0
- package/dist/grade/task-rubric.js.map +1 -0
- package/dist/grade/text.d.ts +5 -1
- package/dist/grade/text.d.ts.map +1 -1
- package/dist/grade/text.js +16 -4
- package/dist/grade/text.js.map +1 -1
- package/dist/grade-api.d.ts +9 -2
- package/dist/grade-api.d.ts.map +1 -1
- package/dist/grade-api.js +31 -15
- package/dist/grade-api.js.map +1 -1
- package/dist/heading-numbering.d.ts +5 -2
- package/dist/heading-numbering.d.ts.map +1 -1
- package/dist/heading-numbering.js +27 -6
- package/dist/heading-numbering.js.map +1 -1
- package/dist/name-char-reading.d.ts +5 -0
- package/dist/name-char-reading.d.ts.map +1 -1
- package/dist/name-char-reading.js +15 -0
- package/dist/name-char-reading.js.map +1 -1
- package/dist/name-end-letter.d.ts +24 -0
- package/dist/name-end-letter.d.ts.map +1 -0
- package/dist/name-end-letter.js +45 -0
- package/dist/name-end-letter.js.map +1 -0
- package/dist/name-given-before.d.ts +15 -0
- package/dist/name-given-before.d.ts.map +1 -0
- package/dist/name-given-before.js +30 -0
- package/dist/name-given-before.js.map +1 -0
- package/dist/name-neighbours.d.ts.map +1 -1
- package/dist/name-neighbours.js +2 -1
- package/dist/name-neighbours.js.map +1 -1
- package/dist/name-separator.d.ts +6 -0
- package/dist/name-separator.d.ts.map +1 -1
- package/dist/name-separator.js +80 -0
- package/dist/name-separator.js.map +1 -1
- package/dist/name-variants.d.ts +8 -3
- package/dist/name-variants.d.ts.map +1 -1
- package/dist/name-variants.js +40 -12
- package/dist/name-variants.js.map +1 -1
- package/dist/name-word-order.d.ts +9 -5
- package/dist/name-word-order.d.ts.map +1 -1
- package/dist/name-word-order.js +47 -15
- package/dist/name-word-order.js.map +1 -1
- package/dist/nominal-stem.d.ts +13 -0
- package/dist/nominal-stem.d.ts.map +1 -0
- package/dist/nominal-stem.js +32 -0
- package/dist/nominal-stem.js.map +1 -0
- package/dist/number-name.d.ts.map +1 -1
- package/dist/number-name.js +11 -2
- package/dist/number-name.js.map +1 -1
- package/dist/profile/cue-lines.d.ts +6 -0
- package/dist/profile/cue-lines.d.ts.map +1 -0
- package/dist/profile/cue-lines.js +13 -0
- package/dist/profile/cue-lines.js.map +1 -0
- package/dist/profile/parse.d.ts +1 -1
- package/dist/profile/parse.d.ts.map +1 -1
- package/dist/profile/parse.js +3 -2
- package/dist/profile/parse.js.map +1 -1
- package/dist/reference-numbers.d.ts +2 -0
- package/dist/reference-numbers.d.ts.map +1 -1
- package/dist/reference-numbers.js +1 -1
- package/dist/reference-numbers.js.map +1 -1
- package/dist/sentence-load.d.ts +2 -1
- package/dist/sentence-load.d.ts.map +1 -1
- package/dist/sentence-load.js +6 -2
- package/dist/sentence-load.js.map +1 -1
- package/dist/spaced-person-name.d.ts.map +1 -1
- package/dist/spaced-person-name.js +26 -1
- package/dist/spaced-person-name.js.map +1 -1
- package/dist/spacing-code.d.ts.map +1 -1
- package/dist/spacing-code.js +10 -1
- package/dist/spacing-code.js.map +1 -1
- package/dist/spacing-minority.d.ts +7 -0
- package/dist/spacing-minority.d.ts.map +1 -1
- package/dist/spacing-minority.js +14 -0
- package/dist/spacing-minority.js.map +1 -1
- package/dist/structure/cited-document-section.d.ts +7 -0
- package/dist/structure/cited-document-section.d.ts.map +1 -0
- package/dist/structure/cited-document-section.js +33 -0
- package/dist/structure/cited-document-section.js.map +1 -0
- package/dist/structure/closing-balance.d.ts +9 -0
- package/dist/structure/closing-balance.d.ts.map +1 -1
- package/dist/structure/closing-balance.js +34 -7
- package/dist/structure/closing-balance.js.map +1 -1
- package/dist/structure/definition-use.d.ts.map +1 -1
- package/dist/structure/definition-use.js +20 -1
- package/dist/structure/definition-use.js.map +1 -1
- package/dist/structure/document-context.d.ts +2 -0
- package/dist/structure/document-context.d.ts.map +1 -0
- package/dist/structure/document-context.js +42 -0
- package/dist/structure/document-context.js.map +1 -0
- package/dist/structure/fenced-lines.d.ts +7 -0
- package/dist/structure/fenced-lines.d.ts.map +1 -0
- package/dist/structure/fenced-lines.js +27 -0
- package/dist/structure/fenced-lines.js.map +1 -0
- package/dist/structure/html-text-blocks.d.ts +8 -0
- package/dist/structure/html-text-blocks.d.ts.map +1 -0
- package/dist/structure/html-text-blocks.js +47 -0
- package/dist/structure/html-text-blocks.js.map +1 -0
- package/dist/structure/issues.d.ts +1 -1
- package/dist/structure/issues.d.ts.map +1 -1
- package/dist/structure/issues.js +19 -4
- package/dist/structure/issues.js.map +1 -1
- package/dist/structure/labelled-date-order.d.ts +34 -9
- package/dist/structure/labelled-date-order.d.ts.map +1 -1
- package/dist/structure/labelled-date-order.js +60 -15
- package/dist/structure/labelled-date-order.js.map +1 -1
- package/dist/structure/labelled-order.d.ts +10 -1
- package/dist/structure/labelled-order.d.ts.map +1 -1
- package/dist/structure/labelled-order.js +18 -6
- package/dist/structure/labelled-order.js.map +1 -1
- package/dist/structure/line-amount-label.d.ts.map +1 -1
- package/dist/structure/line-amount-label.js +2 -1
- package/dist/structure/line-amount-label.js.map +1 -1
- package/dist/structure/line-amount.d.ts +0 -5
- package/dist/structure/line-amount.d.ts.map +1 -1
- package/dist/structure/line-amount.js +1 -10
- package/dist/structure/line-amount.js.map +1 -1
- package/dist/structure/list-numbering.d.ts +20 -4
- package/dist/structure/list-numbering.d.ts.map +1 -1
- package/dist/structure/list-numbering.js +65 -9
- package/dist/structure/list-numbering.js.map +1 -1
- package/dist/structure/listed-paragraph.d.ts +16 -0
- package/dist/structure/listed-paragraph.d.ts.map +1 -0
- package/dist/structure/listed-paragraph.js +37 -0
- package/dist/structure/listed-paragraph.js.map +1 -0
- package/dist/structure/numbering.d.ts +3 -2
- package/dist/structure/numbering.d.ts.map +1 -1
- package/dist/structure/numbering.js +31 -6
- package/dist/structure/numbering.js.map +1 -1
- package/dist/structure/prose-total.d.ts +8 -0
- package/dist/structure/prose-total.d.ts.map +1 -1
- package/dist/structure/prose-total.js +70 -2
- package/dist/structure/prose-total.js.map +1 -1
- package/dist/structure/reference-text.d.ts +9 -1
- package/dist/structure/reference-text.d.ts.map +1 -1
- package/dist/structure/reference-text.js +21 -3
- package/dist/structure/reference-text.js.map +1 -1
- package/dist/structure/runs.d.ts.map +1 -1
- package/dist/structure/runs.js +9 -1
- package/dist/structure/runs.js.map +1 -1
- package/dist/structure/section-names.d.ts +12 -0
- package/dist/structure/section-names.d.ts.map +1 -0
- package/dist/structure/section-names.js +26 -0
- package/dist/structure/section-names.js.map +1 -0
- package/dist/structure/signed-date-line.d.ts +15 -0
- package/dist/structure/signed-date-line.d.ts.map +1 -0
- package/dist/structure/signed-date-line.js +68 -0
- package/dist/structure/signed-date-line.js.map +1 -0
- package/dist/structure/tax.d.ts.map +1 -1
- package/dist/structure/tax.js +5 -3
- package/dist/structure/tax.js.map +1 -1
- package/dist/structure/total-line.d.ts.map +1 -1
- package/dist/structure/total-line.js +10 -6
- package/dist/structure/total-line.js.map +1 -1
- package/dist/structure/total.d.ts +2 -0
- package/dist/structure/total.d.ts.map +1 -1
- package/dist/structure/total.js +34 -3
- package/dist/structure/total.js.map +1 -1
- package/dist/structure/versioned-label.d.ts +16 -0
- package/dist/structure/versioned-label.d.ts.map +1 -0
- package/dist/structure/versioned-label.js +48 -0
- package/dist/structure/versioned-label.js.map +1 -0
- package/dist/structure/written-headings.d.ts +31 -0
- package/dist/structure/written-headings.d.ts.map +1 -0
- package/dist/structure/written-headings.js +119 -0
- package/dist/structure/written-headings.js.map +1 -0
- package/dist/structure/written-resolve.d.ts +12 -0
- package/dist/structure/written-resolve.d.ts.map +1 -0
- package/dist/structure/written-resolve.js +49 -0
- package/dist/structure/written-resolve.js.map +1 -0
- package/dist/subject-codes.d.ts +21 -0
- package/dist/subject-codes.d.ts.map +1 -0
- package/dist/subject-codes.js +79 -0
- package/dist/subject-codes.js.map +1 -0
- package/dist/unlabelled-references.d.ts +6 -2
- package/dist/unlabelled-references.d.ts.map +1 -1
- package/dist/unlabelled-references.js +11 -10
- package/dist/unlabelled-references.js.map +1 -1
- package/genres.yaml +17 -0
- package/package.json +3 -3
- package/profiles/listing.yaml +1 -1
- package/rules/all-caps-shouting.yaml +2 -2
- package/rules/closing-balance-mismatch.yaml +3 -3
- package/rules/concrete-evidence-density.yaml +2 -2
- package/rules/contraction-consistency.yaml +13 -13
- package/rules/dangling-reference.yaml +2 -2
- package/rules/date-without-year.yaml +2 -2
- package/rules/defined-name-repeated.yaml +2 -2
- package/rules/due-before-issue.yaml +9 -5
- package/rules/fact-conflict.yaml +2 -2
- package/rules/heading-echo.yaml +2 -2
- package/rules/heading-end-punctuation-mix.yaml +2 -2
- package/rules/heading-numbering-mix.yaml +2 -2
- package/rules/internal-jargon.yaml +2 -2
- package/rules/latin-spacing.yaml +4 -4
- package/rules/list-item-form-mix.yaml +1 -1
- package/rules/max-kanji-continuous.yaml +5 -3
- package/rules/max-sentence-length.yaml +3 -2
- package/rules/name-variant.yaml +5 -2
- package/rules/ngram-repetition.yaml +2 -2
- package/rules/no-lead.yaml +2 -2
- package/rules/number-without-unit.yaml +2 -2
- package/rules/numbering-gap.yaml +2 -2
- package/rules/orthographic-variant.yaml +2 -2
- package/rules/reference-number-variant.yaml +3 -3
- package/rules/reference-title-mismatch.yaml +2 -2
- package/rules/repeated-sentence-ending.yaml +3 -2
- package/rules/request-without-deadline.yaml +2 -2
- package/rules/requirement-smell.yaml +2 -2
- package/rules/sentence-rhythm.yaml +2 -2
- package/rules/title-case-consistency.yaml +2 -2
- package/rules/toki-as-condition.yaml +71 -0
- package/rules/total-mismatch.yaml +4 -4
- package/rules/unbalanced-bracket.yaml +2 -2
- package/rules/undefined-acronym.yaml +11 -2
- package/rules/undefined-term.yaml +2 -2
- package/rules/unfilled-placeholder.yaml +2 -2
- package/rules/unknown-word.yaml +2 -2
- package/rules/use-before-definition.yaml +2 -2
- package/rules/vague-word-density.yaml +2 -2
- package/src/api.ts +11 -2
- package/src/capitals-passage.ts +31 -0
- package/src/cli-text.ts +4 -2
- package/src/coined-hyphen-name.ts +27 -0
- package/src/commands/grade.ts +75 -23
- package/src/company-kana-spelling.ts +22 -2
- package/src/company-name-ending.ts +50 -0
- package/src/company-names.ts +76 -20
- package/src/custom/no-rewrite.ts +2 -0
- package/src/custom/parse.ts +18 -2
- package/src/detectors/acronym-context.ts +5 -6
- package/src/detectors/acronym-definition.ts +123 -0
- package/src/detectors/acronym-lone.ts +26 -0
- package/src/detectors/acronym-name.ts +117 -0
- package/src/detectors/age-words.ts +12 -0
- package/src/detectors/annual-pay-mismatch.ts +3 -18
- package/src/detectors/blank-structure.ts +4 -3
- package/src/detectors/capitalised-term.ts +154 -4
- package/src/detectors/caps-caption.ts +61 -0
- package/src/detectors/char-shape.ts +74 -22
- package/src/detectors/clause-shape.ts +14 -4
- package/src/detectors/closing-balance-mismatch.ts +1 -0
- package/src/detectors/code-fences.ts +10 -0
- package/src/detectors/concrete-evidence.ts +77 -1
- package/src/detectors/condition-toki.ts +60 -0
- package/src/detectors/conjugated-entry.ts +53 -0
- package/src/detectors/content-morphemes.ts +2 -1
- package/src/detectors/contraction-minority.ts +11 -0
- package/src/detectors/counter-edge.ts +23 -0
- package/src/detectors/cross-facts.ts +2 -1
- package/src/detectors/custom.ts +9 -2
- package/src/detectors/date-any-year.ts +56 -10
- package/src/detectors/date-heading-year.ts +55 -0
- package/src/detectors/date-year.ts +54 -9
- package/src/detectors/defined-term-form.ts +26 -5
- package/src/detectors/document-shape.ts +8 -0
- package/src/detectors/due-date.ts +26 -7
- package/src/detectors/en-shape.ts +5 -1
- package/src/detectors/fact-consistency.ts +16 -19
- package/src/detectors/form-line.ts +47 -0
- package/src/detectors/formula-amount.ts +2 -18
- package/src/detectors/gram-passages.ts +36 -0
- package/src/detectors/heading-claim.ts +76 -0
- package/src/detectors/heading-echo.ts +32 -1
- package/src/detectors/heading-end-mark.ts +23 -10
- package/src/detectors/heading-names.ts +31 -0
- package/src/detectors/heading-numbering.ts +7 -2
- package/src/detectors/inch-mark.ts +49 -0
- package/src/detectors/installment-total-mismatch.ts +3 -18
- package/src/detectors/lexicon.ts +32 -21
- package/src/detectors/list-parallel.ts +46 -7
- package/src/detectors/mark-shape.ts +12 -6
- package/src/detectors/name-variant-apart.ts +63 -0
- package/src/detectors/name-variant.ts +73 -18
- package/src/detectors/number-unit.ts +35 -9
- package/src/detectors/numeral-word.ts +33 -0
- package/src/detectors/organisation-run.ts +86 -0
- package/src/detectors/orthographic-variant.ts +22 -6
- package/src/detectors/orthography.ts +17 -8
- package/src/detectors/outline-label.ts +48 -0
- package/src/detectors/page-marker.ts +26 -0
- package/src/detectors/parallel-definition.ts +64 -0
- package/src/detectors/per-unit-words.ts +24 -0
- package/src/detectors/period-multiple-mismatch.ts +2 -18
- package/src/detectors/reference-number-variant.ts +27 -5
- package/src/detectors/reference-text.ts +1 -0
- package/src/detectors/registry/condition-toki.ts +4 -0
- package/src/detectors/registry/unfilled-placeholder.ts +2 -2
- package/src/detectors/registry/vague-density.ts +1 -1
- package/src/detectors/rent-multiple-mismatch.ts +2 -18
- package/src/detectors/request-owner.ts +71 -8
- package/src/detectors/requirement-smell.ts +15 -2
- package/src/detectors/row-sentence-amounts.ts +5 -20
- package/src/detectors/sentence-length.ts +14 -6
- package/src/detectors/sentence-rhythm.ts +8 -4
- package/src/detectors/series-label.ts +13 -4
- package/src/detectors/signals.ts +94 -26
- package/src/detectors/stated-amounts.ts +20 -0
- package/src/detectors/step-time-sum.ts +2 -1
- package/src/detectors/structure-tree.ts +13 -8
- package/src/detectors/team.ts +13 -7
- package/src/detectors/template-sections.ts +37 -0
- package/src/detectors/time-order.ts +6 -3
- package/src/detectors/titled-run.ts +43 -0
- package/src/detectors/unbalanced-bracket.ts +3 -0
- package/src/detectors/undefined-term.ts +8 -0
- package/src/detectors/unfilled-placeholder.ts +10 -0
- package/src/detectors/unknown-word.ts +20 -2
- package/src/detectors/use-interval.ts +8 -4
- package/src/detectors/use-maximum.ts +3 -1
- package/src/detectors/vague-density.ts +68 -0
- package/src/extension/document-view.ts +18 -9
- package/src/extension/entry-genres.ts +15 -0
- package/src/extension/module-detector.ts +9 -4
- package/src/extension/plugin-parse.ts +29 -7
- package/src/extension/problem-text.ts +4 -0
- package/src/facts/age-values.ts +24 -2
- package/src/facts/column-units.ts +67 -0
- package/src/facts/fact-scope.ts +53 -4
- package/src/facts/fact-values.ts +11 -1
- package/src/facts/labelled-facts.ts +16 -2
- package/src/facts/per-unit.ts +105 -0
- package/src/facts/row-sentence-amounts.ts +4 -26
- package/src/facts/table-facts.ts +50 -10
- package/src/facts/term-values.ts +94 -13
- package/src/grade/baseline.ts +20 -12
- package/src/grade/expect-read.ts +65 -0
- package/src/grade/expect.ts +74 -0
- package/src/grade/grade-item.ts +14 -3
- package/src/grade/item.ts +48 -8
- package/src/grade/result.ts +5 -0
- package/src/grade/results-read.ts +7 -2
- package/src/grade/rubric-file.ts +46 -0
- package/src/grade/rubric.ts +77 -47
- package/src/grade/setup.ts +3 -3
- package/src/grade/stamp.ts +10 -2
- package/src/grade/task-rubric.ts +39 -0
- package/src/grade/text.ts +27 -5
- package/src/grade-api.ts +38 -16
- package/src/heading-numbering.ts +35 -8
- package/src/name-char-reading.ts +16 -0
- package/src/name-end-letter.ts +61 -0
- package/src/name-given-before.ts +40 -0
- package/src/name-neighbours.ts +2 -1
- package/src/name-separator.ts +93 -0
- package/src/name-variants.ts +69 -18
- package/src/name-word-order.ts +62 -17
- package/src/nominal-stem.ts +36 -0
- package/src/number-name.ts +12 -3
- package/src/profile/cue-lines.ts +14 -0
- package/src/profile/parse.ts +3 -2
- package/src/reference-numbers.ts +1 -1
- package/src/sentence-load.ts +7 -2
- package/src/spaced-person-name.ts +27 -2
- package/src/spacing-code.ts +13 -2
- package/src/spacing-minority.ts +17 -0
- package/src/structure/cited-document-section.ts +42 -0
- package/src/structure/closing-balance.ts +46 -8
- package/src/structure/definition-use.ts +24 -1
- package/src/structure/document-context.ts +46 -0
- package/src/structure/fenced-lines.ts +28 -0
- package/src/structure/html-text-blocks.ts +45 -0
- package/src/structure/issues.ts +19 -4
- package/src/structure/labelled-date-order.ts +108 -21
- package/src/structure/labelled-order.ts +33 -13
- package/src/structure/line-amount-label.ts +2 -1
- package/src/structure/line-amount.ts +1 -11
- package/src/structure/list-numbering.ts +100 -11
- package/src/structure/listed-paragraph.ts +45 -0
- package/src/structure/numbering.ts +48 -19
- package/src/structure/prose-total.ts +81 -2
- package/src/structure/reference-text.ts +25 -3
- package/src/structure/runs.ts +10 -1
- package/src/structure/section-names.ts +32 -0
- package/src/structure/signed-date-line.ts +78 -0
- package/src/structure/tax.ts +6 -3
- package/src/structure/total-line.ts +12 -6
- package/src/structure/total.ts +42 -3
- package/src/structure/versioned-label.ts +52 -0
- package/src/structure/written-headings.ts +137 -0
- package/src/structure/written-resolve.ts +57 -0
- package/src/subject-codes.ts +105 -0
- package/src/unlabelled-references.ts +24 -16
package/dist/grade-api.js
CHANGED
|
@@ -11,9 +11,11 @@ import { withStyle } from "./config/style.js";
|
|
|
11
11
|
import { withExtensions } from "./extension/load.js";
|
|
12
12
|
import { GENRES } from "./genre.js";
|
|
13
13
|
import { gradeItem } from "./grade/grade-item.js";
|
|
14
|
+
import { expectProblems } from "./grade/expect-read.js";
|
|
14
15
|
import { readItem } from "./grade/item.js";
|
|
15
16
|
import { parseRubric } from "./grade/rubric.js";
|
|
16
17
|
import { gradeSetup } from "./grade/setup.js";
|
|
18
|
+
import { taskNamesOf } from "./grade/task-rubric.js";
|
|
17
19
|
import { GRADE_TEXT } from "./grade/text.js";
|
|
18
20
|
import { compareVariantGroups } from "./grade/variants.js";
|
|
19
21
|
import { variantGroupsOf } from "./grade/variants-input.js";
|
|
@@ -77,23 +79,24 @@ const rubricOf = (config) => {
|
|
|
77
79
|
* packages and hashes the rules once. Keyed by the object itself: two chaff.yaml files that read alike may load other code.
|
|
78
80
|
*/
|
|
79
81
|
const setups = new WeakMap();
|
|
80
|
-
const setupFor = (config, experimental, languages) => {
|
|
82
|
+
const setupFor = (config, rubric, experimental, languages) => {
|
|
81
83
|
const run = { experimental, genre: undefined };
|
|
82
84
|
const own = setups.get(config) ?? new Map();
|
|
83
85
|
setups.set(config, own);
|
|
84
|
-
|
|
86
|
+
// The rubric is in the key: an item's task was checked against this rubric, so the setup must grade by the same one.
|
|
87
|
+
const key = `${String(experimental)}\n${languages.join(",")}\n${JSON.stringify(rubric) ?? ""}`;
|
|
85
88
|
const known = own.get(key);
|
|
86
89
|
if (known !== undefined)
|
|
87
90
|
return known;
|
|
88
|
-
const made = remember(own, key, gradeSetup(config, run, languages,
|
|
91
|
+
const made = remember(own, key, gradeSetup(config, run, languages, rubric));
|
|
89
92
|
// A language package that failed to load may be installed before the next call: do not keep the failure.
|
|
90
93
|
made.catch(() => own.delete(key));
|
|
91
94
|
return made;
|
|
92
95
|
};
|
|
93
96
|
/** The setup, or GradeInputError when a language package cannot be loaded, as `chaff grade` ends with 2 then. */
|
|
94
|
-
const loadedSetup = async (config, experimental, languages) => {
|
|
97
|
+
const loadedSetup = async (config, rubric, experimental, languages) => {
|
|
95
98
|
try {
|
|
96
|
-
return await setupFor(config, experimental, languages);
|
|
99
|
+
return await setupFor(config, rubric, experimental, languages);
|
|
97
100
|
}
|
|
98
101
|
catch (error) {
|
|
99
102
|
if (error instanceof GradeInputError)
|
|
@@ -101,13 +104,8 @@ const loadedSetup = async (config, experimental, languages) => {
|
|
|
101
104
|
throw new GradeInputError([TEXT.cannotLoad(error instanceof Error ? error.message : String(error))]);
|
|
102
105
|
}
|
|
103
106
|
};
|
|
104
|
-
/**
|
|
105
|
-
|
|
106
|
-
* `sources`, and pass or fail by chaff.yaml's `grade:` or the default. Reads a file only when `config` is a path, and
|
|
107
|
-
* never writes one. Throws GradeInputError for an input or a chaff.yaml `chaff grade` would refuse with exit 2.
|
|
108
|
-
*/
|
|
109
|
-
export const grade = async (output, options = {}) => {
|
|
110
|
-
const config = await configOf(options.config);
|
|
107
|
+
/** The options read as one line of `chaff grade`'s input, refused as that line would be. `tasks`: those the rubric defines. */
|
|
108
|
+
const itemOf = (output, options, tasks) => {
|
|
111
109
|
const raw = {
|
|
112
110
|
id: options.id ?? "output",
|
|
113
111
|
output,
|
|
@@ -118,12 +116,30 @@ export const grade = async (output, options = {}) => {
|
|
|
118
116
|
language: options.language,
|
|
119
117
|
genre: options.genre,
|
|
120
118
|
variant: options.variant,
|
|
119
|
+
task: options.task,
|
|
120
|
+
expect: options.expect,
|
|
121
121
|
};
|
|
122
|
-
const read = readItem(raw, { isLanguage: (language) => packageFor(language) !== undefined, genres: GENRES });
|
|
122
|
+
const read = readItem(raw, { isLanguage: (language) => packageFor(language) !== undefined, genres: GENRES, tasks });
|
|
123
123
|
if ("problem" in read)
|
|
124
124
|
throw new GradeInputError([TEXT.problem(read.problem)]);
|
|
125
|
-
|
|
126
|
-
|
|
125
|
+
return read.item;
|
|
126
|
+
};
|
|
127
|
+
/**
|
|
128
|
+
* Grades one output (spec §29.6): its findings and rates, its facts against `reference`, its `citations` against
|
|
129
|
+
* `sources`, its `expect` facts, and pass or fail by chaff.yaml's `grade:` (its `task`'s rubric when named) or the
|
|
130
|
+
* default. Reads a file only when `config` is a path, and never writes one. Throws GradeInputError for an input or a
|
|
131
|
+
* chaff.yaml `chaff grade` would refuse with exit 2, an unknown `task` or an `expect` entry that is not one fact among them.
|
|
132
|
+
*/
|
|
133
|
+
export const grade = async (output, options = {}) => {
|
|
134
|
+
const config = await configOf(options.config);
|
|
135
|
+
const rubric = rubricOf(config);
|
|
136
|
+
const item = itemOf(output, options, taskNamesOf(rubric));
|
|
137
|
+
const languages = item.language === undefined ? [] : [item.language];
|
|
138
|
+
const setup = await loadedSetup(config, rubric, options.experimental ?? config.experimental, languages);
|
|
139
|
+
const problems = await expectProblems(item, 0, setup);
|
|
140
|
+
if (problems.length > 0)
|
|
141
|
+
throw new GradeInputError(problems.map((problem) => TEXT.problem(problem)));
|
|
142
|
+
return gradeItem(item, setup);
|
|
127
143
|
};
|
|
128
144
|
/**
|
|
129
145
|
* Several variants' results side by side on the same inputs (spec §29.5), as `chaff grade` prints them for a file whose
|
package/dist/grade-api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grade-api.js","sourceRoot":"","sources":["../src/grade-api.ts"],"names":[],"mappings":"AAAA,mHAAmH;AACnH,0HAA0H;AAC1H,sGAAsG;AACtG,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,KAAK,EAAe,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,SAAS,EAAmB,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"grade-api.js","sourceRoot":"","sources":["../src/grade-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,11 +7,14 @@ export type NumberLabel = {
|
|
|
7
7
|
};
|
|
8
8
|
/** 見出しの言葉から、番号の書き方を読む。番号を持つ語(第1章)を先に、字だけの形(1.)を後に見る。 */
|
|
9
9
|
export declare const numberingStyleOf: (heading: string, labels: readonly NumberLabel[]) => string;
|
|
10
|
-
/**
|
|
10
|
+
/** 番号が並びの最初(1.、1.1、第1章、A.、①)か。最後の数が最初の数のときで、番号の無い見出しは並びを始めない。 */
|
|
11
|
+
export declare const opensNumbering: (heading: string, labels: readonly NumberLabel[]) => boolean;
|
|
12
|
+
/** 見出し 1 つ。depth は深さ(#の数)、style は番号の書き方、skipped は番号を付けない前後の見出し(目次・参考文献)、opens は番号が 1 から始まるか。 */
|
|
11
13
|
export type NumberedHeading = {
|
|
12
14
|
readonly depth: number;
|
|
13
15
|
readonly style: string;
|
|
14
16
|
readonly skipped: boolean;
|
|
17
|
+
readonly opens: boolean;
|
|
15
18
|
};
|
|
16
19
|
/** 親(直前の浅い見出し)と深さが同じ見出しの組。番号は兄弟の見出しのあいだで揃える。位置は渡した並びの添え字。 */
|
|
17
20
|
export declare const siblingGroups: (headings: readonly NumberedHeading[]) => number[][];
|
|
@@ -26,7 +29,7 @@ export type NumberingMinority = {
|
|
|
26
29
|
};
|
|
27
30
|
/**
|
|
28
31
|
* 兄弟の見出しのうち、少ないほうの書き方のもの。先に番号の有無を比べ(「1. 概要」「2. 手順」「まとめ」の「まとめ」)、
|
|
29
|
-
* 番号の付いた見出しのあいだで書き方を比べる(「1.」「2.」「3)」の「3
|
|
32
|
+
* 番号の付いた見出しのあいだで書き方を比べる(「1.」「2.」「3)」の「3)」)。同じ数なら言わない(二つだけの兄弟は必ず同じ数か一つの書き方)。前後の見出し(目次・参考文献)と、1 から始まる番号の前の見出しは数えない。
|
|
30
33
|
*/
|
|
31
34
|
export declare const numberingMinorities: (headings: readonly NumberedHeading[]) => NumberingMinority[];
|
|
32
35
|
//# sourceMappingURL=heading-numbering.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heading-numbering.d.ts","sourceRoot":"","sources":["../src/heading-numbering.ts"],"names":[],"mappings":"AAGA,uEAAuE;AACvE,eAAO,MAAM,UAAU,SAAS,CAAC;AAEjC,mEAAmE;AACnE,MAAM,MAAM,WAAW,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"heading-numbering.d.ts","sourceRoot":"","sources":["../src/heading-numbering.ts"],"names":[],"mappings":"AAGA,uEAAuE;AACvE,eAAO,MAAM,UAAU,SAAS,CAAC;AAEjC,mEAAmE;AACnE,MAAM,MAAM,WAAW,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAA;CAAE,CAAC;AA8C3F,wDAAwD;AACxD,eAAO,MAAM,gBAAgB,GAAI,SAAS,MAAM,EAAE,QAAQ,SAAS,WAAW,EAAE,KAAG,MAAuC,CAAC;AAM3H,iEAAiE;AACjE,eAAO,MAAM,cAAc,GAAI,SAAS,MAAM,EAAE,QAAQ,SAAS,WAAW,EAAE,KAAG,OAGhF,CAAC;AAEF,gGAAgG;AAChG,MAAM,MAAM,eAAe,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;AAErI,6DAA6D;AAC7D,eAAO,MAAM,aAAa,GAAI,UAAU,SAAS,eAAe,EAAE,KAAG,MAAM,EAAE,EAQ5E,CAAC;AAEF,6FAA6F;AAC7F,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,kCAAkC;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,CAAC;AA0BF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAAI,UAAU,SAAS,eAAe,EAAE,KAAG,iBAAiB,EAcxF,CAAC"}
|
|
@@ -28,13 +28,23 @@ const labelPattern = (label) => label.position === "before"
|
|
|
28
28
|
: new RegExp(`^(?:第(?:${ARABIC}|${KANJI}|${ROMAN})|${ARABIC})${escaped(label.word)}`, "u");
|
|
29
29
|
/** 見出しの頭の強調の印と空白。「**1. 概要**」も「1. 概要」と読む。 */
|
|
30
30
|
const LEAD = /^[\s*_]+/u;
|
|
31
|
-
|
|
32
|
-
export const numberingStyleOf = (heading, labels) => {
|
|
31
|
+
const markOf = (heading, labels) => {
|
|
33
32
|
const text = heading.replace(LEAD, "");
|
|
34
33
|
const label = labels.find((candidate) => labelPattern(candidate).test(text));
|
|
35
34
|
if (label !== undefined)
|
|
36
|
-
return `label:${label.word.toLowerCase()}
|
|
37
|
-
|
|
35
|
+
return { style: `label:${label.word.toLowerCase()}`, mark: labelPattern(label).exec(text)?.[0] ?? "" };
|
|
36
|
+
const shape = SHAPES.find(([, pattern]) => pattern.test(text));
|
|
37
|
+
return shape === undefined ? { style: UNNUMBERED, mark: "" } : { style: shape[0], mark: shape[1].exec(text)?.[0] ?? "" };
|
|
38
|
+
};
|
|
39
|
+
/** 見出しの言葉から、番号の書き方を読む。番号を持つ語(第1章)を先に、字だけの形(1.)を後に見る。 */
|
|
40
|
+
export const numberingStyleOf = (heading, labels) => markOf(heading, labels).style;
|
|
41
|
+
/** 番号の中の数の一つ一つ(「7.1」の 7 と 1、「Chapter II」の II)。番号は印の最後に来るので、語の頭の大文字(Chapter の C)は最後にならない。 */
|
|
42
|
+
const NUMBER_TOKEN = /[0-90-9]+|[A-ZⅠ-Ⅻ①-⑳一二三四五六七八九十百]+/gu;
|
|
43
|
+
const FIRST_NUMBERS = new Set(["1", "1", "I", "Ⅰ", "A", "①", "一"]);
|
|
44
|
+
/** 番号が並びの最初(1.、1.1、第1章、A.、①)か。最後の数が最初の数のときで、番号の無い見出しは並びを始めない。 */
|
|
45
|
+
export const opensNumbering = (heading, labels) => {
|
|
46
|
+
const last = markOf(heading, labels).mark.match(NUMBER_TOKEN)?.at(-1);
|
|
47
|
+
return last !== undefined && FIRST_NUMBERS.has(last);
|
|
38
48
|
};
|
|
39
49
|
/** 親(直前の浅い見出し)と深さが同じ見出しの組。番号は兄弟の見出しのあいだで揃える。位置は渡した並びの添え字。 */
|
|
40
50
|
export const siblingGroups = (headings) => {
|
|
@@ -56,12 +66,23 @@ const minorityBy = (members, keyOf) => {
|
|
|
56
66
|
return { minority: members.filter((at) => keyOf(at) !== top[0]), majority: top[0], count: top[1], example };
|
|
57
67
|
};
|
|
58
68
|
const minoritiesOf = (split, kind) => split === undefined ? [] : split.minority.map((at) => ({ at, kind, majority: split.majority, count: split.count, example: split.example }));
|
|
69
|
+
/** 番号の並びの最初の兄弟が 1 から始まるとき、その前の番号の無い兄弟(文書の題、「Applies to England」)は並びの外。番号付きの兄弟が二つ以上あるときだけ。 */
|
|
70
|
+
const MIN_NUMBERED_RUN = 2;
|
|
71
|
+
const leadingFrontMatter = (members, headings) => {
|
|
72
|
+
const numbered = members.filter((at) => (headings[at]?.style ?? UNNUMBERED) !== UNNUMBERED);
|
|
73
|
+
const first = numbered[0];
|
|
74
|
+
if (first === undefined || numbered.length < MIN_NUMBERED_RUN || headings[first]?.opens !== true)
|
|
75
|
+
return new Set();
|
|
76
|
+
return new Set(members.filter((at) => at < first));
|
|
77
|
+
};
|
|
59
78
|
/**
|
|
60
79
|
* 兄弟の見出しのうち、少ないほうの書き方のもの。先に番号の有無を比べ(「1. 概要」「2. 手順」「まとめ」の「まとめ」)、
|
|
61
|
-
* 番号の付いた見出しのあいだで書き方を比べる(「1.」「2.」「3)」の「3
|
|
80
|
+
* 番号の付いた見出しのあいだで書き方を比べる(「1.」「2.」「3)」の「3)」)。同じ数なら言わない(二つだけの兄弟は必ず同じ数か一つの書き方)。前後の見出し(目次・参考文献)と、1 から始まる番号の前の見出しは数えない。
|
|
62
81
|
*/
|
|
63
82
|
export const numberingMinorities = (headings) => siblingGroups(headings).flatMap((group) => {
|
|
64
|
-
const
|
|
83
|
+
const listed = group.filter((at) => headings[at]?.skipped !== true);
|
|
84
|
+
const front = leadingFrontMatter(listed, headings);
|
|
85
|
+
const members = listed.filter((at) => !front.has(at));
|
|
65
86
|
const styleOf = (at) => headings[at]?.style ?? UNNUMBERED;
|
|
66
87
|
const numbered = members.filter((at) => styleOf(at) !== UNNUMBERED);
|
|
67
88
|
return [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heading-numbering.js","sourceRoot":"","sources":["../src/heading-numbering.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,4BAA4B;AAE5B,uEAAuE;AACvE,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC;AAKjC,MAAM,MAAM,GAAG,WAAW,CAAC;AAC3B,MAAM,KAAK,GAAG,gBAAgB,CAAC;AAC/B,MAAM,KAAK,GAAG,WAAW,CAAC;AAE1B,uGAAuG;AACvG,MAAM,YAAY,GAAG,uBAAuB,CAAC;AAE7C;;;GAGG;AACH,MAAM,MAAM,GAA6C;IACvD,CAAC,OAAO,EAAE,qBAAqB,CAAC;IAChC,CAAC,aAAa,EAAE,iBAAiB,CAAC;IAClC,CAAC,KAAK,EAAE,IAAI,MAAM,CAAC,IAAI,MAAM,gBAAgB,MAAM,qBAAqB,YAAY,EAAE,EAAE,GAAG,CAAC,CAAC;IAC7F,CAAC,QAAQ,EAAE,IAAI,MAAM,CAAC,IAAI,MAAM,UAAU,MAAM,QAAQ,YAAY,EAAE,EAAE,GAAG,CAAC,CAAC;IAC7E,CAAC,SAAS,EAAE,SAAS,CAAC;IACtB,CAAC,OAAO,EAAE,sBAAsB,CAAC;IACjC,CAAC,QAAQ,EAAE,oCAAoC,CAAC;CACjD,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;AAEvF,sEAAsE;AACtE,MAAM,OAAO,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE1G,MAAM,YAAY,GAAG,CAAC,KAAkB,EAAU,EAAE,CAClD,KAAK,CAAC,QAAQ,KAAK,QAAQ;IACzB,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,MAAM,IAAI,KAAK,IAAI,KAAK,0BAA0B,EAAE,GAAG,CAAC;IAC7G,CAAC,CAAC,IAAI,MAAM,CAAC,WAAW,MAAM,IAAI,KAAK,IAAI,KAAK,KAAK,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAE/F,4CAA4C;AAC5C,MAAM,IAAI,GAAG,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"heading-numbering.js","sourceRoot":"","sources":["../src/heading-numbering.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,4BAA4B;AAE5B,uEAAuE;AACvE,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC;AAKjC,MAAM,MAAM,GAAG,WAAW,CAAC;AAC3B,MAAM,KAAK,GAAG,gBAAgB,CAAC;AAC/B,MAAM,KAAK,GAAG,WAAW,CAAC;AAE1B,uGAAuG;AACvG,MAAM,YAAY,GAAG,uBAAuB,CAAC;AAE7C;;;GAGG;AACH,MAAM,MAAM,GAA6C;IACvD,CAAC,OAAO,EAAE,qBAAqB,CAAC;IAChC,CAAC,aAAa,EAAE,iBAAiB,CAAC;IAClC,CAAC,KAAK,EAAE,IAAI,MAAM,CAAC,IAAI,MAAM,gBAAgB,MAAM,qBAAqB,YAAY,EAAE,EAAE,GAAG,CAAC,CAAC;IAC7F,CAAC,QAAQ,EAAE,IAAI,MAAM,CAAC,IAAI,MAAM,UAAU,MAAM,QAAQ,YAAY,EAAE,EAAE,GAAG,CAAC,CAAC;IAC7E,CAAC,SAAS,EAAE,SAAS,CAAC;IACtB,CAAC,OAAO,EAAE,sBAAsB,CAAC;IACjC,CAAC,QAAQ,EAAE,oCAAoC,CAAC;CACjD,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;AAEvF,sEAAsE;AACtE,MAAM,OAAO,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE1G,MAAM,YAAY,GAAG,CAAC,KAAkB,EAAU,EAAE,CAClD,KAAK,CAAC,QAAQ,KAAK,QAAQ;IACzB,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,MAAM,IAAI,KAAK,IAAI,KAAK,0BAA0B,EAAE,GAAG,CAAC;IAC7G,CAAC,CAAC,IAAI,MAAM,CAAC,WAAW,MAAM,IAAI,KAAK,IAAI,KAAK,KAAK,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAE/F,4CAA4C;AAC5C,MAAM,IAAI,GAAG,WAAW,CAAC;AAIzB,MAAM,MAAM,GAAG,CAAC,OAAe,EAAE,MAA8B,EAAc,EAAE;IAC7E,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7E,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,KAAK,EAAE,SAAS,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;IAChI,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/D,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;AAC3H,CAAC,CAAC;AAEF,wDAAwD;AACxD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAe,EAAE,MAA8B,EAAU,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC;AAE3H,4FAA4F;AAC5F,MAAM,YAAY,GAAG,qCAAqC,CAAC;AAC3D,MAAM,aAAa,GAAwB,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAExF,iEAAiE;AACjE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAe,EAAE,MAA8B,EAAW,EAAE;IACzF,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,OAAO,IAAI,KAAK,SAAS,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACvD,CAAC,CAAC;AAKF,6DAA6D;AAC7D,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAAoC,EAAc,EAAE;IAChF,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7H,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC3C,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE;QAC/B,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9D,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AAC9B,CAAC,CAAC;AAcF,MAAM,UAAU,GAAG,CAAC,OAA0B,EAAE,KAA6B,EAAqB,EAAE;IAClG,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACjF,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAChF,IAAI,GAAG,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACxF,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACjE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;AAC9G,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,KAAwB,EAAE,IAA+B,EAAuB,EAAE,CACtG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAE9I,6FAA6F;AAC7F,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAE3B,MAAM,kBAAkB,GAAG,CAAC,OAA0B,EAAE,QAAoC,EAAuB,EAAE;IACnH,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,UAAU,CAAC,KAAK,UAAU,CAAC,CAAC;IAC5F,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC1B,IAAI,KAAK,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,GAAG,gBAAgB,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,GAAG,EAAE,CAAC;IACnH,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;AACrD,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,QAAoC,EAAuB,EAAE,CAC/F,aAAa,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;IACxC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC,CAAC;IACpE,MAAM,KAAK,GAAG,kBAAkB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,CAAC,EAAU,EAAU,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,UAAU,CAAC;IAC1E,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC;IACpE,OAAO;QACL,GAAG,YAAY,CACb,UAAU,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,EACnF,UAAU,CACX;QACD,GAAG,YAAY,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC;KACxD,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -12,5 +12,10 @@ type ReadToken = {
|
|
|
12
12
|
export declare const tokenReadingOf: (token: ReadToken, chars: CharReadings) => string | undefined;
|
|
13
13
|
/** 語を並べた名前の読み。読めない語が一つでもあれば無い。 */
|
|
14
14
|
export declare const readingOfWords: (words: readonly ReadToken[], chars: CharReadings) => string | undefined;
|
|
15
|
+
/**
|
|
16
|
+
* 名をもう一通りに読んだもの。解析器は名を別の読みに切ることがある(建太 を タテ と フトシ)。字がどれも givenChars(名の中での
|
|
17
|
+
* 字の読み)にある語はその字の読みをつなぎ、ほかの語は tokenReadingOf で読む。一字の名と、読めない語のある名は読まない。
|
|
18
|
+
*/
|
|
19
|
+
export declare const givenNameReadingOf: (words: readonly ReadToken[], givenChars: CharReadings, chars: CharReadings) => string | undefined;
|
|
15
20
|
export {};
|
|
16
21
|
//# sourceMappingURL=name-char-reading.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"name-char-reading.d.ts","sourceRoot":"","sources":["../src/name-char-reading.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEvD,eAAO,MAAM,gBAAgB,EAAE,YAAwB,CAAC;AAExD,KAAK,SAAS,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAIrF;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,SAAS,EAAE,OAAO,YAAY,KAAG,MAAM,GAAG,SAI/E,CAAC;AAEF,kCAAkC;AAClC,eAAO,MAAM,cAAc,GAAI,OAAO,SAAS,SAAS,EAAE,EAAE,OAAO,YAAY,KAAG,MAAM,GAAG,SAG1F,CAAC"}
|
|
1
|
+
{"version":3,"file":"name-char-reading.d.ts","sourceRoot":"","sources":["../src/name-char-reading.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,MAAM,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEvD,eAAO,MAAM,gBAAgB,EAAE,YAAwB,CAAC;AAExD,KAAK,SAAS,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAIrF;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,SAAS,EAAE,OAAO,YAAY,KAAG,MAAM,GAAG,SAI/E,CAAC;AAEF,kCAAkC;AAClC,eAAO,MAAM,cAAc,GAAI,OAAO,SAAS,SAAS,EAAE,EAAE,OAAO,YAAY,KAAG,MAAM,GAAG,SAG1F,CAAC;AAKF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAAI,OAAO,SAAS,SAAS,EAAE,EAAE,YAAY,YAAY,EAAE,OAAO,YAAY,KAAG,MAAM,GAAG,SAOxH,CAAC"}
|
|
@@ -15,4 +15,19 @@ export const readingOfWords = (words, chars) => {
|
|
|
15
15
|
const readings = words.map((token) => tokenReadingOf(token, chars));
|
|
16
16
|
return words.length > 0 && readings.every(isRead) ? readings.join("") : undefined;
|
|
17
17
|
};
|
|
18
|
+
/** 名の字の読みで読み直す、名の字数の下限。一字の名(太 を フトシ)は、二字の名の中の読み(健太 の タ)で読まない。 */
|
|
19
|
+
const MIN_GIVEN_LETTERS = 2;
|
|
20
|
+
/**
|
|
21
|
+
* 名をもう一通りに読んだもの。解析器は名を別の読みに切ることがある(建太 を タテ と フトシ)。字がどれも givenChars(名の中での
|
|
22
|
+
* 字の読み)にある語はその字の読みをつなぎ、ほかの語は tokenReadingOf で読む。一字の名と、読めない語のある名は読まない。
|
|
23
|
+
*/
|
|
24
|
+
export const givenNameReadingOf = (words, givenChars, chars) => {
|
|
25
|
+
if (words.reduce((letters, token) => letters + [...token.surface].length, 0) < MIN_GIVEN_LETTERS)
|
|
26
|
+
return undefined;
|
|
27
|
+
const readings = words.map((token) => {
|
|
28
|
+
const letters = [...token.surface].map((letter) => givenChars.get(letter));
|
|
29
|
+
return letters.length > 0 && letters.every(isRead) ? letters.join("") : tokenReadingOf(token, chars);
|
|
30
|
+
});
|
|
31
|
+
return readings.every(isRead) ? readings.join("") : undefined;
|
|
32
|
+
};
|
|
18
33
|
//# sourceMappingURL=name-char-reading.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"name-char-reading.js","sourceRoot":"","sources":["../src/name-char-reading.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,gBAAgB,GAAiB,IAAI,GAAG,EAAE,CAAC;AAIxD,MAAM,MAAM,GAAG,CAAC,OAA2B,EAAqB,EAAE,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,EAAE,CAAC;AAE3G;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAgB,EAAE,KAAmB,EAAsB,EAAE;IAC1F,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC,OAAO,CAAC;IAChD,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACvE,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACvF,CAAC,CAAC;AAEF,kCAAkC;AAClC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAA2B,EAAE,KAAmB,EAAsB,EAAE;IACrG,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IACpE,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACpF,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"name-char-reading.js","sourceRoot":"","sources":["../src/name-char-reading.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,gBAAgB,GAAiB,IAAI,GAAG,EAAE,CAAC;AAIxD,MAAM,MAAM,GAAG,CAAC,OAA2B,EAAqB,EAAE,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,EAAE,CAAC;AAE3G;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAgB,EAAE,KAAmB,EAAsB,EAAE;IAC1F,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC,OAAO,CAAC;IAChD,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACvE,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACvF,CAAC,CAAC;AAEF,kCAAkC;AAClC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAA2B,EAAE,KAAmB,EAAsB,EAAE;IACrG,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IACpE,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACpF,CAAC,CAAC;AAEF,iEAAiE;AACjE,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAE5B;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAA2B,EAAE,UAAwB,EAAE,KAAmB,EAAsB,EAAE;IACnI,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,iBAAiB;QAAE,OAAO,SAAS,CAAC;IACnH,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACnC,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3E,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACvG,CAAC,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAChE,CAAC,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/** 二つの英字の語が、終わりの一字の抜けか足しだけ違うか。足した字が語の形を作る字(s、母音の後ろの n)なら違うと見ない。 */
|
|
2
|
+
export declare const isEndLetterApart: (left: string, right: string) => boolean;
|
|
3
|
+
/**
|
|
4
|
+
* 文書での語の使い方(小文字で)。ordinary は名前と読んだ語のうち小文字で書けばふつうの語(Rental、Green)、common は文書が
|
|
5
|
+
* 小文字で書くか、品詞解析が普通名詞と読む語(hurricane、lake)。
|
|
6
|
+
*/
|
|
7
|
+
export type WordUse = {
|
|
8
|
+
readonly ordinary: ReadonlySet<string>;
|
|
9
|
+
readonly common: ReadonlySet<string>;
|
|
10
|
+
};
|
|
11
|
+
export declare const NO_WORD_USE: WordUse;
|
|
12
|
+
/**
|
|
13
|
+
* 終わりの重なった字の一つの抜け(Licensee と License、Bennett と Bennet)で、どちらかを文書が小文字か普通名詞で書く(license)。
|
|
14
|
+
* 語の終わりの抜けと同じく、語の形の違い(License と、その許諾を受ける Licensee)。
|
|
15
|
+
*/
|
|
16
|
+
export declare const isWordFormOf: (left: string, right: string, use: WordUse) => boolean;
|
|
17
|
+
/**
|
|
18
|
+
* 名前の語(words、小文字)の at の語を usual と書いた名前があるとき、その違いを書き損じと見るか。違う語が最後の語(姓)なら、
|
|
19
|
+
* 終わりの一字の抜けか足しか、四字以上の一字違い(oneLetterApart)で、前の語がどれも文書の中で普通名詞として書かない語(Rachel、Mr)
|
|
20
|
+
* のとき。Hurricane Hanna と Hurricane Hannah は名前の違う二つの嵐。最後でない語なら、八字以上の終わりの一字の抜けか足しで、名前の
|
|
21
|
+
* 最後の語がふつうの語(Residences、Products)のとき。人の名の終わりの一字だけ違う名前(Christian と Christiane)は別の人のことが多い。
|
|
22
|
+
*/
|
|
23
|
+
export declare const isEndWordSlip: (words: readonly string[], at: number, usual: string, use: WordUse, oneLetterApart: (left: string, right: string) => boolean) => boolean;
|
|
24
|
+
//# sourceMappingURL=name-end-letter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"name-end-letter.d.ts","sourceRoot":"","sources":["../src/name-end-letter.ts"],"names":[],"mappings":"AAkBA,mEAAmE;AACnE,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,KAAG,OAI9D,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,OAAO,GAAG;IAAE,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;CAAE,CAAC;AAEvG,eAAO,MAAM,WAAW,EAAE,OAAoD,CAAC;AAE/E;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,EAAE,OAAO,MAAM,EAAE,KAAK,OAAO,KAAG,OAGxE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GACxB,OAAO,SAAS,MAAM,EAAE,EACxB,IAAI,MAAM,EACV,OAAO,MAAM,EACb,KAAK,OAAO,EACZ,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,KACvD,OAMF,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// 名前の語の終わりの一字の抜けか足し(Whitmore と Whitmor、Hollybrook と Hollybrooke)。ふつうの語なら語の形の違い
|
|
2
|
+
// (Service と Services、America と American)なので、どちらも名前にしか使わない語に限る。
|
|
3
|
+
const LATIN_WORD = /^[a-z]+$/u;
|
|
4
|
+
const VOWEL = /[aeiouy]$/u;
|
|
5
|
+
/** 足すと別の語の形になる字。s は複数と所有(Rental と Rentals)。 */
|
|
6
|
+
const PLURAL_LETTER = "s";
|
|
7
|
+
/** 母音で終わる語に足すと、その土地の人や言葉の語になる字(Korea と Korean、Rica と Rican)。 */
|
|
8
|
+
const DEMONYM_LETTER = "n";
|
|
9
|
+
/** 比べる語の長さ。三字の語(Ann と Anne)は別の名前のことが多い。 */
|
|
10
|
+
const MIN_END_LETTER_LENGTH = 4;
|
|
11
|
+
/** 終わりの一字の抜けか足しを、名前の最後でない語で見る長さ(Hollybrook と Hollybrooke)。 */
|
|
12
|
+
const MIN_END_SLIP_ANYWHERE = 8;
|
|
13
|
+
const isFormLetter = (shorter, added) => added === PLURAL_LETTER || (added === DEMONYM_LETTER && VOWEL.test(shorter));
|
|
14
|
+
/** 二つの英字の語が、終わりの一字の抜けか足しだけ違うか。足した字が語の形を作る字(s、母音の後ろの n)なら違うと見ない。 */
|
|
15
|
+
export const isEndLetterApart = (left, right) => {
|
|
16
|
+
const [shorter, longer] = left.length < right.length ? [left, right] : [right, left];
|
|
17
|
+
if (!LATIN_WORD.test(shorter) || !LATIN_WORD.test(longer) || shorter.length < MIN_END_LETTER_LENGTH)
|
|
18
|
+
return false;
|
|
19
|
+
return longer.length === shorter.length + 1 && longer.startsWith(shorter) && !isFormLetter(shorter, longer.slice(shorter.length));
|
|
20
|
+
};
|
|
21
|
+
export const NO_WORD_USE = { ordinary: new Set(), common: new Set() };
|
|
22
|
+
/**
|
|
23
|
+
* 終わりの重なった字の一つの抜け(Licensee と License、Bennett と Bennet)で、どちらかを文書が小文字か普通名詞で書く(license)。
|
|
24
|
+
* 語の終わりの抜けと同じく、語の形の違い(License と、その許諾を受ける Licensee)。
|
|
25
|
+
*/
|
|
26
|
+
export const isWordFormOf = (left, right, use) => {
|
|
27
|
+
const [longer, shorter] = left.length > right.length ? [left, right] : [right, left];
|
|
28
|
+
return longer.slice(0, -1) === shorter && (use.common.has(longer) || use.common.has(shorter));
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* 名前の語(words、小文字)の at の語を usual と書いた名前があるとき、その違いを書き損じと見るか。違う語が最後の語(姓)なら、
|
|
32
|
+
* 終わりの一字の抜けか足しか、四字以上の一字違い(oneLetterApart)で、前の語がどれも文書の中で普通名詞として書かない語(Rachel、Mr)
|
|
33
|
+
* のとき。Hurricane Hanna と Hurricane Hannah は名前の違う二つの嵐。最後でない語なら、八字以上の終わりの一字の抜けか足しで、名前の
|
|
34
|
+
* 最後の語がふつうの語(Residences、Products)のとき。人の名の終わりの一字だけ違う名前(Christian と Christiane)は別の人のことが多い。
|
|
35
|
+
*/
|
|
36
|
+
export const isEndWordSlip = (words, at, usual, use, oneLetterApart) => {
|
|
37
|
+
const word = words[at] ?? "";
|
|
38
|
+
const shorter = Math.min(word.length, usual.length);
|
|
39
|
+
if (at < words.length - 1)
|
|
40
|
+
return shorter >= MIN_END_SLIP_ANYWHERE && use.ordinary.has(words.at(-1) ?? "") && isEndLetterApart(word, usual);
|
|
41
|
+
if (words.slice(0, at).some((before) => use.common.has(before)))
|
|
42
|
+
return false;
|
|
43
|
+
return isEndLetterApart(word, usual) || (shorter >= MIN_END_LETTER_LENGTH && oneLetterApart(word, usual));
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=name-end-letter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"name-end-letter.js","sourceRoot":"","sources":["../src/name-end-letter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Token } from "./plugin.ts";
|
|
2
|
+
/** 名前の書き方ごとの、すぐ前に書いた名のすべて。 */
|
|
3
|
+
export type GivenNames = ReadonlyMap<string, readonly string[]>;
|
|
4
|
+
export declare const givenNamesBySurface: (mentions: readonly {
|
|
5
|
+
readonly surface: string;
|
|
6
|
+
readonly givenName?: string | undefined;
|
|
7
|
+
}[]) => GivenNames;
|
|
8
|
+
/** どちらの書き方にも名前のすぐ前の名があり、一つも同じでない(Jeffrey D. Walker と Christopher J. Waller)。別の人。 */
|
|
9
|
+
export declare const areOtherPeople: (left?: readonly string[], right?: readonly string[]) => boolean;
|
|
10
|
+
/**
|
|
11
|
+
* tokens[index] で始まる名前のすぐ前の名。解析器が固有名詞と読んだ、大文字一字に小文字の続く語で、あいだに頭文字一つを挟んでよい。
|
|
12
|
+
* 行を越えては読まない(一行に一人ずつ並べた出席者の名簿)。
|
|
13
|
+
*/
|
|
14
|
+
export declare const givenNameBefore: (tokens: readonly Token[], index: number, source: string) => string | undefined;
|
|
15
|
+
//# sourceMappingURL=name-given-before.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"name-given-before.d.ts","sourceRoot":"","sources":["../src/name-given-before.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAiBzC,8BAA8B;AAC9B,MAAM,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC;AAEhE,eAAO,MAAM,mBAAmB,GAAI,UAAU,SAAS;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,EAAE,KAAG,UAIhG,CAAC;AAElC,oFAAoF;AACpF,eAAO,MAAM,cAAc,GAAI,OAAM,SAAS,MAAM,EAAO,EAAE,QAAO,SAAS,MAAM,EAAO,KAAG,OACV,CAAC;AAEpF;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAI,QAAQ,SAAS,KAAK,EAAE,EAAE,OAAO,MAAM,EAAE,QAAQ,MAAM,KAAG,MAAM,GAAG,SAKlG,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// 姓のすぐ前に書いた名(Jeffrey D. Walker の Jeffrey)。名の違う二人(Jeffrey D. Walker と Christopher J. Waller)は、姓が一字違いでも
|
|
2
|
+
// 別の人で、書き損じではない。
|
|
3
|
+
const GIVEN_NAME = /^\p{Lu}\p{Ll}+$/u;
|
|
4
|
+
const INITIAL = /^\p{Lu}$/u;
|
|
5
|
+
const NEWLINE = /\n/u;
|
|
6
|
+
const isInitial = (token) => INITIAL.test(token?.surface ?? "");
|
|
7
|
+
/** 名と名前のあいだの頭文字(D.、D)を飛ばした、名の語の添字。 */
|
|
8
|
+
const givenIndexOf = (tokens, index) => {
|
|
9
|
+
if (tokens[index - 1]?.surface === "." && isInitial(tokens[index - 2]))
|
|
10
|
+
return index - 3;
|
|
11
|
+
return isInitial(tokens[index - 1]) ? index - 2 : index - 1;
|
|
12
|
+
};
|
|
13
|
+
export const givenNamesBySurface = (mentions) => mentions.reduce((names, { surface, givenName }) => {
|
|
14
|
+
const known = names.get(surface) ?? [];
|
|
15
|
+
return givenName === undefined || known.includes(givenName) ? names : names.set(surface, [...known, givenName]);
|
|
16
|
+
}, new Map());
|
|
17
|
+
/** どちらの書き方にも名前のすぐ前の名があり、一つも同じでない(Jeffrey D. Walker と Christopher J. Waller)。別の人。 */
|
|
18
|
+
export const areOtherPeople = (left = [], right = []) => left.length > 0 && right.length > 0 && !left.some((name) => right.includes(name));
|
|
19
|
+
/**
|
|
20
|
+
* tokens[index] で始まる名前のすぐ前の名。解析器が固有名詞と読んだ、大文字一字に小文字の続く語で、あいだに頭文字一つを挟んでよい。
|
|
21
|
+
* 行を越えては読まない(一行に一人ずつ並べた出席者の名簿)。
|
|
22
|
+
*/
|
|
23
|
+
export const givenNameBefore = (tokens, index, source) => {
|
|
24
|
+
const name = tokens[index];
|
|
25
|
+
const given = tokens[givenIndexOf(tokens, index)];
|
|
26
|
+
if (name === undefined || given === undefined || given.pos !== "PROPN" || !GIVEN_NAME.test(given.surface))
|
|
27
|
+
return undefined;
|
|
28
|
+
return NEWLINE.test(source.slice(given.span.end, name.span.start)) ? undefined : given.surface;
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=name-given-before.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"name-given-before.js","sourceRoot":"","sources":["../src/name-given-before.ts"],"names":[],"mappings":"AAEA,sGAAsG;AACtG,iBAAiB;AAEjB,MAAM,UAAU,GAAG,kBAAkB,CAAC;AACtC,MAAM,OAAO,GAAG,WAAW,CAAC;AAC5B,MAAM,OAAO,GAAG,KAAK,CAAC;AAEtB,MAAM,SAAS,GAAG,CAAC,KAAwB,EAAW,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;AAE5F,sCAAsC;AACtC,MAAM,YAAY,GAAG,CAAC,MAAwB,EAAE,KAAa,EAAU,EAAE;IACvE,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,OAAO,KAAK,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,GAAG,CAAC,CAAC;IACzF,OAAO,SAAS,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;AAC9D,CAAC,CAAC;AAKF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,QAA0F,EAAc,EAAE,CAC5I,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE;IAChD,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACvC,OAAO,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;AAClH,CAAC,EAAE,IAAI,GAAG,EAAoB,CAAC,CAAC;AAElC,oFAAoF;AACpF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAA0B,EAAE,EAAE,QAA2B,EAAE,EAAW,EAAE,CACrG,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAEpF;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAwB,EAAE,KAAa,EAAE,MAAc,EAAsB,EAAE;IAC7G,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IAClD,IAAI,IAAI,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5H,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;AACjG,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"name-neighbours.d.ts","sourceRoot":"","sources":["../src/name-neighbours.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAgCtD;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAAI,UAAU,SAAS,WAAW,EAAE,EAAE,QAAQ,MAAM,KAAG,WAAW,
|
|
1
|
+
{"version":3,"file":"name-neighbours.d.ts","sourceRoot":"","sources":["../src/name-neighbours.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAgCtD;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAAI,UAAU,SAAS,WAAW,EAAE,EAAE,QAAQ,MAAM,KAAG,WAAW,EAsBjG,CAAC"}
|
package/dist/name-neighbours.js
CHANGED
|
@@ -43,11 +43,12 @@ export const withKnownNeighbours = (mentions, source) => {
|
|
|
43
43
|
surface: `${before} ${mention.surface}`,
|
|
44
44
|
offset: mention.offset - 1 - before.length,
|
|
45
45
|
reading: undefined,
|
|
46
|
+
givenNameReading: undefined,
|
|
46
47
|
words: [before, ...mention.words],
|
|
47
48
|
};
|
|
48
49
|
}
|
|
49
50
|
if (after !== undefined && known.has(`${mention.surface} ${after}`) && !taken(end + 1, end + 1 + after.length)) {
|
|
50
|
-
return { ...mention, surface: `${mention.surface} ${after}`, reading: undefined, words: [...mention.words, after] };
|
|
51
|
+
return { ...mention, surface: `${mention.surface} ${after}`, reading: undefined, givenNameReading: undefined, words: [...mention.words, after] };
|
|
51
52
|
}
|
|
52
53
|
return mention;
|
|
53
54
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"name-neighbours.js","sourceRoot":"","sources":["../src/name-neighbours.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"name-neighbours.js","sourceRoot":"","sources":["../src/name-neighbours.ts"],"names":[],"mappings":"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"}
|
package/dist/name-separator.d.ts
CHANGED
|
@@ -5,6 +5,12 @@ export type OrganizationWords = {
|
|
|
5
5
|
readonly units: ReadonlySet<string>;
|
|
6
6
|
readonly forms: readonly string[];
|
|
7
7
|
};
|
|
8
|
+
/**
|
|
9
|
+
* 項目と値を分ける空白。「所属:経済学部 経済学科 1年」「振込先:みなと銀行 普通 1234567」のように項目名とコロンの後ろに値の組を並べた行の組と組のあいだか、
|
|
10
|
+
* 「最高速度 40km/h」「(内線 3839)」のように短い項目名と値を並べただけの組の、名と値のあいだ。値の区切りで、日本語と数字のあいだの空け方ではない。
|
|
11
|
+
* boundary は空けた数字の前の境目(text[offset] が空白)。tokens は文書全体の座標で、base は text の先頭の位置。
|
|
12
|
+
*/
|
|
13
|
+
export declare const isFieldSeparator: (text: string, boundary: Boundary, tokens: readonly Token[] | undefined, base: number) => boolean;
|
|
8
14
|
/**
|
|
9
15
|
* 「株式会社あおば電子 経営企画部 IR担当」「東京本社 PR室」のように、名前だけを空白で並べた行で、空白の両側がどちらも組織の名前のときの空白。
|
|
10
16
|
* 名前と名前の区切りで、英字の前後の空け方ではない。文の中の空白(この IT システムは)や、組織の名前でない語のあいだ(生成AI 活用事例、Patch リリース)は区切りと読まない。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"name-separator.d.ts","sourceRoot":"","sources":["../src/name-separator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAQ,KAAK,EAAE,MAAM,aAAa,CAAC;AAK/C,sFAAsF;AACtF,MAAM,MAAM,iBAAiB,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"name-separator.d.ts","sourceRoot":"","sources":["../src/name-separator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAQ,KAAK,EAAE,MAAM,aAAa,CAAC;AAK/C,sFAAsF;AACtF,MAAM,MAAM,iBAAiB,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC;AAgH3G;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,EAAE,UAAU,QAAQ,EAAE,QAAQ,SAAS,KAAK,EAAE,GAAG,SAAS,EAAE,MAAM,MAAM,KAAG,OAGvH,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,MAAM,MAAM,EAAE,UAAU,QAAQ,EAAE,QAAQ,SAAS,KAAK,EAAE,GAAG,SAAS,EAAE,MAAM,MAAM,EAAE,OAAO,iBAAiB,KAAG,OAMhJ,CAAC"}
|
package/dist/name-separator.js
CHANGED
|
@@ -17,6 +17,86 @@ const tokensIn = (tokens, span, base) => tokens.filter((token) => token.span.sta
|
|
|
17
17
|
const isNameLine = (lineTokens) => lineTokens.length > 0 && lineTokens.every((token) => NAME_LINE_POS.has(token.pos));
|
|
18
18
|
/** 空白で区切った語が、組織の名前か。最後の語が部署・拠点・役目の語(経営企画部、IR担当)か、会社の形の語で始まるか終わる(株式会社ABC)。 */
|
|
19
19
|
const isOrganizationName = (word, wordTokens, words) => words.units.has(wordTokens.at(-1)?.surface ?? "") || words.forms.some((form) => word.length > form.length && (word.startsWith(form) || word.endsWith(form)));
|
|
20
|
+
/** 行の頭の項目名とコロン(所属:、振込先:)。項目名は空白も数字も含まない短い語。 */
|
|
21
|
+
const FIELD_LABEL = /^[ \t]*(?:[-*+][ \t]+)?[^\s::。\d]{1,12}[::][ \t\u3000]*/u;
|
|
22
|
+
/** 文の終わり。値を文で書いた行(会場:本社 5階で行います。)の空白は、文の中の空け方として数える。 */
|
|
23
|
+
const SENTENCE_END = /[。!?]/u;
|
|
24
|
+
/** 値を句で書いた行(目標:参加者 100人を想定)に出る品詞。名前と番号を並べた値には出ない。 */
|
|
25
|
+
const CLAUSE_POS = new Set(["VERB", "AUX", "ADP"]);
|
|
26
|
+
/** 数の前に書いて量の一部になる語(約 3 か月、およそ 3 日、全 5 店舗)や、文の中の語(本社は 5階)の品詞。 */
|
|
27
|
+
const QUANTITY_LEAD_POS = new Set(["ADJ", "ADV", "ADP", "AUX", "VERB", "SCONJ", "PART"]);
|
|
28
|
+
/** 値の組の最も短い長さ。1 字の語(計 5件)は量の前置き。 */
|
|
29
|
+
const MIN_PART_LENGTH = 2;
|
|
30
|
+
/** 組を囲む字(括弧・表の升目の線)。組が囲みの中で読点で並ぶこともある(電話 03-1234-5678、内線 3839)。 */
|
|
31
|
+
const LAST_ENCLOSURE_OPEN = /[((||][^((||]*$/u;
|
|
32
|
+
const ENCLOSURE_CLOSE = /[))||]/u;
|
|
33
|
+
/** 組と組を分ける読点。数の桁の区切り(1,000)のコンマは除く。 */
|
|
34
|
+
const PAIR_COMMA = /[、,]|(?<!\d),|,(?!\d)/gu;
|
|
35
|
+
/** 行の頭の字下げと箇条書きの印(「- 」「1. 」)。 */
|
|
36
|
+
const PAIR_LEAD = /^[ \t\u3000]*(?:(?:[-*+]|\d{1,3}[..))])[ \t\u3000]+)?/u;
|
|
37
|
+
/** 項目名: 空白・数字・区切りの字を含まない短い語。値: 数字で始まり、空白も区切りも文の終わりも含まない一続き(桁の区切りのコンマは含む)。 */
|
|
38
|
+
const PAIR_LABEL = /^[^\s\d、,,()()||::。!?]{2,12}$/u;
|
|
39
|
+
const PAIR_VALUE = /^\d(?:[^\s、,,()()||。!?]|(?<=\d),(?=\d))*$/u;
|
|
40
|
+
/** 項目名に出る品詞。名詞だけで、助詞・副詞(およそ)・接頭の語(約)を含めば、量の前置きか文。 */
|
|
41
|
+
const PAIR_LABEL_POS = new Set(["NOUN", "PROPN"]);
|
|
42
|
+
const SPACE_RUN = /^[ \t\u3000]*/u;
|
|
43
|
+
/** at を含む囲み: 括弧か表の升目の線の内側、無ければ行(字下げと箇条書きの印の後ろ)。 */
|
|
44
|
+
const enclosureAround = (text, line, at) => {
|
|
45
|
+
const open = LAST_ENCLOSURE_OPEN.exec(text.slice(line.start, at));
|
|
46
|
+
const start = open === null ? line.start + (PAIR_LEAD.exec(text.slice(line.start, line.end))?.[0].length ?? 0) : line.start + open.index + 1;
|
|
47
|
+
const close = text.slice(at, line.end).search(ENCLOSURE_CLOSE);
|
|
48
|
+
return { start, end: close === -1 ? line.end : at + close };
|
|
49
|
+
};
|
|
50
|
+
/** 囲みの中で at を含む組。読点で区切り、前後の空白を除く。 */
|
|
51
|
+
const pairAround = (text, enclosure, at) => {
|
|
52
|
+
const commas = [...text.slice(enclosure.start, enclosure.end).matchAll(PAIR_COMMA)].map((match) => enclosure.start + match.index);
|
|
53
|
+
const rawStart = (commas.filter((comma) => comma < at).at(-1) ?? enclosure.start - 1) + 1;
|
|
54
|
+
const rawEnd = commas.find((comma) => comma > at) ?? enclosure.end;
|
|
55
|
+
const start = rawStart + (SPACE_RUN.exec(text.slice(rawStart, at))?.[0].length ?? 0);
|
|
56
|
+
return { start, end: rawStart + text.slice(rawStart, rawEnd).trimEnd().length };
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* 「最高速度 40km/h」「(内線 3839~40)」「- 定員 30名」のように、短い項目名と、それが名指す値を空白一つで並べただけの組の、名と値のあいだの空白。
|
|
60
|
+
* 組は行・括弧の中・表の升目にそれだけで書くか、読点で並べる。項目の区切りで、文の中の空け方ではない。
|
|
61
|
+
* 囲みの中に助詞や動詞がある(定員 30名で行います、参加者 30名、来場者50名を見込みます)、値の後ろに語が続く(内線 3839 まで)、
|
|
62
|
+
* 項目名が 1 字(約 30名)か名詞でない語を含む組は、文の中の空白として数える。
|
|
63
|
+
*/
|
|
64
|
+
const isLabelledValue = (text, boundary, tokens, base) => {
|
|
65
|
+
const enclosure = enclosureAround(text, lineAround(text, boundary.offset), boundary.offset);
|
|
66
|
+
const pair = pairAround(text, enclosure, boundary.offset);
|
|
67
|
+
const label = { start: pair.start, end: boundary.offset };
|
|
68
|
+
if (!PAIR_LABEL.test(text.slice(label.start, label.end)) || !PAIR_VALUE.test(text.slice(boundary.offset + 1, pair.end)))
|
|
69
|
+
return false;
|
|
70
|
+
if (SENTENCE_END.test(text.slice(enclosure.start, enclosure.end)))
|
|
71
|
+
return false;
|
|
72
|
+
const labelTokens = tokensIn(tokens, label, base);
|
|
73
|
+
return (labelTokens.length > 0 &&
|
|
74
|
+
labelTokens.every((token) => PAIR_LABEL_POS.has(token.pos)) &&
|
|
75
|
+
!tokensIn(tokens, enclosure, base).some((token) => CLAUSE_POS.has(token.pos)));
|
|
76
|
+
};
|
|
77
|
+
/** 項目名とコロンの後ろに値の組を並べた行の、組と、数で始まる次の組のあいだの空白か。 */
|
|
78
|
+
const isColonFieldPart = (text, boundary, tokens, base) => {
|
|
79
|
+
const line = lineAround(text, boundary.offset);
|
|
80
|
+
const label = FIELD_LABEL.exec(text.slice(line.start, line.end));
|
|
81
|
+
if (label === null || SENTENCE_END.test(text.slice(line.start, line.end)))
|
|
82
|
+
return false;
|
|
83
|
+
const valueStart = line.start + label[0].length;
|
|
84
|
+
if (tokensIn(tokens, { start: valueStart, end: line.end }, base).some((token) => CLAUSE_POS.has(token.pos)))
|
|
85
|
+
return false;
|
|
86
|
+
const partStart = Math.max(wordStart(text, boundary.offset), valueStart);
|
|
87
|
+
const partEnd = tokens.find((token) => token.span.end === base + boundary.offset);
|
|
88
|
+
return boundary.offset - partStart >= MIN_PART_LENGTH && partEnd !== undefined && !QUANTITY_LEAD_POS.has(partEnd.pos);
|
|
89
|
+
};
|
|
90
|
+
/**
|
|
91
|
+
* 項目と値を分ける空白。「所属:経済学部 経済学科 1年」「振込先:みなと銀行 普通 1234567」のように項目名とコロンの後ろに値の組を並べた行の組と組のあいだか、
|
|
92
|
+
* 「最高速度 40km/h」「(内線 3839)」のように短い項目名と値を並べただけの組の、名と値のあいだ。値の区切りで、日本語と数字のあいだの空け方ではない。
|
|
93
|
+
* boundary は空けた数字の前の境目(text[offset] が空白)。tokens は文書全体の座標で、base は text の先頭の位置。
|
|
94
|
+
*/
|
|
95
|
+
export const isFieldSeparator = (text, boundary, tokens, base) => {
|
|
96
|
+
if (tokens === undefined || boundary.kind !== "before-digit" || !boundary.spaced)
|
|
97
|
+
return false;
|
|
98
|
+
return isColonFieldPart(text, boundary, tokens, base) || isLabelledValue(text, boundary, tokens, base);
|
|
99
|
+
};
|
|
20
100
|
/**
|
|
21
101
|
* 「株式会社あおば電子 経営企画部 IR担当」「東京本社 PR室」のように、名前だけを空白で並べた行で、空白の両側がどちらも組織の名前のときの空白。
|
|
22
102
|
* 名前と名前の区切りで、英字の前後の空け方ではない。文の中の空白(この IT システムは)や、組織の名前でない語のあいだ(生成AI 活用事例、Patch リリース)は区切りと読まない。
|