chaffjs 0.32.0 → 0.34.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/README.md +7 -0
- package/dist/api.d.ts +7 -1
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js.map +1 -1
- package/dist/cli-text.d.ts.map +1 -1
- package/dist/cli-text.js +6 -4
- package/dist/cli-text.js.map +1 -1
- 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 +11 -3
- package/dist/company-names.d.ts.map +1 -1
- package/dist/company-names.js +27 -14
- package/dist/company-names.js.map +1 -1
- package/dist/cross-run.d.ts.map +1 -1
- package/dist/cross-run.js +1 -0
- package/dist/cross-run.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/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/agreement-slip.d.ts.map +1 -1
- package/dist/detectors/agreement-slip.js +4 -0
- package/dist/detectors/agreement-slip.js.map +1 -1
- 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/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/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/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/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 +12 -2
- package/dist/detectors/due-date.js.map +1 -1
- package/dist/detectors/fact-consistency.d.ts.map +1 -1
- package/dist/detectors/fact-consistency.js +12 -13
- 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 +3 -0
- package/dist/detectors/formula-amount.d.ts.map +1 -0
- package/dist/detectors/formula-amount.js +31 -0
- package/dist/detectors/formula-amount.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/installment-total-mismatch.d.ts.map +1 -1
- package/dist/detectors/installment-total-mismatch.js +28 -19
- package/dist/detectors/installment-total-mismatch.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/name-variant.d.ts.map +1 -1
- package/dist/detectors/name-variant.js +34 -7
- 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/orthographic-variant.d.ts.map +1 -1
- package/dist/detectors/orthographic-variant.js +4 -3
- 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/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/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/formula-amount.d.ts +3 -0
- package/dist/detectors/registry/formula-amount.d.ts.map +1 -0
- package/dist/detectors/registry/formula-amount.js +3 -0
- package/dist/detectors/registry/formula-amount.js.map +1 -0
- 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/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/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 +1 -1
- package/dist/detectors/structure-tree.d.ts.map +1 -1
- package/dist/detectors/structure-tree.js +7 -2
- 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/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/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/eval.js +3 -3
- package/dist/eval.js.map +1 -1
- 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-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 +1 -1
- package/dist/facts/table-facts.d.ts.map +1 -1
- package/dist/facts/table-facts.js +13 -9
- 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/fix-plan/text.js +2 -2
- package/dist/fix-plan/text.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/lexicon-genres.d.ts +7 -0
- package/dist/lexicon-genres.d.ts.map +1 -0
- package/dist/lexicon-genres.js +8 -0
- package/dist/lexicon-genres.js.map +1 -0
- 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 +19 -0
- package/dist/name-end-letter.d.ts.map +1 -0
- package/dist/name-end-letter.js +37 -0
- package/dist/name-end-letter.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 +29 -0
- package/dist/name-separator.js.map +1 -1
- package/dist/name-variants.d.ts +6 -3
- package/dist/name-variants.d.ts.map +1 -1
- package/dist/name-variants.js +37 -10
- package/dist/name-variants.js.map +1 -1
- 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/plugin.d.ts +6 -0
- package/dist/plugin.d.ts.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 +8 -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/run.d.ts.map +1 -1
- package/dist/run.js +1 -0
- package/dist/run.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/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/date-range.d.ts +3 -2
- package/dist/structure/date-range.d.ts.map +1 -1
- package/dist/structure/date-range.js +4 -4
- package/dist/structure/date-range.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/formula-amount.d.ts +38 -0
- package/dist/structure/formula-amount.d.ts.map +1 -0
- package/dist/structure/formula-amount.js +187 -0
- package/dist/structure/formula-amount.js.map +1 -0
- package/dist/structure/installment-fee.d.ts +52 -0
- package/dist/structure/installment-fee.d.ts.map +1 -0
- package/dist/structure/installment-fee.js +110 -0
- package/dist/structure/installment-fee.js.map +1 -0
- package/dist/structure/installment-total.d.ts +7 -0
- package/dist/structure/installment-total.d.ts.map +1 -1
- package/dist/structure/installment-total.js +6 -6
- package/dist/structure/installment-total.js.map +1 -1
- package/dist/structure/labelled-date-order.d.ts +31 -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 +7 -1
- package/dist/structure/labelled-order.d.ts.map +1 -1
- package/dist/structure/labelled-order.js +10 -3
- 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/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/runs.d.ts.map +1 -1
- package/dist/structure/runs.js +9 -1
- package/dist/structure/runs.js.map +1 -1
- 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/start-end-range.d.ts +30 -0
- package/dist/structure/start-end-range.d.ts.map +1 -0
- package/dist/structure/start-end-range.js +79 -0
- package/dist/structure/start-end-range.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/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 +4 -4
- package/profiles/listing.yaml +1 -1
- package/profiles/property-sale.yaml +21 -0
- package/rules/closing-balance-mismatch.yaml +3 -3
- package/rules/date-range-reversed.yaml +4 -4
- package/rules/due-before-issue.yaml +9 -5
- package/rules/fact-conflict.yaml +2 -2
- package/rules/formula-amount-mismatch.yaml +67 -0
- package/rules/heading-echo.yaml +2 -2
- package/rules/installment-total-mismatch.yaml +9 -4
- 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/name-variant.yaml +5 -2
- package/rules/no-lead.yaml +2 -2
- package/rules/number-without-unit.yaml +2 -2
- package/rules/orthographic-variant.yaml +3 -3
- package/rules/reference-number-variant.yaml +3 -3
- package/rules/toki-as-condition.yaml +71 -0
- package/rules/total-mismatch.yaml +4 -4
- package/rules/unknown-word.yaml +2 -2
- package/rules/use-before-definition.yaml +2 -2
- package/src/api.ts +11 -2
- package/src/cli-text.ts +6 -4
- 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 +52 -17
- package/src/cross-run.ts +1 -0
- package/src/custom/no-rewrite.ts +2 -0
- package/src/custom/parse.ts +18 -2
- package/src/detectors/age-words.ts +12 -0
- package/src/detectors/agreement-slip.ts +3 -0
- package/src/detectors/annual-pay-mismatch.ts +3 -18
- package/src/detectors/blank-structure.ts +4 -3
- package/src/detectors/closing-balance-mismatch.ts +1 -0
- package/src/detectors/code-fences.ts +10 -0
- 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/cross-facts.ts +2 -1
- package/src/detectors/custom.ts +9 -2
- package/src/detectors/document-shape.ts +8 -0
- package/src/detectors/due-date.ts +17 -7
- package/src/detectors/fact-consistency.ts +13 -17
- package/src/detectors/form-line.ts +47 -0
- package/src/detectors/formula-amount.ts +43 -0
- package/src/detectors/heading-claim.ts +76 -0
- package/src/detectors/heading-echo.ts +32 -1
- package/src/detectors/installment-total-mismatch.ts +35 -24
- package/src/detectors/list-parallel.ts +46 -7
- package/src/detectors/name-variant.ts +45 -8
- package/src/detectors/number-unit.ts +35 -9
- package/src/detectors/orthographic-variant.ts +5 -3
- package/src/detectors/orthography.ts +17 -8
- 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/registry/condition-toki.ts +4 -0
- package/src/detectors/registry/formula-amount.ts +4 -0
- package/src/detectors/rent-multiple-mismatch.ts +2 -18
- package/src/detectors/row-sentence-amounts.ts +5 -20
- package/src/detectors/stated-amounts.ts +20 -0
- package/src/detectors/step-time-sum.ts +2 -1
- package/src/detectors/structure-tree.ts +7 -2
- package/src/detectors/team.ts +13 -7
- package/src/detectors/time-order.ts +6 -3
- 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/eval.ts +3 -3
- 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-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 +7 -4
- package/src/facts/term-values.ts +94 -13
- package/src/fix-plan/text.ts +2 -2
- 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/lexicon-genres.ts +11 -0
- package/src/name-char-reading.ts +16 -0
- package/src/name-end-letter.ts +52 -0
- package/src/name-neighbours.ts +2 -1
- package/src/name-separator.ts +32 -0
- package/src/name-variants.ts +54 -13
- package/src/number-name.ts +12 -3
- package/src/plugin.ts +6 -0
- package/src/profile/cue-lines.ts +14 -0
- package/src/profile/parse.ts +11 -2
- package/src/reference-numbers.ts +1 -1
- package/src/run.ts +1 -0
- 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/closing-balance.ts +46 -8
- package/src/structure/date-range.ts +4 -3
- 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/formula-amount.ts +236 -0
- package/src/structure/installment-fee.ts +201 -0
- package/src/structure/installment-total.ts +6 -6
- package/src/structure/labelled-date-order.ts +105 -21
- package/src/structure/labelled-order.ts +21 -10
- package/src/structure/line-amount-label.ts +2 -1
- package/src/structure/line-amount.ts +1 -11
- package/src/structure/prose-total.ts +81 -2
- package/src/structure/runs.ts +10 -1
- package/src/structure/signed-date-line.ts +78 -0
- package/src/structure/start-end-range.ts +120 -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/subject-codes.ts +105 -0
- package/src/unlabelled-references.ts +24 -16
|
@@ -1,15 +1,22 @@
|
|
|
1
|
+
import { conjugatedStartsOutside } from "./conjugated-entry.js";
|
|
1
2
|
import { calendarRuns, calendarUnitsOf } from "../calendar-number.js";
|
|
2
3
|
import { escapeRegExp, latinBoundaries, occurrencesOutside } from "../orthography.js";
|
|
3
|
-
import { minorityReport } from "../spacing-minority.js";
|
|
4
|
+
import { minorityReport, withoutSideOnTie } from "../spacing-minority.js";
|
|
4
5
|
import { isWithinAny, quotedSpans } from "../quoted-span.js";
|
|
5
6
|
import { digitRunAround, endsWithDivisionLabel, isNumberName, sequenceLabelStarts } from "../number-name.js";
|
|
6
7
|
import { isSpacedLocationPart } from "../location-part.js";
|
|
7
|
-
import { isNameSeparator } from "../name-separator.js";
|
|
8
|
+
import { isFieldSeparator, isNameSeparator } from "../name-separator.js";
|
|
8
9
|
import { addressSpans, clockTimeSpans, identifierSpans, isInsideSpan } from "../spacing-code.js";
|
|
10
|
+
/** 書いた形の出現に、動詞の活用した形(行う → 行います)を足したもの。同じ位置は一度だけ。 */
|
|
11
|
+
const avoidedStarts = (sentence, entry, use) => {
|
|
12
|
+
const written = occurrencesOutside(sentence.text, entry.pattern, use);
|
|
13
|
+
const conjugated = conjugatedStartsOutside(sentence, entry, use).filter((at) => !written.includes(at));
|
|
14
|
+
return [...written, ...conjugated].toSorted((left, right) => left - right);
|
|
15
|
+
};
|
|
9
16
|
/** チームが chaff.yaml の prefer に書いた「使わない書き方」。書いていなければ何も言わない。 */
|
|
10
17
|
export const preferredTerm = (doc, options) => {
|
|
11
|
-
const pairs = (options.lexicon ?? []).flatMap((entry) => (entry.instead_of === undefined ? [] : [{ avoid: entry.pattern, use: entry.instead_of }]));
|
|
12
|
-
const hits = doc.sentences.flatMap((sentence) => pairs.flatMap((pair) =>
|
|
18
|
+
const pairs = (options.lexicon ?? []).flatMap((entry) => (entry.instead_of === undefined ? [] : [{ entry, avoid: entry.pattern, use: entry.instead_of }]));
|
|
19
|
+
const hits = doc.sentences.flatMap((sentence) => pairs.flatMap((pair) => avoidedStarts(sentence, pair.entry, pair.use).map((at) => ({ sentence, at, pair }))));
|
|
13
20
|
if (hits.length === 0 || hits.length < options.limit)
|
|
14
21
|
return [];
|
|
15
22
|
return hits.map((hit) => ({
|
|
@@ -55,7 +62,7 @@ const besideSpan = (spans, boundary) => isInsideSpan(spans, boundary.offset - 1)
|
|
|
55
62
|
* 日付・時刻は前の境目(「は 9月」「午後3時」「令和 3 年」)も数えない。日付はまとめて一つの書き方で、数量の空け方の票にはしない。コロンで書いた時刻(13:30)も同じ。
|
|
56
63
|
* メールアドレス・URL の前後の境目も数えない(spacing-code.ts)。「予約番号 MN-48215 を」の番号の前後も、番号を文から区切る空白なので数えない。
|
|
57
64
|
* 「本社 5階」のように名前の後ろに空白で区切った階・部屋の番号の前の空白も、所在の組の区切りなので数えない(location-part.ts)。
|
|
58
|
-
* 「経営企画部 IR
|
|
65
|
+
* 「経営企画部 IR担当」のように名前だけを並べた行で、名前と名前を分ける空白も、「所属:経済学科 1年」のように項目の値の組を分ける空白も数えない(name-separator.ts)。
|
|
59
66
|
*/
|
|
60
67
|
const isCounted = (sentence, boundary, context, codes) => {
|
|
61
68
|
if (followsItemNumber(sentence.text, boundary, context.itemNumbers) || besideSpan(codes.identifiers, boundary))
|
|
@@ -73,6 +80,8 @@ const isCounted = (sentence, boundary, context, codes) => {
|
|
|
73
80
|
return false;
|
|
74
81
|
if (boundary.kind === "before-digit" && isSpacedLocationPart(sentence.text, run, sentence.tokens, sentence.span.start, context.floors))
|
|
75
82
|
return false;
|
|
83
|
+
if (isFieldSeparator(sentence.text, boundary, sentence.tokens, sentence.span.start))
|
|
84
|
+
return false;
|
|
76
85
|
return !isNumberName(sentence.text, run, sentence.tokens, sentence.span.start, context);
|
|
77
86
|
};
|
|
78
87
|
const patternList = (doc, id) => (doc.lexicons[id] ?? []).map((entry) => entry.pattern);
|
|
@@ -98,9 +107,9 @@ const findingAt = (entry, values, variant) => ({
|
|
|
98
107
|
...(variant === undefined ? {} : { variant }),
|
|
99
108
|
values: { ...values, offset: entry.sentence.span.start + entry.offset },
|
|
100
109
|
});
|
|
101
|
-
/** 一つの種類の境目の指摘。少ないほうを 1 箇所ずつか、書き方が二通りあれば 1 件で(spacing-minority.ts
|
|
110
|
+
/** 一つの種類の境目の指摘。少ないほうを 1 箇所ずつか、書き方が二通りあれば 1 件で(spacing-minority.ts)。同数ならどちらの側にも立たない。 */
|
|
102
111
|
const findingsOf = (kind, ofKind, limit) => {
|
|
103
|
-
const report = minorityReport(ofKind, limit);
|
|
112
|
+
const report = withoutSideOnTie(minorityReport(ofKind, limit), ofKind);
|
|
104
113
|
if (report === undefined)
|
|
105
114
|
return [];
|
|
106
115
|
if (report.mode === "mixed") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orthography.js","sourceRoot":"","sources":["../../src/detectors/orthography.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAsB,MAAM,uBAAuB,CAAC;AAC1F,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAmC,MAAM,mBAAmB,CAAC;AACvH,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"orthography.js","sourceRoot":"","sources":["../../src/detectors/orthography.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ProseDocument, StructureNode } from "../plugin.ts";
|
|
2
|
+
import { type FactValue } from "../facts/fact-values.ts";
|
|
3
|
+
/** 文書の値に、何あたりか(1kmあたり15円 の km)を付ける。 */
|
|
4
|
+
export declare const perUnitsOf: <T extends FactValue>(doc: ProseDocument, values: readonly T[]) => T[];
|
|
5
|
+
/** 木の数量と日付と固有名詞(factValues)に、何あたりかを付けたもの。 */
|
|
6
|
+
export declare const perUnitValues: (doc: ProseDocument, tree: StructureNode) => FactValue[];
|
|
7
|
+
//# sourceMappingURL=per-unit-words.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"per-unit-words.d.ts","sourceRoot":"","sources":["../../src/detectors/per-unit-words.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAEjE,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAiBrE,uCAAuC;AACvC,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,SAAS,EAAE,KAAK,aAAa,EAAE,QAAQ,SAAS,CAAC,EAAE,KAAG,CAAC,EAA2D,CAAC;AAExJ,6CAA6C;AAC7C,eAAO,MAAM,aAAa,GAAI,KAAK,aAAa,EAAE,MAAM,aAAa,KAAG,SAAS,EAAmE,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { withPerUnits } from "../facts/per-unit.js";
|
|
2
|
+
import { factValues } from "../facts/fact-values.js";
|
|
3
|
+
import { nameSpans } from "../compare/proper-nouns.js";
|
|
4
|
+
const marksOf = (doc, id) => (doc.lexicons[id] ?? []).map((entry) => ({ pattern: entry.pattern, group: entry.group ?? entry.pattern }));
|
|
5
|
+
/** 何あたりかの語: 決まった印(per-unit-mark)、型(fact-per-unit)、単位の語(rate-unit)、読まない百分率(percent-unit)、単価の列の見出し(unit-price-column)。 */
|
|
6
|
+
const perUnitWordsOf = (doc) => ({
|
|
7
|
+
marks: marksOf(doc, "per-unit-mark"),
|
|
8
|
+
templates: (doc.lexicons["fact-per-unit"] ?? []).map((entry) => ({ pattern: entry.pattern, position: entry.position ?? "before" })),
|
|
9
|
+
units: marksOf(doc, "rate-unit"),
|
|
10
|
+
percentUnits: (doc.lexicons["percent-unit"] ?? []).map((entry) => entry.pattern),
|
|
11
|
+
priceHeadings: (doc.lexicons["unit-price-column"] ?? []).map((entry) => entry.group === undefined ? { pattern: entry.pattern } : { pattern: entry.pattern, group: entry.group }),
|
|
12
|
+
});
|
|
13
|
+
/** 文書の値に、何あたりか(1kmあたり15円 の km)を付ける。 */
|
|
14
|
+
export const perUnitsOf = (doc, values) => withPerUnits(doc.source, values, perUnitWordsOf(doc));
|
|
15
|
+
/** 木の数量と日付と固有名詞(factValues)に、何あたりかを付けたもの。 */
|
|
16
|
+
export const perUnitValues = (doc, tree) => perUnitsOf(doc, factValues(tree, doc.source, nameSpans(doc)));
|
|
17
|
+
//# sourceMappingURL=per-unit-words.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"per-unit-words.js","sourceRoot":"","sources":["../../src/detectors/per-unit-words.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAA6D,MAAM,sBAAsB,CAAC;AAC/G,OAAO,EAAE,UAAU,EAAkB,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,MAAM,OAAO,GAAG,CAAC,GAAkB,EAAE,EAAU,EAAiB,EAAE,CAChE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAe,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;AAE1H,wHAAwH;AACxH,MAAM,cAAc,GAAG,CAAC,GAAkB,EAAgB,EAAE,CAAC,CAAC;IAC5D,KAAK,EAAE,OAAO,CAAC,GAAG,EAAE,eAAe,CAAC;IACpC,SAAS,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,QAAQ,EAAE,CAAC,CAAC;IACpJ,KAAK,EAAE,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC;IAChC,YAAY,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;IAChF,aAAa,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACrE,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CACxG;CACF,CAAC,CAAC;AAEH,uCAAuC;AACvC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAsB,GAAkB,EAAE,MAAoB,EAAO,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;AAExJ,6CAA6C;AAC7C,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAkB,EAAE,IAAmB,EAAe,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"period-multiple-mismatch.d.ts","sourceRoot":"","sources":["../../src/detectors/period-multiple-mismatch.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAA0B,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"period-multiple-mismatch.d.ts","sourceRoot":"","sources":["../../src/detectors/period-multiple-mismatch.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAA0B,MAAM,cAAc,CAAC;AAuBrE,eAAO,MAAM,sBAAsB,EAAE,QAUpC,CAAC"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { periodMultipleMismatches } from "../structure/period-multiple.js";
|
|
2
|
-
import { scaledAmountOf, scaleWordsOf } from "./amount-scale.js";
|
|
3
|
-
import { amountsIn, formsOf } from "./currency-notation.js";
|
|
4
2
|
import { proseAndTablesOf } from "../table-text.js";
|
|
5
3
|
import { quoteAround } from "./quote-around.js";
|
|
4
|
+
import { statedAmountsOf } from "./stated-amounts.js";
|
|
6
5
|
const patternsOf = (doc, lexicon, group) => (doc.lexicons[lexicon] ?? []).filter((entry) => group === undefined || entry.group === group).map((entry) => entry.pattern);
|
|
7
6
|
const numberWordsOf = (doc) => (doc.lexicons["number-word"] ?? []).flatMap((entry) => entry.group === "digit" && entry.weight !== undefined ? [{ word: entry.pattern, value: entry.weight }] : []);
|
|
8
7
|
const wordsOf = (doc) => ({
|
|
@@ -13,18 +12,9 @@ const wordsOf = (doc) => ({
|
|
|
13
12
|
connectors: [...patternsOf(doc, "range-connector"), ...patternsOf(doc, "amount-range-word")],
|
|
14
13
|
numberWords: numberWordsOf(doc),
|
|
15
14
|
});
|
|
16
|
-
const amountsOf = (text, doc) => {
|
|
17
|
-
const scales = scaleWordsOf(doc);
|
|
18
|
-
return amountsIn(text, formsOf(doc), scales.map((scale) => scale.word)).flatMap((amount) => {
|
|
19
|
-
const read = scaledAmountOf(text, amount, scales);
|
|
20
|
-
return read === undefined
|
|
21
|
-
? []
|
|
22
|
-
: [{ offset: read.offset, end: amount.offset + amount.written.length, currency: read.currency, value: read.value, scale: read.unit }];
|
|
23
|
-
});
|
|
24
|
-
};
|
|
25
15
|
export const periodMultipleMismatch = (doc) => {
|
|
26
16
|
const text = proseAndTablesOf(doc);
|
|
27
|
-
return periodMultipleMismatches(text,
|
|
17
|
+
return periodMultipleMismatches(text, statedAmountsOf(text, doc), wordsOf(doc)).map((issue) => ({
|
|
28
18
|
rule: "period-multiple-mismatch",
|
|
29
19
|
severity: "warning",
|
|
30
20
|
line: 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"period-multiple-mismatch.js","sourceRoot":"","sources":["../../src/detectors/period-multiple-mismatch.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,wBAAwB,EAA4B,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"period-multiple-mismatch.js","sourceRoot":"","sources":["../../src/detectors/period-multiple-mismatch.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,wBAAwB,EAA4B,MAAM,iCAAiC,CAAC;AACrG,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,UAAU,GAAG,CAAC,GAAkB,EAAE,OAAe,EAAE,KAAc,EAAY,EAAE,CACnF,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAE9H,MAAM,aAAa,GAAG,CAAC,GAAkB,EAAsC,EAAE,CAC/E,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CACpD,KAAK,CAAC,KAAK,KAAK,OAAO,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAC5G,CAAC;AAEJ,MAAM,OAAO,GAAG,CAAC,GAAkB,EAAuB,EAAE,CAAC,CAAC;IAC5D,KAAK,EAAE,UAAU,CAAC,GAAG,EAAE,uBAAuB,CAAC;IAC/C,KAAK,EAAE,UAAU,CAAC,GAAG,EAAE,sBAAsB,EAAE,OAAO,CAAC;IACvD,KAAK,EAAE,UAAU,CAAC,GAAG,EAAE,sBAAsB,EAAE,MAAM,CAAC;IACtD,KAAK,EAAE,UAAU,CAAC,GAAG,EAAE,sBAAsB,EAAE,MAAM,CAAC;IACtD,UAAU,EAAE,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE,iBAAiB,CAAC,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;IAC5F,WAAW,EAAE,aAAa,CAAC,GAAG,CAAC;CAChC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAa,CAAC,GAAG,EAAa,EAAE;IACjE,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACnC,OAAO,wBAAwB,CAAC,IAAI,EAAE,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC9F,IAAI,EAAE,0BAA0B;QAChC,QAAQ,EAAE,SAAS;QACnB,IAAI,EAAE,CAAC;QACP,MAAM,EAAE,CAAC;QACT,KAAK,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;QACtC,MAAM,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE;KAClD,CAAC,CAAC,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reference-number-variant.d.ts","sourceRoot":"","sources":["../../src/detectors/reference-number-variant.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"reference-number-variant.d.ts","sourceRoot":"","sources":["../../src/detectors/reference-number-variant.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,QAAQ,EAAuC,MAAM,cAAc,CAAC;AA8BlF,eAAO,MAAM,sBAAsB,EAAE,QAyBpC,CAAC"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
// reference-number-variant: a document's own reference number written with two neighbouring characters swapped somewhere
|
|
2
2
|
// else in the document, after a label of the same kind (reference-numbers.ts), or with no label where only one labelled
|
|
3
|
-
// code swaps to it (unlabelled-references.ts); and the document's one vehicle plate written
|
|
3
|
+
// code swaps to it (unlabelled-references.ts), or as the one code a product document is about (subject-codes.ts); and the document's one vehicle plate written
|
|
4
4
|
// once with one character of its serial changed (vehicle-plates.ts).
|
|
5
5
|
import { labelledReferenceNumbers, referenceVariants } from "../reference-numbers.js";
|
|
6
6
|
import { labelledPlates, plateVariants } from "../vehicle-plates.js";
|
|
7
|
-
import { tableCodes, tableLabelledCodes, unlabelledVariants } from "../unlabelled-references.js";
|
|
7
|
+
import { isCodeWith, tableCodes, tableLabelledCodes, unlabelledVariants } from "../unlabelled-references.js";
|
|
8
|
+
import { isSubjectCode, MIN_SUBJECT_DIGITS, subjectCodeVariants } from "../subject-codes.js";
|
|
8
9
|
import { proseAndTablesOf } from "../table-text.js";
|
|
9
10
|
import { quoteAt } from "./structure-tree.js";
|
|
10
11
|
const PLATE_SHAPES = "vehicle-plate";
|
|
@@ -20,6 +21,14 @@ const finding = (number, other, source, variant) => ({
|
|
|
20
21
|
});
|
|
21
22
|
/** Kinds a document lists many of (item codes): two labelled ones are two things, so only a code with no label is compared with them. */
|
|
22
23
|
const listedKindsOf = (value) => (typeof value === "object" ? value : []);
|
|
24
|
+
const TITLE_DEPTH = 1;
|
|
25
|
+
/** The title as the source writes it, where it starts: the prose masks a heading's line. */
|
|
26
|
+
const titleOf = (doc) => {
|
|
27
|
+
const title = doc.markup?.headings.find((heading) => heading.depth === TITLE_DEPTH);
|
|
28
|
+
return title === undefined ? undefined : { start: title.start, text: doc.source.slice(title.start, title.end) };
|
|
29
|
+
};
|
|
30
|
+
/** One finding per place, the first reading kept: a code may be read both as an unlabelled item code and as the document's own. */
|
|
31
|
+
const firstAtEachOffset = (variants) => variants.filter((variant, index) => variants.findIndex((other) => other.number.offset === variant.number.offset) === index);
|
|
23
32
|
export const referenceNumberVariant = (doc, options) => {
|
|
24
33
|
const labels = options.lexicon ?? [];
|
|
25
34
|
if (labels.length === 0)
|
|
@@ -31,9 +40,18 @@ export const referenceNumberVariant = (doc, options) => {
|
|
|
31
40
|
const listed = new Set(listedKindsOf(options.settings?.["listed_kinds"]));
|
|
32
41
|
const withTables = proseAndTablesOf(doc);
|
|
33
42
|
const labelled = [...numbers, ...tableLabelledCodes(withTables, labels)];
|
|
43
|
+
const subjectCodes = subjectCodeVariants({
|
|
44
|
+
prose: text,
|
|
45
|
+
title: titleOf(doc),
|
|
46
|
+
labels,
|
|
47
|
+
listed,
|
|
48
|
+
tabled: tableLabelledCodes(withTables, labels, isSubjectCode),
|
|
49
|
+
known: tableCodes(withTables, isCodeWith(MIN_SUBJECT_DIGITS)),
|
|
50
|
+
});
|
|
51
|
+
const unlabelled = firstAtEachOffset([...unlabelledVariants(text, labelled, tableCodes(withTables)), ...subjectCodes]);
|
|
34
52
|
return [
|
|
35
53
|
...referenceVariants(numbers.filter((number) => !listed.has(number.label))).map(({ number, other }) => finding(number, other, doc.source)),
|
|
36
|
-
...
|
|
54
|
+
...unlabelled.map(({ number, other }) => finding(number, other, doc.source)),
|
|
37
55
|
...plateVariants(plates).map(({ number, other }) => finding(number, other, doc.source, SUBSTITUTED)),
|
|
38
56
|
].toSorted((a, b) => Number(a.values["offset"]) - Number(b.values["offset"]));
|
|
39
57
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reference-number-variant.js","sourceRoot":"","sources":["../../src/detectors/reference-number-variant.ts"],"names":[],"mappings":"AAAA,yHAAyH;AACzH,wHAAwH;AACxH
|
|
1
|
+
{"version":3,"file":"reference-number-variant.js","sourceRoot":"","sources":["../../src/detectors/reference-number-variant.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"condition-toki.d.ts","sourceRoot":"","sources":["../../../src/detectors/registry/condition-toki.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAGhD,eAAO,MAAM,QAAQ,EAAE,QAAwB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"condition-toki.js","sourceRoot":"","sources":["../../../src/detectors/registry/condition-toki.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,CAAC,MAAM,QAAQ,GAAa,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formula-amount.d.ts","sourceRoot":"","sources":["../../../src/detectors/registry/formula-amount.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAGhD,eAAO,MAAM,QAAQ,EAAE,QAAwB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formula-amount.js","sourceRoot":"","sources":["../../../src/detectors/registry/formula-amount.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,CAAC,MAAM,QAAQ,GAAa,aAAa,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rent-multiple-mismatch.d.ts","sourceRoot":"","sources":["../../src/detectors/rent-multiple-mismatch.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAA0B,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"rent-multiple-mismatch.d.ts","sourceRoot":"","sources":["../../src/detectors/rent-multiple-mismatch.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAA0B,MAAM,cAAc,CAAC;AA0BrE,eAAO,MAAM,oBAAoB,EAAE,QAUlC,CAAC"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { rentMultipleMismatches } from "../structure/rent-multiple.js";
|
|
2
|
-
import { scaledAmountOf, scaleWordsOf } from "./amount-scale.js";
|
|
3
|
-
import { amountsIn, formsOf } from "./currency-notation.js";
|
|
4
2
|
import { proseAndTablesOf } from "../table-text.js";
|
|
5
3
|
import { quoteAround } from "./quote-around.js";
|
|
4
|
+
import { statedAmountsOf } from "./stated-amounts.js";
|
|
6
5
|
const patternsOf = (doc, lexicon, group) => (doc.lexicons[lexicon] ?? []).filter((entry) => group === undefined || entry.group === group).map((entry) => entry.pattern);
|
|
7
6
|
const numberWordsOf = (doc) => (doc.lexicons["number-word"] ?? []).flatMap((entry) => entry.group === "digit" && entry.weight !== undefined ? [{ word: entry.pattern, value: entry.weight }] : []);
|
|
8
7
|
const wordsOf = (doc) => ({
|
|
@@ -16,18 +15,9 @@ const wordsOf = (doc) => ({
|
|
|
16
15
|
connectors: [...patternsOf(doc, "range-connector"), ...patternsOf(doc, "amount-range-word")],
|
|
17
16
|
numberWords: numberWordsOf(doc),
|
|
18
17
|
});
|
|
19
|
-
const amountsOf = (text, doc) => {
|
|
20
|
-
const scales = scaleWordsOf(doc);
|
|
21
|
-
return amountsIn(text, formsOf(doc), scales.map((scale) => scale.word)).flatMap((amount) => {
|
|
22
|
-
const read = scaledAmountOf(text, amount, scales);
|
|
23
|
-
return read === undefined
|
|
24
|
-
? []
|
|
25
|
-
: [{ offset: read.offset, end: amount.offset + amount.written.length, currency: read.currency, value: read.value, scale: read.unit }];
|
|
26
|
-
});
|
|
27
|
-
};
|
|
28
18
|
export const rentMultipleMismatch = (doc) => {
|
|
29
19
|
const text = proseAndTablesOf(doc);
|
|
30
|
-
return rentMultipleMismatches(text,
|
|
20
|
+
return rentMultipleMismatches(text, statedAmountsOf(text, doc), wordsOf(doc)).map((issue) => ({
|
|
31
21
|
rule: "rent-multiple-mismatch",
|
|
32
22
|
severity: "warning",
|
|
33
23
|
line: 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rent-multiple-mismatch.js","sourceRoot":"","sources":["../../src/detectors/rent-multiple-mismatch.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,sBAAsB,EAA0B,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"rent-multiple-mismatch.js","sourceRoot":"","sources":["../../src/detectors/rent-multiple-mismatch.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,sBAAsB,EAA0B,MAAM,+BAA+B,CAAC;AAC/F,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,UAAU,GAAG,CAAC,GAAkB,EAAE,OAAe,EAAE,KAAc,EAAY,EAAE,CACnF,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAE9H,MAAM,aAAa,GAAG,CAAC,GAAkB,EAAoC,EAAE,CAC7E,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CACpD,KAAK,CAAC,KAAK,KAAK,OAAO,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAC5G,CAAC;AAEJ,MAAM,OAAO,GAAG,CAAC,GAAkB,EAAqB,EAAE,CAAC,CAAC;IAC1D,KAAK,EAAE,UAAU,CAAC,GAAG,EAAE,YAAY,EAAE,MAAM,CAAC;IAC5C,IAAI,EAAE,UAAU,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,CAAC;IAC1C,SAAS,EAAE,UAAU,CAAC,GAAG,EAAE,qBAAqB,CAAC;IACjD,MAAM,EAAE,UAAU,CAAC,GAAG,EAAE,oBAAoB,EAAE,OAAO,CAAC;IACtD,KAAK,EAAE,UAAU,CAAC,GAAG,EAAE,oBAAoB,EAAE,MAAM,CAAC;IACpD,OAAO,EAAE,UAAU,CAAC,GAAG,EAAE,oBAAoB,EAAE,QAAQ,CAAC;IACxD,KAAK,EAAE,UAAU,CAAC,GAAG,EAAE,oBAAoB,EAAE,MAAM,CAAC;IACpD,UAAU,EAAE,CAAC,GAAG,UAAU,CAAC,GAAG,EAAE,iBAAiB,CAAC,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;IAC5F,WAAW,EAAE,aAAa,CAAC,GAAG,CAAC;CAChC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAa,CAAC,GAAG,EAAa,EAAE;IAC/D,MAAM,IAAI,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACnC,OAAO,sBAAsB,CAAC,IAAI,EAAE,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5F,IAAI,EAAE,wBAAwB;QAC9B,QAAQ,EAAE,SAAS;QACnB,IAAI,EAAE,CAAC;QACP,MAAM,EAAE,CAAC;QACT,KAAK,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;QACtC,MAAM,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE;KAClD,CAAC,CAAC,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"row-sentence-amounts.d.ts","sourceRoot":"","sources":["../../src/detectors/row-sentence-amounts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAiB,MAAM,cAAc,CAAC;AAI1E,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"row-sentence-amounts.d.ts","sourceRoot":"","sources":["../../src/detectors/row-sentence-amounts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAiB,MAAM,cAAc,CAAC;AAI1E,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAuDtE,iEAAiE;AACjE,eAAO,MAAM,mBAAmB,GAAI,KAAK,aAAa,EAAE,OAAO,SAAS,UAAU,EAAE,KAAG,OAAO,EAoB7F,CAAC"}
|
|
@@ -3,7 +3,8 @@ import { factValues } from "../facts/fact-values.js";
|
|
|
3
3
|
import { cellsOf, tablesOf } from "../facts/table-facts.js";
|
|
4
4
|
import { scopedFacts } from "../facts/fact-scope.js";
|
|
5
5
|
import { withoutEdgeMarks } from "../facts/trim-marks.js";
|
|
6
|
-
import {
|
|
6
|
+
import { rowSentenceConflicts } from "../facts/row-sentence-amounts.js";
|
|
7
|
+
import { perUnitsOf } from "./per-unit-words.js";
|
|
7
8
|
import { linesOf } from "../structure/lines.js";
|
|
8
9
|
import { quoteAt } from "./structure-tree.js";
|
|
9
10
|
const LETTER = /\p{L}/u;
|
|
@@ -32,17 +33,11 @@ const subjectWordsOf = (doc) => ({
|
|
|
32
33
|
determiners: patternsOf(doc, "fact-label-drop"),
|
|
33
34
|
conditions: patternsOf(doc, "fact-amount-condition"),
|
|
34
35
|
});
|
|
35
|
-
|
|
36
|
-
/** 金額: 通貨の語彙表の印を単位に書いた数量。前後に期間あたりの印があれば、その期間も。 */
|
|
36
|
+
/** 金額: 通貨の語彙表の印を単位に書いた数量。何あたりの金額(日額、1kmあたり)は、その単位も。 */
|
|
37
37
|
const amountsOf = (doc, tree) => {
|
|
38
38
|
const currencies = new Set(patternsOf(doc, "currency-notation").map((pattern) => pattern.normalize("NFKC")));
|
|
39
|
-
const
|
|
40
|
-
return
|
|
41
|
-
.filter((value) => value.kind === "quantity" && currencies.has(value.unit))
|
|
42
|
-
.map((value) => {
|
|
43
|
-
const period = periodOf(doc.source, value, marks);
|
|
44
|
-
return period === undefined ? value : { ...value, period };
|
|
45
|
-
});
|
|
39
|
+
const amounts = factValues(tree, doc.source, nameSpans(doc)).filter((value) => value.kind === "quantity" && currencies.has(value.unit));
|
|
40
|
+
return perUnitsOf(doc, amounts);
|
|
46
41
|
};
|
|
47
42
|
/** 表の行の金額と、その行の見出しを主語にした文の金額の食い違い。名前付きの値として読めた文の値は、ほかの読みが比べる。 */
|
|
48
43
|
export const rowSentenceFindings = (doc, facts) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"row-sentence-amounts.js","sourceRoot":"","sources":["../../src/detectors/row-sentence-amounts.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAkB,MAAM,yBAAyB,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAmB,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,
|
|
1
|
+
{"version":3,"file":"row-sentence-amounts.js","sourceRoot":"","sources":["../../src/detectors/row-sentence-amounts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stated-amounts.d.ts","sourceRoot":"","sources":["../../src/detectors/stated-amounts.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAIpE,eAAO,MAAM,eAAe,GAAI,MAAM,MAAM,EAAE,KAAK,aAAa,KAAG,YAAY,EAY9E,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { scaledAmountOf, scaleWordsOf } from "./amount-scale.js";
|
|
2
|
+
import { amountsIn, formsOf } from "./currency-notation.js";
|
|
3
|
+
export const statedAmountsOf = (text, doc) => {
|
|
4
|
+
const scales = scaleWordsOf(doc);
|
|
5
|
+
return amountsIn(text, formsOf(doc), scales.map((scale) => scale.word)).flatMap((amount) => {
|
|
6
|
+
const read = scaledAmountOf(text, amount, scales);
|
|
7
|
+
return read === undefined
|
|
8
|
+
? []
|
|
9
|
+
: [{ offset: read.offset, end: amount.offset + amount.written.length, currency: read.currency, value: read.value, scale: read.unit }];
|
|
10
|
+
});
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=stated-amounts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stated-amounts.js","sourceRoot":"","sources":["../../src/detectors/stated-amounts.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAE5D,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,GAAkB,EAAkB,EAAE;IAClF,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IACjC,OAAO,SAAS,CACd,IAAI,EACJ,OAAO,CAAC,GAAG,CAAC,EACZ,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAClC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QACnB,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAClD,OAAO,IAAI,KAAK,SAAS;YACvB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1I,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step-time-sum.d.ts","sourceRoot":"","sources":["../../src/detectors/step-time-sum.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"step-time-sum.d.ts","sourceRoot":"","sources":["../../src/detectors/step-time-sum.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAA0B,MAAM,cAAc,CAAC;AA+BrE,eAAO,MAAM,mBAAmB,EAAE,QAkBjC,CAAC"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
// units, the total labels, the rough-figure marks and the marks of a time that is not a step's own come from the language packages.
|
|
3
3
|
import { stepTimeSlip } from "../structure/step-times.js";
|
|
4
4
|
import { quoteAt } from "./structure-tree.js";
|
|
5
|
+
import { withoutCodeBlocks } from "./code-fences.js";
|
|
5
6
|
const SECONDS_PER_HOUR = 3600;
|
|
6
7
|
const SECONDS_PER_MINUTE = 60;
|
|
7
8
|
const patternsOf = (doc, id) => (doc.lexicons[id] ?? []).map((entry) => entry.pattern);
|
|
@@ -24,7 +25,7 @@ const wordsOf = (doc) => {
|
|
|
24
25
|
};
|
|
25
26
|
};
|
|
26
27
|
export const stepTimeSumMismatch = (doc) => {
|
|
27
|
-
const slip = stepTimeSlip(doc.source, wordsOf(doc));
|
|
28
|
+
const slip = stepTimeSlip(withoutCodeBlocks(doc.source), wordsOf(doc));
|
|
28
29
|
if (slip === undefined)
|
|
29
30
|
return [];
|
|
30
31
|
return [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"step-time-sum.js","sourceRoot":"","sources":["../../src/detectors/step-time-sum.ts"],"names":[],"mappings":"AAAA,uHAAuH;AACvH,oIAAoI;AACpI,OAAO,EAAE,YAAY,EAAsB,MAAM,4BAA4B,CAAC;AAE9E,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"step-time-sum.js","sourceRoot":"","sources":["../../src/detectors/step-time-sum.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,7 +26,7 @@ export declare const amountsOf: (tree: NonNullable<ProseDocument["structure"]>)
|
|
|
26
26
|
*/
|
|
27
27
|
export declare const totalMismatch: Detector;
|
|
28
28
|
export declare const rangeWordsOf: (doc: ProseDocument) => RangeWords;
|
|
29
|
-
/** 期間の終わりが始まりより前。範囲の記号と語は言語パッケージの語彙表(range-connector、range-opener、range-closer)から取る。 */
|
|
29
|
+
/** 期間の終わりが始まりより前。範囲の記号と語は言語パッケージの語彙表(range-connector、range-opener、range-closer、range-start-end)から取る。 */
|
|
30
30
|
export declare const dateRangeReversed: Detector;
|
|
31
31
|
export declare const percentSumMismatch: Detector;
|
|
32
32
|
//# sourceMappingURL=structure-tree.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"structure-tree.d.ts","sourceRoot":"","sources":["../../src/detectors/structure-tree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAW,aAAa,EAAiB,MAAM,cAAc,CAAC;AAOpF,OAAO,EAAmB,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAQrE,OAAO,EAAgD,KAAK,UAAU,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"structure-tree.d.ts","sourceRoot":"","sources":["../../src/detectors/structure-tree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAW,aAAa,EAAiB,MAAM,cAAc,CAAC;AAOpF,OAAO,EAAmB,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAQrE,OAAO,EAAgD,KAAK,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAY3G,qDAAqD;AACrD,eAAO,MAAM,OAAO,GAAI,QAAQ,MAAM,EAAE,QAAQ,MAAM,KAAG,MAMxD,CAAC;AAgBF,eAAO,MAAM,iBAAiB,EAAE,QAA+D,CAAC;AAuBhG;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,QAY1B,CAAC;AACF,eAAO,MAAM,mBAAmB,EAAE,QAAmE,CAAC;AAyCtG,eAAO,MAAM,mBAAmB,EAAE,QAgCjC,CAAC;AAEF,0BAA0B;AAC1B,eAAO,MAAM,WAAW,GAAI,MAAM,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,KAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAC6B,CAAC;AAE3I,oDAAoD;AACpD,eAAO,MAAM,SAAS,EAAE,QAWf,CAAC;AAEV,0BAA0B;AAC1B,eAAO,MAAM,SAAS,GAAI,MAAM,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,KAAG,MAAM,EAG7E,CAAC;AA6FJ;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,QAUnB,CAAC;AAEV,eAAO,MAAM,YAAY,GAAI,KAAK,aAAa,KAAG,UAOhD,CAAC;AAaH,wGAAwG;AACxG,eAAO,MAAM,iBAAiB,EAAE,QAiB/B,CAAC;AA6BF,eAAO,MAAM,kBAAkB,EAAE,QAUxB,CAAC"}
|
|
@@ -13,6 +13,7 @@ import { withCompoundHours } from "../structure/compound-hours.js";
|
|
|
13
13
|
import { timeLengths } from "../derived/time-lengths.js";
|
|
14
14
|
import { measureUnitsOf } from "../facts/measure-units.js";
|
|
15
15
|
import { rangeFrameOf, reversedRanges } from "../structure/date-range.js";
|
|
16
|
+
import { isStartEndRange, startEndWordsOf } from "../structure/start-end-range.js";
|
|
16
17
|
import { afterLabel } from "../structure/stated-period.js";
|
|
17
18
|
import { afterSpanLabel } from "../structure/span-label.js";
|
|
18
19
|
import { percentSumMismatches } from "../structure/percent-sum.js";
|
|
@@ -201,6 +202,9 @@ const totalIssues = (doc, tree) => {
|
|
|
201
202
|
breakdowns: patternsOf(doc, "breakdown-phrase"),
|
|
202
203
|
discounts: patternsOf(doc, "discount-word"),
|
|
203
204
|
joiners: patternsOf(doc, "breakdown-gap-joiner"),
|
|
205
|
+
leads: patternsOf(doc, "total-breakdown-lead"),
|
|
206
|
+
partials: patternsOf(doc, "breakdown-partial-word"),
|
|
207
|
+
backReferences: patternsOf(doc, "total-back-reference"),
|
|
204
208
|
};
|
|
205
209
|
const prose = proseTotalMismatches(doc.source, doc.sentences.map((sentence) => sentence.span), amounts, phrases);
|
|
206
210
|
return [...lines, ...prose.filter((issue) => !lines.some((line) => line.offset === issue.offset))];
|
|
@@ -235,12 +239,13 @@ const labelledAt = (doc) => (offset) => {
|
|
|
235
239
|
const after = afterLabel(line, patternsOf(doc, "period-label")) ?? afterSpanLabel(line, patternsOf(doc, "range-label"));
|
|
236
240
|
return after !== undefined && offset >= lineStart + after;
|
|
237
241
|
};
|
|
238
|
-
/** 期間の終わりが始まりより前。範囲の記号と語は言語パッケージの語彙表(range-connector、range-opener、range-closer)から取る。 */
|
|
242
|
+
/** 期間の終わりが始まりより前。範囲の記号と語は言語パッケージの語彙表(range-connector、range-opener、range-closer、range-start-end)から取る。 */
|
|
239
243
|
export const dateRangeReversed = (doc) => {
|
|
240
244
|
if (doc.structure === undefined)
|
|
241
245
|
return [];
|
|
242
246
|
const dates = datedSpans(doc.structure);
|
|
243
|
-
|
|
247
|
+
const startEnd = startEndWordsOf(doc.lexicons["range-start-end"] ?? [], patternsOf(doc, "weekday"));
|
|
248
|
+
return reversedRanges(doc.source, dates, rangeWordsOf(doc), labelledAt(doc), (start, end) => isStartEndRange(doc.source, start, end, startEnd))
|
|
244
249
|
.filter((issue) => {
|
|
245
250
|
const start = dateAt(dates, issue.offset);
|
|
246
251
|
return !quotedDates(doc, dates[start], dates[start + 1]);
|