chaffjs 0.31.0 → 0.32.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.ja.md +330 -0
- package/README.md +119 -257
- package/dist/company-kana-spelling.d.ts +31 -0
- package/dist/company-kana-spelling.d.ts.map +1 -0
- package/dist/company-kana-spelling.js +79 -0
- package/dist/company-kana-spelling.js.map +1 -0
- package/dist/company-names.d.ts +32 -1
- package/dist/company-names.d.ts.map +1 -1
- package/dist/company-names.js +129 -22
- package/dist/company-names.js.map +1 -1
- package/dist/contacts/table-rows.d.ts +7 -0
- package/dist/contacts/table-rows.d.ts.map +1 -0
- package/dist/contacts/table-rows.js +42 -0
- package/dist/contacts/table-rows.js.map +1 -0
- package/dist/derived/age-on-date.d.ts +53 -0
- package/dist/derived/age-on-date.d.ts.map +1 -0
- package/dist/derived/age-on-date.js +114 -0
- package/dist/derived/age-on-date.js.map +1 -0
- package/dist/derived/durations.d.ts +17 -2
- package/dist/derived/durations.d.ts.map +1 -1
- package/dist/derived/durations.js +61 -10
- package/dist/derived/durations.js.map +1 -1
- package/dist/derived/hours-and-minutes.d.ts +26 -0
- package/dist/derived/hours-and-minutes.d.ts.map +1 -0
- package/dist/derived/hours-and-minutes.js +24 -0
- package/dist/derived/hours-and-minutes.js.map +1 -0
- package/dist/derived/hyphenated-counts.d.ts +15 -0
- package/dist/derived/hyphenated-counts.d.ts.map +1 -0
- package/dist/derived/hyphenated-counts.js +31 -0
- package/dist/derived/hyphenated-counts.js.map +1 -0
- package/dist/derived/marked-dates.d.ts +15 -0
- package/dist/derived/marked-dates.d.ts.map +1 -0
- package/dist/derived/marked-dates.js +41 -0
- package/dist/derived/marked-dates.js.map +1 -0
- package/dist/derived/money-span.d.ts +9 -0
- package/dist/derived/money-span.d.ts.map +1 -0
- package/dist/derived/money-span.js +6 -0
- package/dist/derived/money-span.js.map +1 -0
- package/dist/derived/period-parts.d.ts +55 -0
- package/dist/derived/period-parts.d.ts.map +1 -0
- package/dist/derived/period-parts.js +283 -0
- package/dist/derived/period-parts.js.map +1 -0
- package/dist/derived/readable-date.d.ts +20 -0
- package/dist/derived/readable-date.d.ts.map +1 -0
- package/dist/derived/readable-date.js +50 -0
- package/dist/derived/readable-date.js.map +1 -0
- package/dist/derived/stays.d.ts +3 -1
- package/dist/derived/stays.d.ts.map +1 -1
- package/dist/derived/stays.js +3 -0
- package/dist/derived/stays.js.map +1 -1
- package/dist/derived/timesheet-hours.d.ts +27 -0
- package/dist/derived/timesheet-hours.d.ts.map +1 -0
- package/dist/derived/timesheet-hours.js +86 -0
- package/dist/derived/timesheet-hours.js.map +1 -0
- package/dist/derived/use-maximum.d.ts +27 -0
- package/dist/derived/use-maximum.d.ts.map +1 -0
- package/dist/derived/use-maximum.js +104 -0
- package/dist/derived/use-maximum.js.map +1 -0
- package/dist/derived/working-hours.d.ts +4 -5
- package/dist/derived/working-hours.d.ts.map +1 -1
- package/dist/detectors/annual-holidays-mismatch.d.ts +3 -0
- package/dist/detectors/annual-holidays-mismatch.d.ts.map +1 -0
- package/dist/detectors/annual-holidays-mismatch.js +29 -0
- package/dist/detectors/annual-holidays-mismatch.js.map +1 -0
- package/dist/detectors/annual-pay-mismatch.d.ts +3 -0
- package/dist/detectors/annual-pay-mismatch.d.ts.map +1 -0
- package/dist/detectors/annual-pay-mismatch.js +52 -0
- package/dist/detectors/annual-pay-mismatch.js.map +1 -0
- package/dist/detectors/blank-structure.d.ts +3 -1
- package/dist/detectors/blank-structure.d.ts.map +1 -1
- package/dist/detectors/blank-structure.js +45 -12
- package/dist/detectors/blank-structure.js.map +1 -1
- package/dist/detectors/bmi-mismatch.d.ts +3 -0
- package/dist/detectors/bmi-mismatch.d.ts.map +1 -0
- package/dist/detectors/bmi-mismatch.js +70 -0
- package/dist/detectors/bmi-mismatch.js.map +1 -0
- package/dist/detectors/change-rate.d.ts.map +1 -1
- package/dist/detectors/change-rate.js +24 -9
- package/dist/detectors/change-rate.js.map +1 -1
- package/dist/detectors/closing-balance-mismatch.d.ts +3 -0
- package/dist/detectors/closing-balance-mismatch.d.ts.map +1 -0
- package/dist/detectors/closing-balance-mismatch.js +42 -0
- package/dist/detectors/closing-balance-mismatch.js.map +1 -0
- package/dist/detectors/contact-variant.d.ts.map +1 -1
- package/dist/detectors/contact-variant.js +6 -2
- package/dist/detectors/contact-variant.js.map +1 -1
- package/dist/detectors/cumulative-below-current.d.ts +3 -0
- package/dist/detectors/cumulative-below-current.d.ts.map +1 -0
- package/dist/detectors/cumulative-below-current.js +25 -0
- package/dist/detectors/cumulative-below-current.js.map +1 -0
- package/dist/detectors/currency-column.d.ts +3 -0
- package/dist/detectors/currency-column.d.ts.map +1 -0
- package/dist/detectors/currency-column.js +32 -0
- package/dist/detectors/currency-column.js.map +1 -0
- package/dist/detectors/date-any-year.d.ts +24 -0
- package/dist/detectors/date-any-year.d.ts.map +1 -0
- package/dist/detectors/date-any-year.js +103 -0
- package/dist/detectors/date-any-year.js.map +1 -0
- package/dist/detectors/date-outside-period.d.ts.map +1 -1
- package/dist/detectors/date-outside-period.js +4 -10
- package/dist/detectors/date-outside-period.js.map +1 -1
- package/dist/detectors/date-stamp-order.d.ts.map +1 -1
- package/dist/detectors/date-stamp-order.js +2 -1
- package/dist/detectors/date-stamp-order.js.map +1 -1
- package/dist/detectors/date-year.d.ts +18 -6
- package/dist/detectors/date-year.d.ts.map +1 -1
- package/dist/detectors/date-year.js +39 -11
- package/dist/detectors/date-year.js.map +1 -1
- package/dist/detectors/deductible-exceeds-limit.d.ts +4 -0
- package/dist/detectors/deductible-exceeds-limit.d.ts.map +1 -0
- package/dist/detectors/deductible-exceeds-limit.js +46 -0
- package/dist/detectors/deductible-exceeds-limit.js.map +1 -0
- package/dist/detectors/defined-term-form.d.ts.map +1 -1
- package/dist/detectors/defined-term-form.js +6 -20
- package/dist/detectors/defined-term-form.js.map +1 -1
- package/dist/detectors/derived-numbers.d.ts +4 -3
- package/dist/detectors/derived-numbers.d.ts.map +1 -1
- package/dist/detectors/derived-numbers.js +43 -70
- package/dist/detectors/derived-numbers.js.map +1 -1
- package/dist/detectors/discount-rate.d.ts +3 -0
- package/dist/detectors/discount-rate.d.ts.map +1 -0
- package/dist/detectors/discount-rate.js +35 -0
- package/dist/detectors/discount-rate.js.map +1 -0
- package/dist/detectors/due-date.d.ts.map +1 -1
- package/dist/detectors/due-date.js +11 -4
- package/dist/detectors/due-date.js.map +1 -1
- package/dist/detectors/email-letter.d.ts +10 -2
- package/dist/detectors/email-letter.d.ts.map +1 -1
- package/dist/detectors/email-letter.js +24 -5
- package/dist/detectors/email-letter.js.map +1 -1
- package/dist/detectors/event-deadline.d.ts.map +1 -1
- package/dist/detectors/event-deadline.js +11 -2
- package/dist/detectors/event-deadline.js.map +1 -1
- package/dist/detectors/fact-consistency.d.ts.map +1 -1
- package/dist/detectors/fact-consistency.js +112 -5
- package/dist/detectors/fact-consistency.js.map +1 -1
- package/dist/detectors/gloss-year.d.ts +11 -0
- package/dist/detectors/gloss-year.d.ts.map +1 -0
- package/dist/detectors/gloss-year.js +14 -0
- package/dist/detectors/gloss-year.js.map +1 -0
- package/dist/detectors/gpa-mismatch.d.ts +3 -0
- package/dist/detectors/gpa-mismatch.d.ts.map +1 -0
- package/dist/detectors/gpa-mismatch.js +39 -0
- package/dist/detectors/gpa-mismatch.js.map +1 -0
- package/dist/detectors/impossible-date.d.ts.map +1 -1
- package/dist/detectors/impossible-date.js +22 -6
- package/dist/detectors/impossible-date.js.map +1 -1
- package/dist/detectors/installment-total-mismatch.d.ts +3 -0
- package/dist/detectors/installment-total-mismatch.d.ts.map +1 -0
- package/dist/detectors/installment-total-mismatch.js +49 -0
- package/dist/detectors/installment-total-mismatch.js.map +1 -0
- package/dist/detectors/interest.d.ts +3 -0
- package/dist/detectors/interest.d.ts.map +1 -0
- package/dist/detectors/interest.js +38 -0
- package/dist/detectors/interest.js.map +1 -0
- package/dist/detectors/lab-columns.d.ts +4 -0
- package/dist/detectors/lab-columns.d.ts.map +1 -0
- package/dist/detectors/lab-columns.js +3 -0
- package/dist/detectors/lab-columns.js.map +1 -0
- package/dist/detectors/labelled-age.d.ts +4 -0
- package/dist/detectors/labelled-age.d.ts.map +1 -0
- package/dist/detectors/labelled-age.js +110 -0
- package/dist/detectors/labelled-age.js.map +1 -0
- package/dist/detectors/line-amount.d.ts.map +1 -1
- package/dist/detectors/line-amount.js +45 -2
- package/dist/detectors/line-amount.js.map +1 -1
- package/dist/detectors/measured-facts.d.ts +1 -1
- package/dist/detectors/measured-facts.d.ts.map +1 -1
- package/dist/detectors/measured-facts.js.map +1 -1
- package/dist/detectors/meter-usage.d.ts +3 -0
- package/dist/detectors/meter-usage.d.ts.map +1 -0
- package/dist/detectors/meter-usage.js +37 -0
- package/dist/detectors/meter-usage.js.map +1 -0
- package/dist/detectors/name-field.d.ts +13 -0
- package/dist/detectors/name-field.d.ts.map +1 -0
- package/dist/detectors/name-field.js +38 -0
- package/dist/detectors/name-field.js.map +1 -0
- package/dist/detectors/name-variant.d.ts.map +1 -1
- package/dist/detectors/name-variant.js +128 -14
- package/dist/detectors/name-variant.js.map +1 -1
- package/dist/detectors/net-amount-mismatch.d.ts +10 -0
- package/dist/detectors/net-amount-mismatch.d.ts.map +1 -0
- package/dist/detectors/net-amount-mismatch.js +70 -0
- package/dist/detectors/net-amount-mismatch.js.map +1 -0
- package/dist/detectors/net-gross-weight.d.ts +3 -0
- package/dist/detectors/net-gross-weight.d.ts.map +1 -0
- package/dist/detectors/net-gross-weight.js +35 -0
- package/dist/detectors/net-gross-weight.js.map +1 -0
- package/dist/detectors/nominal-step.d.ts +3 -0
- package/dist/detectors/nominal-step.d.ts.map +1 -0
- package/dist/detectors/nominal-step.js +28 -0
- package/dist/detectors/nominal-step.js.map +1 -0
- package/dist/detectors/number-style.d.ts +2 -0
- package/dist/detectors/number-style.d.ts.map +1 -1
- package/dist/detectors/number-style.js +8 -2
- package/dist/detectors/number-style.js.map +1 -1
- package/dist/detectors/order-quantity.d.ts +10 -0
- package/dist/detectors/order-quantity.d.ts.map +1 -0
- package/dist/detectors/order-quantity.js +35 -0
- package/dist/detectors/order-quantity.js.map +1 -0
- package/dist/detectors/orthographic-variant.d.ts.map +1 -1
- package/dist/detectors/orthographic-variant.js +35 -10
- package/dist/detectors/orthographic-variant.js.map +1 -1
- package/dist/detectors/orthography.d.ts.map +1 -1
- package/dist/detectors/orthography.js +15 -7
- package/dist/detectors/orthography.js.map +1 -1
- package/dist/detectors/period-label-conflict.d.ts +4 -0
- package/dist/detectors/period-label-conflict.d.ts.map +1 -0
- package/dist/detectors/period-label-conflict.js +34 -0
- package/dist/detectors/period-label-conflict.js.map +1 -0
- package/dist/detectors/period-multiple-mismatch.d.ts +3 -0
- package/dist/detectors/period-multiple-mismatch.d.ts.map +1 -0
- package/dist/detectors/period-multiple-mismatch.js +36 -0
- package/dist/detectors/period-multiple-mismatch.js.map +1 -0
- package/dist/detectors/period-part.d.ts +4 -0
- package/dist/detectors/period-part.d.ts.map +1 -0
- package/dist/detectors/period-part.js +58 -0
- package/dist/detectors/period-part.js.map +1 -0
- package/dist/detectors/range-words.d.ts +5 -0
- package/dist/detectors/range-words.d.ts.map +1 -0
- package/dist/detectors/range-words.js +14 -0
- package/dist/detectors/range-words.js.map +1 -0
- package/dist/detectors/ratio-mismatch.d.ts +7 -0
- package/dist/detectors/ratio-mismatch.d.ts.map +1 -0
- package/dist/detectors/ratio-mismatch.js +89 -0
- package/dist/detectors/ratio-mismatch.js.map +1 -0
- package/dist/detectors/readable-dates.d.ts +9 -0
- package/dist/detectors/readable-dates.d.ts.map +1 -0
- package/dist/detectors/readable-dates.js +23 -0
- package/dist/detectors/readable-dates.js.map +1 -0
- package/dist/detectors/reference-flag.d.ts +3 -0
- package/dist/detectors/reference-flag.d.ts.map +1 -0
- package/dist/detectors/reference-flag.js +31 -0
- package/dist/detectors/reference-flag.js.map +1 -0
- package/dist/detectors/reference-number-repeated.d.ts +3 -0
- package/dist/detectors/reference-number-repeated.d.ts.map +1 -0
- package/dist/detectors/reference-number-repeated.js +22 -0
- package/dist/detectors/reference-number-repeated.js.map +1 -0
- package/dist/detectors/reference-number-variant.d.ts +3 -0
- package/dist/detectors/reference-number-variant.d.ts.map +1 -0
- package/dist/detectors/reference-number-variant.js +40 -0
- package/dist/detectors/reference-number-variant.js.map +1 -0
- package/dist/detectors/reference-unit.d.ts +3 -0
- package/dist/detectors/reference-unit.d.ts.map +1 -0
- package/dist/detectors/reference-unit.js +19 -0
- package/dist/detectors/reference-unit.js.map +1 -0
- package/dist/detectors/registry/annual-holidays-mismatch.d.ts +3 -0
- package/dist/detectors/registry/annual-holidays-mismatch.d.ts.map +1 -0
- package/dist/detectors/registry/annual-holidays-mismatch.js +3 -0
- package/dist/detectors/registry/annual-holidays-mismatch.js.map +1 -0
- package/dist/detectors/registry/annual-pay-mismatch.d.ts +3 -0
- package/dist/detectors/registry/annual-pay-mismatch.d.ts.map +1 -0
- package/dist/detectors/registry/annual-pay-mismatch.js +3 -0
- package/dist/detectors/registry/annual-pay-mismatch.js.map +1 -0
- package/dist/detectors/registry/backorder-mismatch.d.ts +3 -0
- package/dist/detectors/registry/backorder-mismatch.d.ts.map +1 -0
- package/dist/detectors/registry/backorder-mismatch.js +3 -0
- package/dist/detectors/registry/backorder-mismatch.js.map +1 -0
- package/dist/detectors/registry/bmi-mismatch.d.ts +3 -0
- package/dist/detectors/registry/bmi-mismatch.d.ts.map +1 -0
- package/dist/detectors/registry/bmi-mismatch.js +3 -0
- package/dist/detectors/registry/bmi-mismatch.js.map +1 -0
- package/dist/detectors/registry/closing-balance-mismatch.d.ts +3 -0
- package/dist/detectors/registry/closing-balance-mismatch.d.ts.map +1 -0
- package/dist/detectors/registry/closing-balance-mismatch.js +3 -0
- package/dist/detectors/registry/closing-balance-mismatch.js.map +1 -0
- package/dist/detectors/registry/cumulative-below-current.d.ts +3 -0
- package/dist/detectors/registry/cumulative-below-current.d.ts.map +1 -0
- package/dist/detectors/registry/cumulative-below-current.js +3 -0
- package/dist/detectors/registry/cumulative-below-current.js.map +1 -0
- package/dist/detectors/registry/currency-column-mix.d.ts +3 -0
- package/dist/detectors/registry/currency-column-mix.d.ts.map +1 -0
- package/dist/detectors/registry/currency-column-mix.js +3 -0
- package/dist/detectors/registry/currency-column-mix.js.map +1 -0
- package/dist/detectors/registry/deductible-exceeds-limit.d.ts +3 -0
- package/dist/detectors/registry/deductible-exceeds-limit.d.ts.map +1 -0
- package/dist/detectors/registry/deductible-exceeds-limit.js +3 -0
- package/dist/detectors/registry/deductible-exceeds-limit.js.map +1 -0
- package/dist/detectors/registry/delivered-over-ordered.d.ts +3 -0
- package/dist/detectors/registry/delivered-over-ordered.d.ts.map +1 -0
- package/dist/detectors/registry/delivered-over-ordered.js +3 -0
- package/dist/detectors/registry/delivered-over-ordered.js.map +1 -0
- package/dist/detectors/registry/discount-rate.d.ts +3 -0
- package/dist/detectors/registry/discount-rate.d.ts.map +1 -0
- package/dist/detectors/registry/discount-rate.js +3 -0
- package/dist/detectors/registry/discount-rate.js.map +1 -0
- package/dist/detectors/registry/elapsed-years-mismatch.js +1 -1
- package/dist/detectors/registry/elapsed-years-mismatch.js.map +1 -1
- package/dist/detectors/registry/gpa-mismatch.d.ts +3 -0
- package/dist/detectors/registry/gpa-mismatch.d.ts.map +1 -0
- package/dist/detectors/registry/gpa-mismatch.js +3 -0
- package/dist/detectors/registry/gpa-mismatch.js.map +1 -0
- package/dist/detectors/registry/installment-total-mismatch.d.ts +3 -0
- package/dist/detectors/registry/installment-total-mismatch.d.ts.map +1 -0
- package/dist/detectors/registry/installment-total-mismatch.js +3 -0
- package/dist/detectors/registry/installment-total-mismatch.js.map +1 -0
- package/dist/detectors/registry/interest.d.ts +3 -0
- package/dist/detectors/registry/interest.d.ts.map +1 -0
- package/dist/detectors/registry/interest.js +3 -0
- package/dist/detectors/registry/interest.js.map +1 -0
- package/dist/detectors/registry/meter-usage.d.ts +3 -0
- package/dist/detectors/registry/meter-usage.d.ts.map +1 -0
- package/dist/detectors/registry/meter-usage.js +3 -0
- package/dist/detectors/registry/meter-usage.js.map +1 -0
- package/dist/detectors/registry/net-amount-mismatch.d.ts +3 -0
- package/dist/detectors/registry/net-amount-mismatch.d.ts.map +1 -0
- package/dist/detectors/registry/net-amount-mismatch.js +3 -0
- package/dist/detectors/registry/net-amount-mismatch.js.map +1 -0
- package/dist/detectors/registry/net-over-gross.d.ts +3 -0
- package/dist/detectors/registry/net-over-gross.d.ts.map +1 -0
- package/dist/detectors/registry/net-over-gross.js +3 -0
- package/dist/detectors/registry/net-over-gross.js.map +1 -0
- package/dist/detectors/registry/period-label-conflict.d.ts +3 -0
- package/dist/detectors/registry/period-label-conflict.d.ts.map +1 -0
- package/dist/detectors/registry/period-label-conflict.js +3 -0
- package/dist/detectors/registry/period-label-conflict.js.map +1 -0
- package/dist/detectors/registry/period-multiple-mismatch.d.ts +3 -0
- package/dist/detectors/registry/period-multiple-mismatch.d.ts.map +1 -0
- package/dist/detectors/registry/period-multiple-mismatch.js +3 -0
- package/dist/detectors/registry/period-multiple-mismatch.js.map +1 -0
- package/dist/detectors/registry/period-part-exceeds-whole.d.ts +3 -0
- package/dist/detectors/registry/period-part-exceeds-whole.d.ts.map +1 -0
- package/dist/detectors/registry/period-part-exceeds-whole.js +3 -0
- package/dist/detectors/registry/period-part-exceeds-whole.js.map +1 -0
- package/dist/detectors/registry/product-exceeds-maximum.d.ts +3 -0
- package/dist/detectors/registry/product-exceeds-maximum.d.ts.map +1 -0
- package/dist/detectors/registry/product-exceeds-maximum.js +3 -0
- package/dist/detectors/registry/product-exceeds-maximum.js.map +1 -0
- package/dist/detectors/registry/ratio-mismatch.d.ts +3 -0
- package/dist/detectors/registry/ratio-mismatch.d.ts.map +1 -0
- package/dist/detectors/registry/ratio-mismatch.js +3 -0
- package/dist/detectors/registry/ratio-mismatch.js.map +1 -0
- package/dist/detectors/registry/reference-flag-mismatch.d.ts +3 -0
- package/dist/detectors/registry/reference-flag-mismatch.d.ts.map +1 -0
- package/dist/detectors/registry/reference-flag-mismatch.js +3 -0
- package/dist/detectors/registry/reference-flag-mismatch.js.map +1 -0
- package/dist/detectors/registry/reference-number-repeated.d.ts +3 -0
- package/dist/detectors/registry/reference-number-repeated.d.ts.map +1 -0
- package/dist/detectors/registry/reference-number-repeated.js +3 -0
- package/dist/detectors/registry/reference-number-repeated.js.map +1 -0
- package/dist/detectors/registry/reference-number-variant.d.ts +3 -0
- package/dist/detectors/registry/reference-number-variant.d.ts.map +1 -0
- package/dist/detectors/registry/reference-number-variant.js +3 -0
- package/dist/detectors/registry/reference-number-variant.js.map +1 -0
- package/dist/detectors/registry/reference-unit.d.ts +3 -0
- package/dist/detectors/registry/reference-unit.d.ts.map +1 -0
- package/dist/detectors/registry/reference-unit.js +3 -0
- package/dist/detectors/registry/reference-unit.js.map +1 -0
- package/dist/detectors/registry/revision-direction.d.ts +3 -0
- package/dist/detectors/registry/revision-direction.d.ts.map +1 -0
- package/dist/detectors/registry/revision-direction.js +3 -0
- package/dist/detectors/registry/revision-direction.js.map +1 -0
- package/dist/detectors/registry/running-balance.d.ts +3 -0
- package/dist/detectors/registry/running-balance.d.ts.map +1 -0
- package/dist/detectors/registry/running-balance.js +3 -0
- package/dist/detectors/registry/running-balance.js.map +1 -0
- package/dist/detectors/registry/serial-range.d.ts +3 -0
- package/dist/detectors/registry/serial-range.d.ts.map +1 -0
- package/dist/detectors/registry/serial-range.js +3 -0
- package/dist/detectors/registry/serial-range.js.map +1 -0
- package/dist/detectors/registry/share-amount.d.ts +3 -0
- package/dist/detectors/registry/share-amount.d.ts.map +1 -0
- package/dist/detectors/registry/share-amount.js +3 -0
- package/dist/detectors/registry/share-amount.js.map +1 -0
- package/dist/detectors/registry/table-unit-mix.d.ts +3 -0
- package/dist/detectors/registry/table-unit-mix.d.ts.map +1 -0
- package/dist/detectors/registry/table-unit-mix.js +3 -0
- package/dist/detectors/registry/table-unit-mix.js.map +1 -0
- package/dist/detectors/registry/tier-threshold.d.ts +3 -0
- package/dist/detectors/registry/tier-threshold.d.ts.map +1 -0
- package/dist/detectors/registry/tier-threshold.js +3 -0
- package/dist/detectors/registry/tier-threshold.js.map +1 -0
- package/dist/detectors/registry/variance-mismatch.d.ts +3 -0
- package/dist/detectors/registry/variance-mismatch.d.ts.map +1 -0
- package/dist/detectors/registry/variance-mismatch.js +3 -0
- package/dist/detectors/registry/variance-mismatch.js.map +1 -0
- package/dist/detectors/relative-dates.d.ts.map +1 -1
- package/dist/detectors/relative-dates.js +2 -1
- package/dist/detectors/relative-dates.js.map +1 -1
- package/dist/detectors/relative-day-words.d.ts.map +1 -1
- package/dist/detectors/relative-day-words.js +2 -1
- package/dist/detectors/relative-day-words.js.map +1 -1
- package/dist/detectors/rent-multiple-mismatch.d.ts.map +1 -1
- package/dist/detectors/rent-multiple-mismatch.js.map +1 -1
- package/dist/detectors/request-owner.d.ts +3 -1
- package/dist/detectors/request-owner.d.ts.map +1 -1
- package/dist/detectors/request-owner.js +5 -2
- package/dist/detectors/request-owner.js.map +1 -1
- package/dist/detectors/revision-direction.d.ts +3 -0
- package/dist/detectors/revision-direction.d.ts.map +1 -0
- package/dist/detectors/revision-direction.js +32 -0
- package/dist/detectors/revision-direction.js.map +1 -0
- package/dist/detectors/row-sentence-amounts.d.ts +5 -0
- package/dist/detectors/row-sentence-amounts.d.ts.map +1 -0
- package/dist/detectors/row-sentence-amounts.js +71 -0
- package/dist/detectors/row-sentence-amounts.js.map +1 -0
- package/dist/detectors/running-balance.d.ts +3 -0
- package/dist/detectors/running-balance.d.ts.map +1 -0
- package/dist/detectors/running-balance.js +26 -0
- package/dist/detectors/running-balance.js.map +1 -0
- package/dist/detectors/scaled-quantity.js +1 -1
- package/dist/detectors/scaled-quantity.js.map +1 -1
- package/dist/detectors/serial-range.d.ts +3 -0
- package/dist/detectors/serial-range.d.ts.map +1 -0
- package/dist/detectors/serial-range.js +29 -0
- package/dist/detectors/serial-range.js.map +1 -0
- package/dist/detectors/share-amount.d.ts +3 -0
- package/dist/detectors/share-amount.d.ts.map +1 -0
- package/dist/detectors/share-amount.js +45 -0
- package/dist/detectors/share-amount.js.map +1 -0
- package/dist/detectors/structure-tree.d.ts.map +1 -1
- package/dist/detectors/structure-tree.js +42 -10
- package/dist/detectors/structure-tree.js.map +1 -1
- package/dist/detectors/table-scale.d.ts +3 -0
- package/dist/detectors/table-scale.d.ts.map +1 -0
- package/dist/detectors/table-scale.js +32 -0
- package/dist/detectors/table-scale.js.map +1 -0
- package/dist/detectors/tax-amount.d.ts.map +1 -1
- package/dist/detectors/tax-amount.js +34 -10
- package/dist/detectors/tax-amount.js.map +1 -1
- package/dist/detectors/technical-docs.d.ts +1 -1
- package/dist/detectors/technical-docs.d.ts.map +1 -1
- package/dist/detectors/technical-docs.js +3 -2
- package/dist/detectors/technical-docs.js.map +1 -1
- package/dist/detectors/tier-threshold.d.ts +3 -0
- package/dist/detectors/tier-threshold.d.ts.map +1 -0
- package/dist/detectors/tier-threshold.js +86 -0
- package/dist/detectors/tier-threshold.js.map +1 -0
- package/dist/detectors/time-order.d.ts +1 -0
- package/dist/detectors/time-order.d.ts.map +1 -1
- package/dist/detectors/time-order.js +43 -13
- package/dist/detectors/time-order.js.map +1 -1
- package/dist/detectors/use-maximum.d.ts +3 -0
- package/dist/detectors/use-maximum.d.ts.map +1 -0
- package/dist/detectors/use-maximum.js +32 -0
- package/dist/detectors/use-maximum.js.map +1 -0
- package/dist/detectors/variance.d.ts +3 -0
- package/dist/detectors/variance.d.ts.map +1 -0
- package/dist/detectors/variance.js +28 -0
- package/dist/detectors/variance.js.map +1 -0
- package/dist/detectors/whole-count-findings.d.ts +4 -0
- package/dist/detectors/whole-count-findings.d.ts.map +1 -0
- package/dist/detectors/whole-count-findings.js +38 -0
- package/dist/detectors/whole-count-findings.js.map +1 -0
- package/dist/detectors/working-hours-findings.d.ts +9 -0
- package/dist/detectors/working-hours-findings.d.ts.map +1 -0
- package/dist/detectors/working-hours-findings.js +79 -0
- package/dist/detectors/working-hours-findings.js.map +1 -0
- package/dist/facts/age-values.d.ts +22 -0
- package/dist/facts/age-values.d.ts.map +1 -0
- package/dist/facts/age-values.js +76 -0
- package/dist/facts/age-values.js.map +1 -0
- package/dist/facts/cell-keys.d.ts +12 -0
- package/dist/facts/cell-keys.d.ts.map +1 -0
- package/dist/facts/cell-keys.js +19 -0
- package/dist/facts/cell-keys.js.map +1 -0
- package/dist/facts/count-labels.d.ts +15 -0
- package/dist/facts/count-labels.d.ts.map +1 -0
- package/dist/facts/count-labels.js +19 -0
- package/dist/facts/count-labels.js.map +1 -0
- package/dist/facts/document-terms.d.ts +43 -0
- package/dist/facts/document-terms.d.ts.map +1 -0
- package/dist/facts/document-terms.js +74 -0
- package/dist/facts/document-terms.js.map +1 -0
- package/dist/facts/duration-scale.d.ts +11 -0
- package/dist/facts/duration-scale.d.ts.map +1 -0
- package/dist/facts/duration-scale.js +14 -0
- package/dist/facts/duration-scale.js.map +1 -0
- package/dist/facts/duration-values.d.ts +15 -0
- package/dist/facts/duration-values.d.ts.map +1 -0
- package/dist/facts/duration-values.js +29 -0
- package/dist/facts/duration-values.js.map +1 -0
- package/dist/facts/fact-values.d.ts +9 -1
- package/dist/facts/fact-values.d.ts.map +1 -1
- package/dist/facts/fact-values.js +19 -6
- package/dist/facts/fact-values.js.map +1 -1
- package/dist/facts/labelled-facts.d.ts +15 -1
- package/dist/facts/labelled-facts.d.ts.map +1 -1
- package/dist/facts/labelled-facts.js +51 -8
- package/dist/facts/labelled-facts.js.map +1 -1
- package/dist/facts/measure-units.d.ts.map +1 -1
- package/dist/facts/measure-units.js +23 -8
- package/dist/facts/measure-units.js.map +1 -1
- package/dist/facts/measures.js +11 -9
- package/dist/facts/measures.js.map +1 -1
- package/dist/facts/qualified-labels.d.ts +28 -0
- package/dist/facts/qualified-labels.d.ts.map +1 -0
- package/dist/facts/qualified-labels.js +96 -0
- package/dist/facts/qualified-labels.js.map +1 -0
- package/dist/facts/rate-values.d.ts +40 -0
- package/dist/facts/rate-values.d.ts.map +1 -0
- package/dist/facts/rate-values.js +68 -0
- package/dist/facts/rate-values.js.map +1 -0
- package/dist/facts/row-sentence-amounts.d.ts +51 -0
- package/dist/facts/row-sentence-amounts.d.ts.map +1 -0
- package/dist/facts/row-sentence-amounts.js +71 -0
- package/dist/facts/row-sentence-amounts.js.map +1 -0
- package/dist/facts/superscript-power.d.ts +3 -0
- package/dist/facts/superscript-power.d.ts.map +1 -0
- package/dist/facts/superscript-power.js +5 -0
- package/dist/facts/superscript-power.js.map +1 -0
- package/dist/facts/table-facts.d.ts +18 -2
- package/dist/facts/table-facts.d.ts.map +1 -1
- package/dist/facts/table-facts.js +16 -6
- package/dist/facts/table-facts.js.map +1 -1
- package/dist/facts/term-values.d.ts +34 -0
- package/dist/facts/term-values.d.ts.map +1 -0
- package/dist/facts/term-values.js +195 -0
- package/dist/facts/term-values.js.map +1 -0
- package/dist/facts/unit-word.d.ts +5 -0
- package/dist/facts/unit-word.d.ts.map +1 -1
- package/dist/facts/unit-word.js +9 -0
- package/dist/facts/unit-word.js.map +1 -1
- package/dist/facts/verb-quantity-facts.d.ts +22 -0
- package/dist/facts/verb-quantity-facts.d.ts.map +1 -0
- package/dist/facts/verb-quantity-facts.js +58 -0
- package/dist/facts/verb-quantity-facts.js.map +1 -0
- package/dist/facts/whole-counts.d.ts +58 -0
- package/dist/facts/whole-counts.d.ts.map +1 -0
- package/dist/facts/whole-counts.js +118 -0
- package/dist/facts/whole-counts.js.map +1 -0
- package/dist/name-char-reading.d.ts +16 -0
- package/dist/name-char-reading.d.ts.map +1 -0
- package/dist/name-char-reading.js +18 -0
- package/dist/name-char-reading.js.map +1 -0
- package/dist/name-line-block.d.ts +6 -0
- package/dist/name-line-block.d.ts.map +1 -0
- package/dist/name-line-block.js +35 -0
- package/dist/name-line-block.js.map +1 -0
- package/dist/name-lookalike-chars.d.ts +16 -0
- package/dist/name-lookalike-chars.d.ts.map +1 -0
- package/dist/name-lookalike-chars.js +41 -0
- package/dist/name-lookalike-chars.js.map +1 -0
- package/dist/name-neighbours.d.ts +7 -0
- package/dist/name-neighbours.d.ts.map +1 -0
- package/dist/name-neighbours.js +55 -0
- package/dist/name-neighbours.js.map +1 -0
- package/dist/name-ordinary-word.d.ts +13 -0
- package/dist/name-ordinary-word.d.ts.map +1 -0
- package/dist/name-ordinary-word.js +54 -0
- package/dist/name-ordinary-word.js.map +1 -0
- package/dist/name-person.d.ts +9 -0
- package/dist/name-person.d.ts.map +1 -0
- package/dist/name-person.js +25 -0
- package/dist/name-person.js.map +1 -0
- package/dist/name-separator.d.ts +14 -0
- package/dist/name-separator.d.ts.map +1 -0
- package/dist/name-separator.js +33 -0
- package/dist/name-separator.js.map +1 -0
- package/dist/name-variants.d.ts +8 -8
- package/dist/name-variants.d.ts.map +1 -1
- package/dist/name-variants.js +28 -81
- package/dist/name-variants.js.map +1 -1
- package/dist/name-weight.d.ts +10 -0
- package/dist/name-weight.d.ts.map +1 -0
- package/dist/name-weight.js +7 -0
- package/dist/name-weight.js.map +1 -0
- package/dist/person-field.d.ts +6 -0
- package/dist/person-field.d.ts.map +1 -0
- package/dist/person-field.js +40 -0
- package/dist/person-field.js.map +1 -0
- package/dist/person-full-name.d.ts +12 -0
- package/dist/person-full-name.d.ts.map +1 -0
- package/dist/person-full-name.js +52 -0
- package/dist/person-full-name.js.map +1 -0
- package/dist/phone-numbers.d.ts +23 -3
- package/dist/phone-numbers.d.ts.map +1 -1
- package/dist/phone-numbers.js +49 -21
- package/dist/phone-numbers.js.map +1 -1
- package/dist/plugin.d.ts +2 -0
- package/dist/plugin.d.ts.map +1 -1
- package/dist/product-names.d.ts +33 -0
- package/dist/product-names.d.ts.map +1 -0
- package/dist/product-names.js +74 -0
- package/dist/product-names.js.map +1 -0
- package/dist/reference-numbers.d.ts +26 -0
- package/dist/reference-numbers.d.ts.map +1 -0
- package/dist/reference-numbers.js +43 -0
- package/dist/reference-numbers.js.map +1 -0
- package/dist/spaced-person-name.d.ts +17 -0
- package/dist/spaced-person-name.d.ts.map +1 -0
- package/dist/spaced-person-name.js +82 -0
- package/dist/spaced-person-name.js.map +1 -0
- package/dist/spacing-code.d.ts +1 -0
- package/dist/spacing-code.d.ts.map +1 -1
- package/dist/spacing-code.js +15 -1
- package/dist/spacing-code.js.map +1 -1
- package/dist/structure/annual-holidays.d.ts +56 -0
- package/dist/structure/annual-holidays.d.ts.map +1 -0
- package/dist/structure/annual-holidays.js +159 -0
- package/dist/structure/annual-holidays.js.map +1 -0
- package/dist/structure/annual-pay.d.ts +97 -0
- package/dist/structure/annual-pay.d.ts.map +1 -0
- package/dist/structure/annual-pay.js +236 -0
- package/dist/structure/annual-pay.js.map +1 -0
- package/dist/structure/bmi.d.ts +63 -0
- package/dist/structure/bmi.d.ts.map +1 -0
- package/dist/structure/bmi.js +106 -0
- package/dist/structure/bmi.js.map +1 -0
- package/dist/structure/change-rate-table.d.ts +46 -0
- package/dist/structure/change-rate-table.d.ts.map +1 -0
- package/dist/structure/change-rate-table.js +110 -0
- package/dist/structure/change-rate-table.js.map +1 -0
- package/dist/structure/change-rate.d.ts +13 -1
- package/dist/structure/change-rate.d.ts.map +1 -1
- package/dist/structure/change-rate.js +51 -19
- package/dist/structure/change-rate.js.map +1 -1
- package/dist/structure/closing-balance.d.ts +24 -0
- package/dist/structure/closing-balance.d.ts.map +1 -0
- package/dist/structure/closing-balance.js +79 -0
- package/dist/structure/closing-balance.js.map +1 -0
- package/dist/structure/column-date-order.d.ts +5 -0
- package/dist/structure/column-date-order.d.ts.map +1 -0
- package/dist/structure/column-date-order.js +57 -0
- package/dist/structure/column-date-order.js.map +1 -0
- package/dist/structure/compound-hours.d.ts +5 -0
- package/dist/structure/compound-hours.d.ts.map +1 -0
- package/dist/structure/compound-hours.js +45 -0
- package/dist/structure/compound-hours.js.map +1 -0
- package/dist/structure/cumulative-below-current.d.ts +21 -0
- package/dist/structure/cumulative-below-current.d.ts.map +1 -0
- package/dist/structure/cumulative-below-current.js +48 -0
- package/dist/structure/cumulative-below-current.js.map +1 -0
- package/dist/structure/currency-column.d.ts +21 -0
- package/dist/structure/currency-column.d.ts.map +1 -0
- package/dist/structure/currency-column.js +74 -0
- package/dist/structure/currency-column.js.map +1 -0
- package/dist/structure/date-deadline-mark.d.ts +15 -0
- package/dist/structure/date-deadline-mark.d.ts.map +1 -0
- package/dist/structure/date-deadline-mark.js +22 -0
- package/dist/structure/date-deadline-mark.js.map +1 -0
- package/dist/structure/date-outside-period.d.ts +5 -1
- package/dist/structure/date-outside-period.d.ts.map +1 -1
- package/dist/structure/date-outside-period.js +13 -9
- package/dist/structure/date-outside-period.js.map +1 -1
- package/dist/structure/date-range.d.ts +2 -1
- package/dist/structure/date-range.d.ts.map +1 -1
- package/dist/structure/date-range.js +4 -6
- package/dist/structure/date-range.js.map +1 -1
- package/dist/structure/deadline-after-event.d.ts +35 -2
- package/dist/structure/deadline-after-event.d.ts.map +1 -1
- package/dist/structure/deadline-after-event.js +77 -6
- package/dist/structure/deadline-after-event.js.map +1 -1
- package/dist/structure/deductible-limit.d.ts +69 -0
- package/dist/structure/deductible-limit.d.ts.map +1 -0
- package/dist/structure/deductible-limit.js +191 -0
- package/dist/structure/deductible-limit.js.map +1 -0
- package/dist/structure/discount-rate.d.ts +35 -0
- package/dist/structure/discount-rate.d.ts.map +1 -0
- package/dist/structure/discount-rate.js +172 -0
- package/dist/structure/discount-rate.js.map +1 -0
- package/dist/structure/generic-role.d.ts +2 -0
- package/dist/structure/generic-role.d.ts.map +1 -0
- package/dist/structure/generic-role.js +8 -0
- package/dist/structure/generic-role.js.map +1 -0
- package/dist/structure/gpa.d.ts +74 -0
- package/dist/structure/gpa.d.ts.map +1 -0
- package/dist/structure/gpa.js +170 -0
- package/dist/structure/gpa.js.map +1 -0
- package/dist/structure/installment-total.d.ts +110 -0
- package/dist/structure/installment-total.d.ts.map +1 -0
- package/dist/structure/installment-total.js +224 -0
- package/dist/structure/installment-total.js.map +1 -0
- package/dist/structure/interest.d.ts +22 -0
- package/dist/structure/interest.d.ts.map +1 -0
- package/dist/structure/interest.js +107 -0
- package/dist/structure/interest.js.map +1 -0
- package/dist/structure/key-value-row.d.ts +14 -0
- package/dist/structure/key-value-row.d.ts.map +1 -0
- package/dist/structure/key-value-row.js +38 -0
- package/dist/structure/key-value-row.js.map +1 -0
- package/dist/structure/lab-columns.d.ts +12 -0
- package/dist/structure/lab-columns.d.ts.map +1 -0
- package/dist/structure/lab-columns.js +11 -0
- package/dist/structure/lab-columns.js.map +1 -0
- package/dist/structure/labelled-date-order.d.ts +33 -16
- package/dist/structure/labelled-date-order.d.ts.map +1 -1
- package/dist/structure/labelled-date-order.js +38 -30
- package/dist/structure/labelled-date-order.js.map +1 -1
- package/dist/structure/labelled-order.d.ts +59 -0
- package/dist/structure/labelled-order.d.ts.map +1 -0
- package/dist/structure/labelled-order.js +65 -0
- package/dist/structure/labelled-order.js.map +1 -0
- package/dist/structure/labelled-time-order.d.ts +17 -0
- package/dist/structure/labelled-time-order.d.ts.map +1 -0
- package/dist/structure/labelled-time-order.js +79 -0
- package/dist/structure/labelled-time-order.js.map +1 -0
- package/dist/structure/line-amount-label.d.ts +31 -0
- package/dist/structure/line-amount-label.d.ts.map +1 -0
- package/dist/structure/line-amount-label.js +77 -0
- package/dist/structure/line-amount-label.js.map +1 -0
- package/dist/structure/line-amount-rate.d.ts +47 -0
- package/dist/structure/line-amount-rate.d.ts.map +1 -0
- package/dist/structure/line-amount-rate.js +141 -0
- package/dist/structure/line-amount-rate.js.map +1 -0
- package/dist/structure/line-amount-unit.d.ts +7 -0
- package/dist/structure/line-amount-unit.d.ts.map +1 -1
- package/dist/structure/line-amount-unit.js +11 -0
- package/dist/structure/line-amount-unit.js.map +1 -1
- package/dist/structure/line-amount.d.ts +33 -7
- package/dist/structure/line-amount.d.ts.map +1 -1
- package/dist/structure/line-amount.js +152 -42
- package/dist/structure/line-amount.js.map +1 -1
- package/dist/structure/meter-usage-read.d.ts +21 -0
- package/dist/structure/meter-usage-read.d.ts.map +1 -0
- package/dist/structure/meter-usage-read.js +116 -0
- package/dist/structure/meter-usage-read.js.map +1 -0
- package/dist/structure/meter-usage.d.ts +62 -0
- package/dist/structure/meter-usage.d.ts.map +1 -0
- package/dist/structure/meter-usage.js +157 -0
- package/dist/structure/meter-usage.js.map +1 -0
- package/dist/structure/net-amount.d.ts +81 -0
- package/dist/structure/net-amount.d.ts.map +1 -0
- package/dist/structure/net-amount.js +161 -0
- package/dist/structure/net-amount.js.map +1 -0
- package/dist/structure/net-gross-weight.d.ts +30 -0
- package/dist/structure/net-gross-weight.d.ts.map +1 -0
- package/dist/structure/net-gross-weight.js +79 -0
- package/dist/structure/net-gross-weight.js.map +1 -0
- package/dist/structure/order-quantity.d.ts +38 -0
- package/dist/structure/order-quantity.d.ts.map +1 -0
- package/dist/structure/order-quantity.js +104 -0
- package/dist/structure/order-quantity.js.map +1 -0
- package/dist/structure/party-role.d.ts.map +1 -1
- package/dist/structure/party-role.js +4 -1
- package/dist/structure/party-role.js.map +1 -1
- package/dist/structure/percent-sum.d.ts +2 -0
- package/dist/structure/percent-sum.d.ts.map +1 -1
- package/dist/structure/percent-sum.js +2 -0
- package/dist/structure/percent-sum.js.map +1 -1
- package/dist/structure/period-label-conflict.d.ts +52 -0
- package/dist/structure/period-label-conflict.d.ts.map +1 -0
- package/dist/structure/period-label-conflict.js +105 -0
- package/dist/structure/period-label-conflict.js.map +1 -0
- package/dist/structure/period-labels.d.ts +36 -0
- package/dist/structure/period-labels.d.ts.map +1 -0
- package/dist/structure/period-labels.js +86 -0
- package/dist/structure/period-labels.js.map +1 -0
- package/dist/structure/period-multiple.d.ts +46 -0
- package/dist/structure/period-multiple.d.ts.map +1 -0
- package/dist/structure/period-multiple.js +123 -0
- package/dist/structure/period-multiple.js.map +1 -0
- package/dist/structure/quantity-range.d.ts.map +1 -1
- package/dist/structure/quantity-range.js +1 -5
- package/dist/structure/quantity-range.js.map +1 -1
- package/dist/structure/range-bands.d.ts +2 -0
- package/dist/structure/range-bands.d.ts.map +1 -1
- package/dist/structure/range-bands.js +1 -1
- package/dist/structure/range-bands.js.map +1 -1
- package/dist/structure/range-years.d.ts +18 -0
- package/dist/structure/range-years.d.ts.map +1 -0
- package/dist/structure/range-years.js +60 -0
- package/dist/structure/range-years.js.map +1 -0
- package/dist/structure/ratio.d.ts +136 -0
- package/dist/structure/ratio.d.ts.map +1 -0
- package/dist/structure/ratio.js +214 -0
- package/dist/structure/ratio.js.map +1 -0
- package/dist/structure/reference-flags.d.ts +55 -0
- package/dist/structure/reference-flags.d.ts.map +1 -0
- package/dist/structure/reference-flags.js +116 -0
- package/dist/structure/reference-flags.js.map +1 -0
- package/dist/structure/reference-number-repeated.d.ts +12 -0
- package/dist/structure/reference-number-repeated.d.ts.map +1 -0
- package/dist/structure/reference-number-repeated.js +43 -0
- package/dist/structure/reference-number-repeated.js.map +1 -0
- package/dist/structure/reference-unit.d.ts +24 -0
- package/dist/structure/reference-unit.d.ts.map +1 -0
- package/dist/structure/reference-unit.js +80 -0
- package/dist/structure/reference-unit.js.map +1 -0
- package/dist/structure/rent-multiple.d.ts +2 -22
- package/dist/structure/rent-multiple.d.ts.map +1 -1
- package/dist/structure/rent-multiple.js +2 -49
- package/dist/structure/rent-multiple.js.map +1 -1
- package/dist/structure/revision-direction.d.ts +51 -0
- package/dist/structure/revision-direction.d.ts.map +1 -0
- package/dist/structure/revision-direction.js +163 -0
- package/dist/structure/revision-direction.js.map +1 -0
- package/dist/structure/running-balance.d.ts +36 -0
- package/dist/structure/running-balance.d.ts.map +1 -0
- package/dist/structure/running-balance.js +126 -0
- package/dist/structure/running-balance.js.map +1 -0
- package/dist/structure/scaled-quantities.d.ts +1 -1
- package/dist/structure/scaled-quantities.d.ts.map +1 -1
- package/dist/structure/scaled-quantities.js +23 -6
- package/dist/structure/scaled-quantities.js.map +1 -1
- package/dist/structure/serial-range.d.ts +9 -0
- package/dist/structure/serial-range.d.ts.map +1 -0
- package/dist/structure/serial-range.js +41 -0
- package/dist/structure/serial-range.js.map +1 -0
- package/dist/structure/share-amount.d.ts +55 -0
- package/dist/structure/share-amount.d.ts.map +1 -0
- package/dist/structure/share-amount.js +162 -0
- package/dist/structure/share-amount.js.map +1 -0
- package/dist/structure/shift-times.d.ts +32 -0
- package/dist/structure/shift-times.d.ts.map +1 -0
- package/dist/structure/shift-times.js +112 -0
- package/dist/structure/shift-times.js.map +1 -0
- package/dist/structure/span-label.d.ts +3 -0
- package/dist/structure/span-label.d.ts.map +1 -0
- package/dist/structure/span-label.js +27 -0
- package/dist/structure/span-label.js.map +1 -0
- package/dist/structure/stated-multiple.d.ts +39 -0
- package/dist/structure/stated-multiple.d.ts.map +1 -0
- package/dist/structure/stated-multiple.js +49 -0
- package/dist/structure/stated-multiple.js.map +1 -0
- package/dist/structure/stated-period.d.ts +3 -2
- package/dist/structure/stated-period.d.ts.map +1 -1
- package/dist/structure/stated-period.js +17 -11
- package/dist/structure/stated-period.js.map +1 -1
- package/dist/structure/table-scale.d.ts +45 -0
- package/dist/structure/table-scale.d.ts.map +1 -0
- package/dist/structure/table-scale.js +188 -0
- package/dist/structure/table-scale.js.map +1 -0
- package/dist/structure/tax-price.d.ts +29 -0
- package/dist/structure/tax-price.d.ts.map +1 -0
- package/dist/structure/tax-price.js +112 -0
- package/dist/structure/tax-price.js.map +1 -0
- package/dist/structure/tax.d.ts +2 -0
- package/dist/structure/tax.d.ts.map +1 -1
- package/dist/structure/tax.js +46 -23
- package/dist/structure/tax.js.map +1 -1
- package/dist/structure/tier-threshold.d.ts +65 -0
- package/dist/structure/tier-threshold.d.ts.map +1 -0
- package/dist/structure/tier-threshold.js +170 -0
- package/dist/structure/tier-threshold.js.map +1 -0
- package/dist/structure/time-range.d.ts +2 -0
- package/dist/structure/time-range.d.ts.map +1 -1
- package/dist/structure/time-range.js +7 -2
- package/dist/structure/time-range.js.map +1 -1
- package/dist/structure/total-line.d.ts +34 -2
- package/dist/structure/total-line.d.ts.map +1 -1
- package/dist/structure/total-line.js +124 -3
- package/dist/structure/total-line.js.map +1 -1
- package/dist/structure/total-row-blank.d.ts +10 -0
- package/dist/structure/total-row-blank.d.ts.map +1 -0
- package/dist/structure/total-row-blank.js +15 -0
- package/dist/structure/total-row-blank.js.map +1 -0
- package/dist/structure/total.d.ts +13 -3
- package/dist/structure/total.d.ts.map +1 -1
- package/dist/structure/total.js +80 -7
- package/dist/structure/total.js.map +1 -1
- package/dist/structure/variance-table.d.ts +34 -0
- package/dist/structure/variance-table.d.ts.map +1 -0
- package/dist/structure/variance-table.js +130 -0
- package/dist/structure/variance-table.js.map +1 -0
- package/dist/table-names.d.ts +4 -3
- package/dist/table-names.d.ts.map +1 -1
- package/dist/table-names.js +6 -6
- package/dist/table-names.js.map +1 -1
- package/dist/unlabelled-references.d.ts +16 -0
- package/dist/unlabelled-references.d.ts.map +1 -0
- package/dist/unlabelled-references.js +73 -0
- package/dist/unlabelled-references.js.map +1 -0
- package/dist/vehicle-plates.d.ts +28 -0
- package/dist/vehicle-plates.d.ts.map +1 -0
- package/dist/vehicle-plates.js +116 -0
- package/dist/vehicle-plates.js.map +1 -0
- package/dist/whole-word-runs.d.ts +24 -0
- package/dist/whole-word-runs.d.ts.map +1 -0
- package/dist/whole-word-runs.js +26 -0
- package/dist/whole-word-runs.js.map +1 -0
- package/package.json +4 -3
- package/rules/absolute-exception.yaml +1 -1
- package/rules/ai-generated-composite.yaml +1 -1
- package/rules/ai-tell.yaml +1 -1
- package/rules/amount-range-reversed.yaml +1 -1
- package/rules/amount-scale-consistency.yaml +1 -1
- package/rules/announcing-opener.yaml +1 -1
- package/rules/annual-holidays-mismatch.yaml +65 -0
- package/rules/annual-pay-mismatch.yaml +64 -0
- package/rules/article-sound.yaml +1 -1
- package/rules/assistant-residue.yaml +1 -1
- package/rules/attachment-not-attached.yaml +1 -1
- package/rules/backorder-mismatch.yaml +57 -0
- package/rules/bmi-mismatch.yaml +63 -0
- package/rules/bold-label-list.yaml +1 -1
- package/rules/broken-link.yaml +1 -1
- package/rules/capacity-runtime-mismatch.yaml +1 -1
- package/rules/change-rate-mismatch.yaml +6 -6
- package/rules/chat-citation-residue.yaml +2 -2
- package/rules/cliche.yaml +2 -2
- package/rules/closing-balance-mismatch.yaml +63 -0
- package/rules/colon-lead-in.yaml +1 -1
- package/rules/comparative-without-baseline.yaml +1 -1
- package/rules/concrete-evidence-density.yaml +1 -1
- package/rules/connection-time-short.yaml +1 -1
- package/rules/contact-variant.yaml +4 -4
- package/rules/contrast-framing.yaml +2 -2
- package/rules/cross-doc-broken-link.yaml +1 -1
- package/rules/cross-doc-fact-conflict.yaml +1 -1
- package/rules/cross-doc-term-variant.yaml +1 -1
- package/rules/cumulative-below-current.yaml +59 -0
- package/rules/currency-column-mix.yaml +70 -0
- package/rules/currency-notation-consistency.yaml +2 -2
- package/rules/cushion-phrase-density.yaml +1 -1
- package/rules/dangling-participle.yaml +2 -2
- package/rules/dangling-reference.yaml +1 -1
- package/rules/date-format-consistency.yaml +1 -1
- package/rules/date-outside-period.yaml +5 -5
- package/rules/date-range-reversed.yaml +2 -2
- package/rules/date-stamp-order.yaml +2 -2
- package/rules/date-without-year.yaml +12 -12
- package/rules/deadline-after-event.yaml +11 -6
- package/rules/deductible-exceeds-limit.yaml +54 -0
- package/rules/defined-name-repeated.yaml +3 -3
- package/rules/defined-term-form.yaml +2 -2
- package/rules/delivered-over-ordered.yaml +57 -0
- package/rules/demonstrative-opener-run.yaml +1 -1
- package/rules/discount-rate-mismatch.yaml +66 -0
- package/rules/due-before-issue.yaml +33 -12
- package/rules/duration-mismatch.yaml +16 -7
- package/rules/duration-product-mismatch.yaml +11 -3
- package/rules/elapsed-years-mismatch.yaml +11 -6
- package/rules/email-greeting-closing.yaml +2 -2
- package/rules/empty-conclusion.yaml +1 -1
- package/rules/empty-intensifier.yaml +1 -1
- package/rules/empty-list-item.yaml +1 -1
- package/rules/empty-section.yaml +1 -1
- package/rules/empty-table-cell.yaml +2 -2
- package/rules/expletive-construction.yaml +1 -1
- package/rules/fact-conflict.yaml +16 -4
- package/rules/figurative-density.yaml +1 -1
- package/rules/figure-reference-order.yaml +1 -1
- package/rules/footnote-mismatch.yaml +1 -1
- package/rules/fullwidth-alnum-consistency.yaml +1 -1
- package/rules/gpa-mismatch.yaml +80 -0
- package/rules/heading-end-punctuation-mix.yaml +1 -1
- package/rules/heading-level-skip.yaml +1 -1
- package/rules/heading-numbering-mix.yaml +3 -3
- package/rules/homophone-slip.yaml +1 -1
- package/rules/humble-for-others.yaml +1 -1
- package/rules/idiom-misuse.yaml +1 -1
- package/rules/ime-residue.yaml +1 -1
- package/rules/impossible-date.yaml +10 -6
- package/rules/installment-total-mismatch.yaml +58 -0
- package/rules/interest-mismatch.yaml +50 -0
- package/rules/interval-count-mismatch.yaml +1 -1
- package/rules/invisible-character.yaml +1 -1
- package/rules/kana-function-word.yaml +2 -2
- package/rules/katakana-density.yaml +1 -1
- package/rules/katakana-long-vowel.yaml +2 -2
- package/rules/kutoten-consistency.yaml +1 -1
- package/rules/latin-spacing.yaml +20 -6
- package/rules/layout-code-mismatch.yaml +1 -1
- package/rules/less-for-fewer.yaml +1 -1
- package/rules/line-amount-mismatch.yaml +8 -7
- package/rules/link-text-url-mismatch.yaml +1 -1
- package/rules/list-item-form-mix.yaml +1 -1
- package/rules/lookalike-character.yaml +1 -1
- package/rules/max-kanji-continuous.yaml +1 -1
- package/rules/meter-usage-mismatch.yaml +64 -0
- package/rules/misconversion.yaml +1 -1
- package/rules/modal-conflict.yaml +1 -1
- package/rules/name-variant.yaml +12 -3
- package/rules/net-amount-mismatch.yaml +57 -0
- package/rules/net-over-gross.yaml +57 -0
- package/rules/no-doubled-joshi.yaml +1 -1
- package/rules/no-mixed-desumasu.yaml +1 -1
- package/rules/no-nakaguro-parallel.yaml +1 -1
- package/rules/nominalization.yaml +1 -1
- package/rules/nonstandard-word.yaml +1 -1
- package/rules/number-style-consistency.yaml +3 -3
- package/rules/number-without-unit.yaml +1 -1
- package/rules/number-word-figure-mismatch.yaml +1 -1
- package/rules/numbering-gap.yaml +1 -1
- package/rules/obligation-without-deadline.yaml +1 -1
- package/rules/ordinal-suffix-mismatch.yaml +1 -1
- package/rules/orthographic-variant.yaml +2 -2
- package/rules/outside-announced-list.yaml +1 -1
- package/rules/padded-intro.yaml +1 -1
- package/rules/paragraph-restatement.yaml +1 -1
- package/rules/party-role-name.yaml +3 -3
- package/rules/percent-sum-mismatch.yaml +2 -2
- package/rules/period-label-conflict.yaml +68 -0
- package/rules/period-multiple-mismatch.yaml +61 -0
- package/rules/period-part-exceeds-whole.yaml +62 -0
- package/rules/person-consistency.yaml +1 -1
- package/rules/phone-number-variant.yaml +3 -3
- package/rules/preferred-term.yaml +2 -2
- package/rules/prerequisite-after-step.yaml +1 -1
- package/rules/product-exceeds-maximum.yaml +49 -0
- package/rules/proper-noun-density.yaml +1 -1
- package/rules/quantity-range-reversed.yaml +2 -2
- package/rules/range-band-mismatch.yaml +1 -1
- package/rules/ratio-mismatch.yaml +64 -0
- package/rules/reference-flag-mismatch.yaml +74 -0
- package/rules/reference-number-repeated.yaml +63 -0
- package/rules/reference-number-variant.yaml +81 -0
- package/rules/reference-title-mismatch.yaml +1 -1
- package/rules/reference-topic-missing.yaml +1 -1
- package/rules/reference-unit-mismatch.yaml +62 -0
- package/rules/relative-date-mismatch.yaml +1 -1
- package/rules/request-without-deadline.yaml +3 -3
- package/rules/required-listed-as-preferred.yaml +1 -1
- package/rules/required-sections.yaml +2 -2
- package/rules/requirement-modal.yaml +2 -2
- package/rules/requirement-smell.yaml +1 -1
- package/rules/revision-direction-mismatch.yaml +66 -0
- package/rules/risk-disclosure.yaml +1 -1
- package/rules/running-balance-mismatch.yaml +59 -0
- package/rules/scaled-quantity-mismatch.yaml +1 -1
- package/rules/serial-range-reversed.yaml +52 -0
- package/rules/share-amount-mismatch.yaml +58 -0
- package/rules/share-over-hundred.yaml +1 -1
- package/rules/shell-prompt-mix.yaml +1 -1
- package/rules/space-before-punctuation.yaml +1 -1
- package/rules/spelling-consistency.yaml +1 -1
- package/rules/step-statement-mix.yaml +3 -3
- package/rules/stock-transition.yaml +1 -1
- package/rules/summary-fact-mismatch.yaml +1 -1
- package/rules/table-header-variant.yaml +1 -1
- package/rules/table-unit-mix.yaml +82 -0
- package/rules/taigen-dome-in-prose.yaml +1 -1
- package/rules/tax-mismatch.yaml +13 -7
- package/rules/tier-threshold-mismatch.yaml +73 -0
- package/rules/time-order.yaml +7 -4
- package/rules/time-range-reversed.yaml +9 -4
- package/rules/toc-heading-mismatch.yaml +1 -1
- package/rules/topic-predicate-distance.yaml +1 -1
- package/rules/total-mismatch.yaml +5 -5
- package/rules/ui-label-variant.yaml +1 -1
- package/rules/unclosed-code-fence.yaml +1 -1
- package/rules/uncomparable-graded.yaml +2 -2
- package/rules/undefined-term.yaml +2 -2
- package/rules/unfilled-placeholder.yaml +2 -2
- package/rules/unit-mismatch.yaml +1 -1
- package/rules/unit-spacing-consistency.yaml +1 -1
- package/rules/unknown-word.yaml +1 -1
- package/rules/url-run-on.yaml +1 -1
- package/rules/vague-deadline.yaml +1 -1
- package/rules/vague-figure-reference.yaml +1 -1
- package/rules/vague-word-density.yaml +2 -2
- package/rules/variance-mismatch.yaml +67 -0
- package/rules/very-adjective.yaml +1 -1
- package/rules/walk-time-distance-mismatch.yaml +1 -1
- package/rules/warning-without-action.yaml +1 -1
- package/rules/weasel-word.yaml +2 -2
- package/rules/wordy-phrase.yaml +2 -2
- package/rules/yori-as-from.yaml +1 -1
- package/skills/chaff/SKILL.md +59 -9
- package/src/company-kana-spelling.ts +105 -0
- package/src/company-names.ts +159 -26
- package/src/contacts/table-rows.ts +51 -0
- package/src/derived/age-on-date.ts +161 -0
- package/src/derived/durations.ts +83 -12
- package/src/derived/hours-and-minutes.ts +41 -0
- package/src/derived/hyphenated-counts.ts +38 -0
- package/src/derived/marked-dates.ts +61 -0
- package/src/derived/money-span.ts +10 -0
- package/src/derived/period-parts.ts +360 -0
- package/src/derived/readable-date.ts +63 -0
- package/src/derived/stays.ts +7 -2
- package/src/derived/timesheet-hours.ts +112 -0
- package/src/derived/use-maximum.ts +158 -0
- package/src/derived/working-hours.ts +2 -2
- package/src/detectors/annual-holidays-mismatch.ts +41 -0
- package/src/detectors/annual-pay-mismatch.ts +71 -0
- package/src/detectors/blank-structure.ts +54 -14
- package/src/detectors/bmi-mismatch.ts +82 -0
- package/src/detectors/change-rate.ts +27 -4
- package/src/detectors/closing-balance-mismatch.ts +52 -0
- package/src/detectors/contact-variant.ts +8 -2
- package/src/detectors/cumulative-below-current.ts +30 -0
- package/src/detectors/currency-column.ts +37 -0
- package/src/detectors/date-any-year.ts +130 -0
- package/src/detectors/date-outside-period.ts +4 -10
- package/src/detectors/date-stamp-order.ts +2 -1
- package/src/detectors/date-year.ts +55 -13
- package/src/detectors/deductible-exceeds-limit.ts +55 -0
- package/src/detectors/defined-term-form.ts +6 -23
- package/src/detectors/derived-numbers.ts +50 -89
- package/src/detectors/discount-rate.ts +41 -0
- package/src/detectors/due-date.ts +21 -7
- package/src/detectors/email-letter.ts +45 -15
- package/src/detectors/event-deadline.ts +13 -3
- package/src/detectors/fact-consistency.ts +145 -7
- package/src/detectors/gloss-year.ts +21 -0
- package/src/detectors/gpa-mismatch.ts +43 -0
- package/src/detectors/impossible-date.ts +25 -3
- package/src/detectors/installment-total-mismatch.ts +68 -0
- package/src/detectors/interest.ts +43 -0
- package/src/detectors/lab-columns.ts +9 -0
- package/src/detectors/labelled-age.ts +154 -0
- package/src/detectors/line-amount.ts +58 -3
- package/src/detectors/measured-facts.ts +1 -1
- package/src/detectors/meter-usage.ts +49 -0
- package/src/detectors/name-field.ts +43 -0
- package/src/detectors/name-variant.ts +160 -16
- package/src/detectors/net-amount-mismatch.ts +86 -0
- package/src/detectors/net-gross-weight.ts +39 -0
- package/src/detectors/nominal-step.ts +35 -0
- package/src/detectors/number-style.ts +11 -2
- package/src/detectors/order-quantity.ts +46 -0
- package/src/detectors/orthographic-variant.ts +40 -10
- package/src/detectors/orthography.ts +27 -11
- package/src/detectors/period-label-conflict.ts +43 -0
- package/src/detectors/period-multiple-mismatch.ts +54 -0
- package/src/detectors/period-part.ts +71 -0
- package/src/detectors/range-words.ts +17 -0
- package/src/detectors/ratio-mismatch.ts +116 -0
- package/src/detectors/readable-dates.ts +36 -0
- package/src/detectors/reference-flag.ts +36 -0
- package/src/detectors/reference-number-repeated.ts +25 -0
- package/src/detectors/reference-number-variant.ts +44 -0
- package/src/detectors/reference-unit.ts +24 -0
- package/src/detectors/registry/annual-holidays-mismatch.ts +4 -0
- package/src/detectors/registry/annual-pay-mismatch.ts +4 -0
- package/src/detectors/registry/backorder-mismatch.ts +4 -0
- package/src/detectors/registry/bmi-mismatch.ts +4 -0
- package/src/detectors/registry/closing-balance-mismatch.ts +4 -0
- package/src/detectors/registry/cumulative-below-current.ts +4 -0
- package/src/detectors/registry/currency-column-mix.ts +4 -0
- package/src/detectors/registry/deductible-exceeds-limit.ts +4 -0
- package/src/detectors/registry/delivered-over-ordered.ts +4 -0
- package/src/detectors/registry/discount-rate.ts +4 -0
- package/src/detectors/registry/elapsed-years-mismatch.ts +1 -1
- package/src/detectors/registry/gpa-mismatch.ts +4 -0
- package/src/detectors/registry/installment-total-mismatch.ts +4 -0
- package/src/detectors/registry/interest.ts +4 -0
- package/src/detectors/registry/meter-usage.ts +4 -0
- package/src/detectors/registry/net-amount-mismatch.ts +4 -0
- package/src/detectors/registry/net-over-gross.ts +4 -0
- package/src/detectors/registry/period-label-conflict.ts +4 -0
- package/src/detectors/registry/period-multiple-mismatch.ts +4 -0
- package/src/detectors/registry/period-part-exceeds-whole.ts +4 -0
- package/src/detectors/registry/product-exceeds-maximum.ts +4 -0
- package/src/detectors/registry/ratio-mismatch.ts +4 -0
- package/src/detectors/registry/reference-flag-mismatch.ts +4 -0
- package/src/detectors/registry/reference-number-repeated.ts +4 -0
- package/src/detectors/registry/reference-number-variant.ts +4 -0
- package/src/detectors/registry/reference-unit.ts +4 -0
- package/src/detectors/registry/revision-direction.ts +4 -0
- package/src/detectors/registry/running-balance.ts +4 -0
- package/src/detectors/registry/serial-range.ts +4 -0
- package/src/detectors/registry/share-amount.ts +4 -0
- package/src/detectors/registry/table-unit-mix.ts +4 -0
- package/src/detectors/registry/tier-threshold.ts +4 -0
- package/src/detectors/registry/variance-mismatch.ts +4 -0
- package/src/detectors/relative-dates.ts +2 -1
- package/src/detectors/relative-day-words.ts +2 -1
- package/src/detectors/rent-multiple-mismatch.ts +3 -2
- package/src/detectors/request-owner.ts +5 -2
- package/src/detectors/revision-direction.ts +44 -0
- package/src/detectors/row-sentence-amounts.ts +96 -0
- package/src/detectors/running-balance.ts +31 -0
- package/src/detectors/scaled-quantity.ts +1 -1
- package/src/detectors/serial-range.ts +37 -0
- package/src/detectors/share-amount.ts +51 -0
- package/src/detectors/structure-tree.ts +58 -10
- package/src/detectors/table-scale.ts +37 -0
- package/src/detectors/tax-amount.ts +45 -13
- package/src/detectors/technical-docs.ts +4 -2
- package/src/detectors/tier-threshold.ts +108 -0
- package/src/detectors/time-order.ts +52 -18
- package/src/detectors/use-maximum.ts +38 -0
- package/src/detectors/variance.ts +33 -0
- package/src/detectors/whole-count-findings.ts +48 -0
- package/src/detectors/working-hours-findings.ts +100 -0
- package/src/facts/age-values.ts +124 -0
- package/src/facts/cell-keys.ts +21 -0
- package/src/facts/count-labels.ts +28 -0
- package/src/facts/document-terms.ts +107 -0
- package/src/facts/duration-scale.ts +22 -0
- package/src/facts/duration-values.ts +44 -0
- package/src/facts/fact-values.ts +36 -7
- package/src/facts/labelled-facts.ts +66 -9
- package/src/facts/measure-units.ts +28 -10
- package/src/facts/measures.ts +11 -11
- package/src/facts/qualified-labels.ts +126 -0
- package/src/facts/rate-values.ts +117 -0
- package/src/facts/row-sentence-amounts.ts +113 -0
- package/src/facts/superscript-power.ts +5 -0
- package/src/facts/table-facts.ts +35 -7
- package/src/facts/term-values.ts +236 -0
- package/src/facts/unit-word.ts +13 -0
- package/src/facts/verb-quantity-facts.ts +84 -0
- package/src/facts/whole-counts.ts +183 -0
- package/src/name-char-reading.ts +24 -0
- package/src/name-line-block.ts +40 -0
- package/src/name-lookalike-chars.ts +53 -0
- package/src/name-neighbours.ts +58 -0
- package/src/name-ordinary-word.ts +68 -0
- package/src/name-person.ts +31 -0
- package/src/name-separator.ts +48 -0
- package/src/name-variants.ts +42 -86
- package/src/name-weight.ts +12 -0
- package/src/person-field.ts +43 -0
- package/src/person-full-name.ts +70 -0
- package/src/phone-numbers.ts +54 -18
- package/src/plugin.ts +2 -0
- package/src/product-names.ts +98 -0
- package/src/reference-numbers.ts +55 -0
- package/src/spaced-person-name.ts +97 -0
- package/src/spacing-code.ts +22 -1
- package/src/structure/annual-holidays.ts +222 -0
- package/src/structure/annual-pay.ts +339 -0
- package/src/structure/bmi.ts +133 -0
- package/src/structure/change-rate-table.ts +135 -0
- package/src/structure/change-rate.ts +54 -17
- package/src/structure/closing-balance.ts +104 -0
- package/src/structure/column-date-order.ts +73 -0
- package/src/structure/compound-hours.ts +49 -0
- package/src/structure/cumulative-below-current.ts +66 -0
- package/src/structure/currency-column.ts +97 -0
- package/src/structure/date-deadline-mark.ts +30 -0
- package/src/structure/date-outside-period.ts +17 -9
- package/src/structure/date-range.ts +6 -9
- package/src/structure/deadline-after-event.ts +125 -8
- package/src/structure/deductible-limit.ts +255 -0
- package/src/structure/discount-rate.ts +209 -0
- package/src/structure/generic-role.ts +8 -0
- package/src/structure/gpa.ts +218 -0
- package/src/structure/installment-total.ts +343 -0
- package/src/structure/interest.ts +133 -0
- package/src/structure/key-value-row.ts +45 -0
- package/src/structure/lab-columns.ts +21 -0
- package/src/structure/labelled-date-order.ts +68 -52
- package/src/structure/labelled-order.ts +122 -0
- package/src/structure/labelled-time-order.ts +100 -0
- package/src/structure/line-amount-label.ts +100 -0
- package/src/structure/line-amount-rate.ts +178 -0
- package/src/structure/line-amount-unit.ts +16 -0
- package/src/structure/line-amount.ts +200 -48
- package/src/structure/meter-usage-read.ts +139 -0
- package/src/structure/meter-usage.ts +224 -0
- package/src/structure/net-amount.ts +243 -0
- package/src/structure/net-gross-weight.ts +97 -0
- package/src/structure/order-quantity.ts +125 -0
- package/src/structure/party-role.ts +4 -1
- package/src/structure/percent-sum.ts +3 -0
- package/src/structure/period-label-conflict.ts +174 -0
- package/src/structure/period-labels.ts +147 -0
- package/src/structure/period-multiple.ts +186 -0
- package/src/structure/quantity-range.ts +1 -8
- package/src/structure/range-bands.ts +1 -1
- package/src/structure/range-years.ts +75 -0
- package/src/structure/ratio.ts +296 -0
- package/src/structure/reference-flags.ts +156 -0
- package/src/structure/reference-number-repeated.ts +57 -0
- package/src/structure/reference-unit.ts +105 -0
- package/src/structure/rent-multiple.ts +12 -82
- package/src/structure/revision-direction.ts +214 -0
- package/src/structure/running-balance.ts +157 -0
- package/src/structure/scaled-quantities.ts +20 -6
- package/src/structure/serial-range.ts +52 -0
- package/src/structure/share-amount.ts +206 -0
- package/src/structure/shift-times.ts +136 -0
- package/src/structure/span-label.ts +26 -0
- package/src/structure/stated-multiple.ts +82 -0
- package/src/structure/stated-period.ts +23 -11
- package/src/structure/table-scale.ts +239 -0
- package/src/structure/tax-price.ts +136 -0
- package/src/structure/tax.ts +55 -20
- package/src/structure/tier-threshold.ts +218 -0
- package/src/structure/time-range.ts +9 -3
- package/src/structure/total-line.ts +174 -5
- package/src/structure/total-row-blank.ts +23 -0
- package/src/structure/total.ts +122 -13
- package/src/structure/variance-table.ts +167 -0
- package/src/table-names.ts +6 -6
- package/src/unlabelled-references.ts +83 -0
- package/src/vehicle-plates.ts +142 -0
- package/src/whole-word-runs.ts +38 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import type { NameCue } from "./name-cue.ts";
|
|
2
|
+
import type { NameMention } from "./name-variants.ts";
|
|
3
|
+
import type { Span, Token } from "./plugin.ts";
|
|
4
|
+
import { isFollowedBySuffix } from "./name-person.ts";
|
|
5
|
+
|
|
6
|
+
// 空白(半角か全角)を挟んで書いた姓と名(田中 裕子)。解析器は空白で名前を切るので、名だけ(裕子)が名前の現れになり、別の人の
|
|
7
|
+
// 名(鈴木 祐子 の 祐子)と比べてしまう。姓と名を一つの現れにして、名前まるごとで比べる。
|
|
8
|
+
|
|
9
|
+
/** 姓と名のあいだの空白(半角、全角)。 */
|
|
10
|
+
const NAME_SPACE = /^[ \u3000]$/u;
|
|
11
|
+
|
|
12
|
+
const nameTypeOf = (token: Token | undefined): string | undefined => (token?.pos === "PROPN" ? token.features?.["NameType"] : undefined);
|
|
13
|
+
|
|
14
|
+
/** 姓の後ろの名。解析器が名(Giv)と読む語か、名を地名と読んでも(千尋 を Geo)後ろに敬称が付く、姓でない固有名詞。 */
|
|
15
|
+
const isGivenName = (token: Token | undefined, tokens: readonly Token[], suffixes: readonly string[]): boolean => {
|
|
16
|
+
const type = nameTypeOf(token);
|
|
17
|
+
return type === "Giv" || (token?.pos === "PROPN" && type !== "Sur" && isFollowedBySuffix(token, tokens, suffixes));
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
/** 姓と名を分ける空白の語。前の語を解析器が姓(Sur)と読み、後ろの語が名の、空白一つ。suffixes は敬称(様、さん)。 */
|
|
21
|
+
export const fullNameGaps = (tokens: readonly Token[], suffixes: readonly string[] = []): Span[] =>
|
|
22
|
+
tokens.flatMap((token, index) =>
|
|
23
|
+
NAME_SPACE.test(token.surface) && nameTypeOf(tokens[index - 1]) === "Sur" && isGivenName(tokens[index + 1], tokens, suffixes) ? [token.span] : [],
|
|
24
|
+
);
|
|
25
|
+
|
|
26
|
+
const CUE_STRENGTH: readonly (NameCue | undefined)[] = [undefined, "bare", "slot", "person"];
|
|
27
|
+
|
|
28
|
+
/** 二つの現れの名前らしさの強いほう。前置き(担当の)は姓の前に、敬称(様)は名の後ろに付く。 */
|
|
29
|
+
const strongerCue = (left: NameCue | undefined, right: NameCue | undefined): NameCue | undefined =>
|
|
30
|
+
CUE_STRENGTH.indexOf(left) >= CUE_STRENGTH.indexOf(right) ? left : right;
|
|
31
|
+
|
|
32
|
+
const joined = (surname: NameMention, given: NameMention): NameMention => {
|
|
33
|
+
const cue = strongerCue(surname.cue, given.cue);
|
|
34
|
+
return {
|
|
35
|
+
...surname,
|
|
36
|
+
surface: `${surname.surface} ${given.surface}`,
|
|
37
|
+
reading: surname.reading === undefined || given.reading === undefined ? undefined : surname.reading + given.reading,
|
|
38
|
+
words: [...surname.words, ...given.words],
|
|
39
|
+
person: surname.person === true || given.person === true,
|
|
40
|
+
...(cue === undefined ? {} : { cue }),
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
/** 空白をちょうど挟む、一語の姓と名か。名は解析器が二語に切ることがある(健汰 を 健 と 汰)。 */
|
|
45
|
+
const isPair = (surname: NameMention, given: NameMention, gaps: readonly Span[]): boolean =>
|
|
46
|
+
surname.words.length === 1 && gaps.some((gap) => gap.start === surname.offset + surname.surface.length && gap.end === given.offset);
|
|
47
|
+
|
|
48
|
+
/** 空白を挟んだ一語の姓と名(田中 裕子)を、一つの名前の現れにする。名だけ、姓だけの現れはそのまま。 */
|
|
49
|
+
export const joinFullNames = (mentions: readonly NameMention[], gaps: readonly Span[]): NameMention[] => {
|
|
50
|
+
const names: NameMention[] = [];
|
|
51
|
+
mentions
|
|
52
|
+
.toSorted((left, right) => left.offset - right.offset)
|
|
53
|
+
.forEach((mention) => {
|
|
54
|
+
const previous = names.at(-1);
|
|
55
|
+
if (previous !== undefined && isPair(previous, mention, gaps)) names.splice(-1, 1, joined(previous, mention));
|
|
56
|
+
else names.push(mention);
|
|
57
|
+
});
|
|
58
|
+
return names;
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
const LATIN = /\p{Script=Latin}/u;
|
|
62
|
+
const SPACE = /\s/u;
|
|
63
|
+
const withoutSpaces = (surface: string): string => surface.replaceAll(/\s/gu, "");
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* 日本語の名前の、姓と名のあいだに空白を置くかどうかだけが違う二つ(田中 裕子 と 田中裕子)。書き方の揺れとしては指さない。空白の
|
|
67
|
+
* 幅の違い(半角と全角)と、英字の名前の空白(Mac OS と MacOS)は書き方の違いなので、ここには入れない。
|
|
68
|
+
*/
|
|
69
|
+
export const spacedOnly = (left: string, right: string): boolean =>
|
|
70
|
+
!LATIN.test(left) && !LATIN.test(right) && SPACE.test(left) !== SPACE.test(right) && withoutSpaces(left) === withoutSpaces(right);
|
package/src/phone-numbers.ts
CHANGED
|
@@ -34,7 +34,8 @@ const COUNTRY_CODE_START = /^\+/u;
|
|
|
34
34
|
const LABEL_TO_NUMBER = /^(?:[\s::..]|\uFE0F)*$/u;
|
|
35
35
|
const NOT_DIGIT = /\D/gu;
|
|
36
36
|
const LATIN_START = /^[A-Za-z]/u;
|
|
37
|
-
|
|
37
|
+
/** A Latin label is a whole word among Latin letters only: 「FAX受付」 has no spaces between words. */
|
|
38
|
+
const LETTER = /\p{Script=Latin}/u;
|
|
38
39
|
/** How far before a number its label may end: 「電話でのお問合せは、」, "by phone, call". */
|
|
39
40
|
const MAX_LABEL_GAP = 15;
|
|
40
41
|
const URL = /\b(?:https?:\/\/|www\.)\S+/giu;
|
|
@@ -48,23 +49,50 @@ const lastPlace = (before: string, label: string): number => {
|
|
|
48
49
|
};
|
|
49
50
|
|
|
50
51
|
type LabelBefore = { readonly group: string; readonly between: string };
|
|
52
|
+
type LabelHit = { readonly group: string; readonly at: number; readonly end: number };
|
|
51
53
|
|
|
52
|
-
/** The label ending nearest
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
const before = text.slice(lineStart, offset).toLowerCase();
|
|
56
|
-
const nearest = labels
|
|
54
|
+
/** The label ending nearest the end of a line's text, the longest when two end together (携帯電話 over 電話). */
|
|
55
|
+
const nearestLabel = (before: string, labels: readonly LexiconEntry[]): LabelHit | undefined =>
|
|
56
|
+
labels
|
|
57
57
|
.map((entry) => {
|
|
58
58
|
const at = lastPlace(before, entry.pattern);
|
|
59
59
|
return { group: entry.group ?? entry.pattern, at, end: at + entry.pattern.length };
|
|
60
60
|
})
|
|
61
61
|
.filter((hit) => hit.at >= 0 && before.length - hit.end <= MAX_LABEL_GAP)
|
|
62
62
|
.toSorted((a, b) => b.end - a.end || a.at - b.at)[0];
|
|
63
|
-
|
|
63
|
+
|
|
64
|
+
/** A desk's name (窓口, Recall Line) says where a number goes, not what it is: FAX受付窓口 and Fax line name fax numbers. */
|
|
65
|
+
const DESK_GROUP = "desk";
|
|
66
|
+
const DESK_DEFAULT_GROUP = "phone";
|
|
67
|
+
const DIGIT = /\d/u;
|
|
68
|
+
|
|
69
|
+
/** The kind a label right before a desk's name gives its number, with no digits between; a phone number when there is none. */
|
|
70
|
+
const deskKind = (before: string, desk: LabelHit, labels: readonly LexiconEntry[]): string => {
|
|
71
|
+
const kinds = labels.filter((entry) => entry.group !== DESK_GROUP);
|
|
72
|
+
const kind = nearestLabel(before.slice(0, desk.at), kinds);
|
|
73
|
+
return kind === undefined || DIGIT.test(before.slice(kind.end, desk.at)) ? DESK_DEFAULT_GROUP : kind.group;
|
|
64
74
|
};
|
|
65
75
|
|
|
76
|
+
/** The label ending nearest before a number on its line, the kind of number it gives, and what lies between. */
|
|
77
|
+
export const labelBefore = (text: string, offset: number, labels: readonly LexiconEntry[]): LabelBefore | undefined => {
|
|
78
|
+
const lineStart = text.lastIndexOf("\n", offset - 1) + 1;
|
|
79
|
+
const before = text.slice(lineStart, offset).toLowerCase();
|
|
80
|
+
const nearest = nearestLabel(before, labels);
|
|
81
|
+
if (nearest === undefined) return undefined;
|
|
82
|
+
const between = before.slice(nearest.end);
|
|
83
|
+
if (nearest.group !== DESK_GROUP) return { group: nearest.group, between };
|
|
84
|
+
return ANY_LETTER.test(between) ? undefined : { group: deskKind(before, nearest, labels), between };
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
/** A word between a desk's name and the digits says they are something else: Support ticket, 窓口受付番号. */
|
|
88
|
+
const ANY_LETTER = /\p{L}/u;
|
|
89
|
+
const UNCLOSED_OPENING = /^[((](?!.*[))])/u;
|
|
90
|
+
|
|
91
|
+
/** A number as quoted: the bracket the number is put in (窓口(0120-123-456)) is not part of it, an area code's is ((555) 123-4567). */
|
|
92
|
+
const withoutUnclosedBracket = (written: string): string => written.replace(UNCLOSED_OPENING, "");
|
|
93
|
+
|
|
66
94
|
/** URLs covered with spaces, so neither a path segment (/call/) nor an id in one is read. Offsets stay the same. */
|
|
67
|
-
const withoutUrls = (text: string): string => text.replaceAll(URL, (url) => " ".repeat(url.length));
|
|
95
|
+
export const withoutUrls = (text: string): string => text.replaceAll(URL, (url) => " ".repeat(url.length));
|
|
68
96
|
|
|
69
97
|
/** The phone numbers of a text that have a label shortly before them on their line; unlabelled digits and URLs are not read. */
|
|
70
98
|
export const labelledPhoneNumbers = (source: string, labels: readonly LexiconEntry[]): PhoneNumber[] => {
|
|
@@ -75,7 +103,9 @@ export const labelledPhoneNumbers = (source: string, labels: readonly LexiconEnt
|
|
|
75
103
|
const label = labelBefore(text, match.index, labels);
|
|
76
104
|
if (label === undefined) return [];
|
|
77
105
|
if (spaced && !COUNTRY_CODE_START.test(match[0]) && !LABEL_TO_NUMBER.test(label.between)) return [];
|
|
78
|
-
|
|
106
|
+
const matched = match[0].trim();
|
|
107
|
+
const written = withoutUnclosedBracket(matched);
|
|
108
|
+
return [{ offset: match.index + matched.length - written.length, written, digits, label: label.group }];
|
|
79
109
|
};
|
|
80
110
|
return [
|
|
81
111
|
...[...text.matchAll(NUMBER_SHAPE)].flatMap((match) => read(match, false)),
|
|
@@ -83,7 +113,7 @@ export const labelledPhoneNumbers = (source: string, labels: readonly LexiconEnt
|
|
|
83
113
|
].toSorted((a, b) => a.offset - b.offset);
|
|
84
114
|
};
|
|
85
115
|
|
|
86
|
-
/** Whether two
|
|
116
|
+
/** Whether two strings (digits, or a reference number's letters and digits) are the same but for one pair of neighbours swapped. */
|
|
87
117
|
export const swapsNeighbours = (a: string, b: string): boolean => {
|
|
88
118
|
if (a.length !== b.length || a === b) return false;
|
|
89
119
|
const differ = [...a].flatMap((digit, index) => (digit === b[index] ? [] : [index]));
|
|
@@ -91,24 +121,27 @@ export const swapsNeighbours = (a: string, b: string): boolean => {
|
|
|
91
121
|
return differ.length === 2 && first !== undefined && second === first + 1 && a[first] === b[second] && a[second] === b[first];
|
|
92
122
|
};
|
|
93
123
|
|
|
94
|
-
|
|
124
|
+
/** A labelled writing compared with the others of its label: where it is and the label's group. */
|
|
125
|
+
type LabelledWriting = { readonly offset: number; readonly label: string };
|
|
95
126
|
|
|
96
127
|
/**
|
|
97
|
-
* Every writing
|
|
98
|
-
* written fewer times, or the one first written later when both are written as often. Each
|
|
128
|
+
* Every writing that is another writing of the same label with two neighbouring characters swapped (characters is what is
|
|
129
|
+
* compared): of the two, the one written fewer times, or the one first written later when both are written as often. Each
|
|
130
|
+
* comes with the other writing.
|
|
99
131
|
*/
|
|
100
|
-
export const
|
|
101
|
-
const
|
|
102
|
-
const
|
|
132
|
+
export const swappedVariants = <T extends LabelledWriting>(writtenAll: readonly T[], characters: (writing: T) => string): { number: T; other: T }[] => {
|
|
133
|
+
const keyOf = (writing: T): string => `${writing.label}\u0000${characters(writing)}`;
|
|
134
|
+
const writings = writtenAll.reduce((byKey, writing) => byKey.set(keyOf(writing), [...(byKey.get(keyOf(writing)) ?? []), writing]), new Map<string, T[]>());
|
|
135
|
+
const timesOf = (writing: T): number => writings.get(keyOf(writing))?.length ?? 0;
|
|
103
136
|
const firsts = [...writings.values()].flatMap((group) => group.slice(0, 1));
|
|
104
|
-
const minorityOf = (a:
|
|
137
|
+
const minorityOf = (a: T, b: T): T => {
|
|
105
138
|
if (timesOf(a) !== timesOf(b)) return timesOf(a) < timesOf(b) ? a : b;
|
|
106
139
|
return a.offset > b.offset ? a : b;
|
|
107
140
|
};
|
|
108
141
|
return firsts
|
|
109
142
|
.flatMap((first, index) =>
|
|
110
143
|
firsts.slice(index + 1).flatMap((second) => {
|
|
111
|
-
if (first.label !== second.label || !swapsNeighbours(first
|
|
144
|
+
if (first.label !== second.label || !swapsNeighbours(characters(first), characters(second))) return [];
|
|
112
145
|
const minority = minorityOf(first, second);
|
|
113
146
|
const other = minority === first ? second : first;
|
|
114
147
|
return (writings.get(keyOf(minority)) ?? []).map((number) => ({ number, other }));
|
|
@@ -116,3 +149,6 @@ export const phoneVariants = (numbers: readonly PhoneNumber[]): PhoneVariant[] =
|
|
|
116
149
|
)
|
|
117
150
|
.toSorted((a, b) => a.number.offset - b.number.offset);
|
|
118
151
|
};
|
|
152
|
+
|
|
153
|
+
/** Every phone number that is another of the same label with two neighbouring digits swapped (swappedVariants). */
|
|
154
|
+
export const phoneVariants = (numbers: readonly PhoneNumber[]): PhoneVariant[] => swappedVariants(numbers, (number) => number.digits);
|
package/src/plugin.ts
CHANGED
|
@@ -66,6 +66,8 @@ export type LexiconEntry = {
|
|
|
66
66
|
readonly rewrite?: string | undefined;
|
|
67
67
|
/** 語の組の名前。同じ組の語どうしだけを比べる rule が使う(対応する OS を言う語と、対応する言語を言う語を分ける)。 */
|
|
68
68
|
readonly group?: string | undefined;
|
|
69
|
+
/** 元号の元年の西暦の年(令和は 2019)。元号で書いた年を西暦の年にする rule が使う。 */
|
|
70
|
+
readonly first_year?: number | undefined;
|
|
69
71
|
/** pattern を adapter が語に分けたもの。品詞が読めるときだけ core が入れる。語彙表を書く側は書かない。 */
|
|
70
72
|
readonly tokens?: readonly Token[] | undefined;
|
|
71
73
|
};
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { escapeRegExp } from "./orthography.ts";
|
|
2
|
+
|
|
3
|
+
// 製品の名前を、文書の中で二通りに書いた所(ミナモール錠 と ミナモル錠)。製品の名前は、製品の形を言う語(錠、カプセル、クリーム)の
|
|
4
|
+
// すぐ前の、カタカナの連なり。形の語は語彙表 product-form が言い、group が同じ語は同じ形の別の書き方。作った製品の名前は解析器が
|
|
5
|
+
// 固有名詞と読まず、読みも名前の字のとおりにずれるので、人や会社の名前の見方では比べられない。
|
|
6
|
+
|
|
7
|
+
export type ProductForm = { readonly pattern: string; readonly group: string };
|
|
8
|
+
|
|
9
|
+
/** surface は形の語も含めた書いたまま。base はカタカナの名前の部分、form は形の語の組。 */
|
|
10
|
+
export type ProductMention = { readonly surface: string; readonly offset: number; readonly base: string; readonly form: string };
|
|
11
|
+
|
|
12
|
+
export type ProductVariant = { readonly mention: ProductMention; readonly usual: string; readonly kind: "near" };
|
|
13
|
+
|
|
14
|
+
const KATAKANA = /[\p{Script=Katakana}ー]/u;
|
|
15
|
+
/** 形の語の後ろに続くと、長い語の一部になる字(錠剤、液晶、ゲルマニウム、スプレー缶)。 */
|
|
16
|
+
const WORD_CONTINUES = /[\p{Script=Han}\p{Script=Katakana}ー]/u;
|
|
17
|
+
/** 名前の部分の字の数の下限。短いカタカナ(ケア、ハーブ)は製品の名前でなく、ふつうの語のことが多い。 */
|
|
18
|
+
const MIN_NAME_CHARS = 4;
|
|
19
|
+
/** 名前を探す、形の語の前の範囲(UTF-16 の単位)。 */
|
|
20
|
+
const LOOKBACK = 30;
|
|
21
|
+
const LONG_VOWEL = "ー";
|
|
22
|
+
|
|
23
|
+
/** at のすぐ前の、カタカナの連なり。 */
|
|
24
|
+
const katakanaBefore = (source: string, at: number): string => {
|
|
25
|
+
const chars = Array.from(source.slice(Math.max(0, at - LOOKBACK), at));
|
|
26
|
+
return chars.slice(chars.findLastIndex((char) => !KATAKANA.test(char)) + 1).join("");
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const mentionAt = (source: string, form: ProductForm, at: number): ProductMention | undefined => {
|
|
30
|
+
const end = at + form.pattern.length;
|
|
31
|
+
if (WORD_CONTINUES.test(source.charAt(end))) return undefined;
|
|
32
|
+
const base = katakanaBefore(source, at);
|
|
33
|
+
if (Array.from(base).length < MIN_NAME_CHARS) return undefined;
|
|
34
|
+
return { surface: source.slice(at - base.length, end), offset: at - base.length, base, form: form.group };
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
/** 文書の中の製品の名前の現れ。同じ所で終わる形の語は長いほうを取る(顆粒 と 粒)。 */
|
|
38
|
+
export const productMentionsIn = (source: string, forms: readonly ProductForm[]): ProductMention[] => {
|
|
39
|
+
const ends = new Set<number>();
|
|
40
|
+
return forms
|
|
41
|
+
.toSorted((left, right) => right.pattern.length - left.pattern.length)
|
|
42
|
+
.flatMap((form) =>
|
|
43
|
+
[...source.matchAll(new RegExp(escapeRegExp(form.pattern), "gu"))].flatMap((match) => {
|
|
44
|
+
const end = match.index + form.pattern.length;
|
|
45
|
+
if (ends.has(end)) return [];
|
|
46
|
+
const mention = mentionAt(source, form, match.index);
|
|
47
|
+
if (mention !== undefined) ends.add(end);
|
|
48
|
+
return mention === undefined ? [] : [mention];
|
|
49
|
+
}),
|
|
50
|
+
)
|
|
51
|
+
.toSorted((left, right) => left.offset - right.offset);
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
/** 同じ長さで、一字だけ違う(ミナモール と ミナモオル)。 */
|
|
55
|
+
const isOneReplaced = (left: readonly string[], right: readonly string[]): boolean =>
|
|
56
|
+
left.length === right.length && left.filter((char, index) => char !== right[index]).length === 1;
|
|
57
|
+
|
|
58
|
+
/** longer から長音の記号を一つ抜くと shorter になる(ミナモール と ミナモル)。 */
|
|
59
|
+
const dropsOneLongVowel = (longer: readonly string[], shorter: readonly string[]): boolean =>
|
|
60
|
+
longer.length === shorter.length + 1 && longer.some((char, index) => char === LONG_VOWEL && longer.toSpliced(index, 1).join("") === shorter.join(""));
|
|
61
|
+
|
|
62
|
+
/** 二つのカタカナの名前が、一字の置き換えか、長音の記号一つの有る無しだけ違う。 */
|
|
63
|
+
export const isKanaSlip = (left: string, right: string): boolean => {
|
|
64
|
+
const [leftChars, rightChars] = [Array.from(left), Array.from(right)];
|
|
65
|
+
return isOneReplaced(leftChars, rightChars) || dropsOneLongVowel(leftChars, rightChars) || dropsOneLongVowel(rightChars, leftChars);
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
type Counted = { readonly mention: ProductMention; readonly count: number };
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* slip が usual の書き損じと言えるか。形の語の組が同じで、名前の部分が一字違いか長音の有る無しで、slip が一度だけ、usual が二度以上。
|
|
72
|
+
* 一字違いの別の製品もあるので、何度も書いた名前と一度だけの名前の組に限る。
|
|
73
|
+
*/
|
|
74
|
+
export const isProductSlip = (slip: Counted, usual: Counted): boolean =>
|
|
75
|
+
slip.count === 1 && usual.count >= 2 && slip.mention.form === usual.mention.form && isKanaSlip(slip.mention.base, usual.mention.base);
|
|
76
|
+
|
|
77
|
+
/** 名前と形の語の組ごとに数える。同じ組の別の書き方(錠 と 錠剤)は同じ製品の現れ。 */
|
|
78
|
+
const talliesOf = (mentions: readonly ProductMention[]): Counted[] => {
|
|
79
|
+
const tallies = new Map<string, Counted>();
|
|
80
|
+
mentions.forEach((mention) => {
|
|
81
|
+
const key = `${mention.base}\u0000${mention.form}`;
|
|
82
|
+
const tally = tallies.get(key);
|
|
83
|
+
tallies.set(key, { mention: tally?.mention ?? mention, count: (tally?.count ?? 0) + 1 });
|
|
84
|
+
});
|
|
85
|
+
return [...tallies.values()];
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
/** 多いほうが先。同数なら先に書いたほう。 */
|
|
89
|
+
const byUsage = (left: Counted, right: Counted): number => right.count - left.count || left.mention.offset - right.mention.offset;
|
|
90
|
+
|
|
91
|
+
/** 製品の名前の、一度だけ書いた書き損じ。相手のうち一番多いものと比べる。 */
|
|
92
|
+
export const productVariants = (mentions: readonly ProductMention[]): ProductVariant[] => {
|
|
93
|
+
const tallies = talliesOf(mentions);
|
|
94
|
+
return tallies.flatMap((tally): ProductVariant[] => {
|
|
95
|
+
const [usual] = tallies.filter((other) => isProductSlip(tally, other)).toSorted(byUsage);
|
|
96
|
+
return usual === undefined ? [] : [{ mention: tally.mention, usual: usual.mention.surface, kind: "near" }];
|
|
97
|
+
});
|
|
98
|
+
};
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
// A document's own reference number (a booking or confirmation number) written two ways: the same letters and digits with
|
|
2
|
+
// two neighbours swapped (MN-48215 and MN-48251), both right after a label of the same kind. Pure: reads the document's text;
|
|
3
|
+
// the labels (予約番号, Booking number) come from the language's reference-label lexicon, grouped by what they label.
|
|
4
|
+
import type { LexiconEntry } from "./plugin.ts";
|
|
5
|
+
import { labelBefore, swappedVariants, withoutUrls } from "./phone-numbers.ts";
|
|
6
|
+
|
|
7
|
+
/** A reference number as written, where it is, its letters and digits without separators, and its label's group. */
|
|
8
|
+
export type ReferenceNumber = { readonly offset: number; readonly written: string; readonly characters: string; readonly label: string };
|
|
9
|
+
|
|
10
|
+
/** A reference number that is another of the same label with two neighbours swapped, and that other number. */
|
|
11
|
+
export type ReferenceVariant = { readonly number: ReferenceNumber; readonly other: ReferenceNumber };
|
|
12
|
+
|
|
13
|
+
/** Letters and digits, half or full width, joined by hyphens (MN-48215, AR730514, MN-48215). */
|
|
14
|
+
export const REFERENCE_SHAPE = /(?<![A-Za-z0-9A-Za-z0-9\-‐−-])[A-Za-z0-9A-Za-z0-9]+(?:[-‐−-][A-Za-z0-9A-Za-z0-9]+)*/gu;
|
|
15
|
+
/** Digits enough that a swap is a slip in one number, not two short codes (A-12, B-21). */
|
|
16
|
+
export const MIN_DIGITS = 4;
|
|
17
|
+
export const MAX_CHARACTERS = 24;
|
|
18
|
+
const DIGIT = /\d/gu;
|
|
19
|
+
const SEPARATOR = /[-‐−-]/gu;
|
|
20
|
+
/** Only spaces and a colon, comma or opening bracket between the label and its number (「予約番号:」, "booking number, "); not a sentence's end. */
|
|
21
|
+
const LABEL_TO_NUMBER = /^[\s::,,、##((「『[[]{0,4}$/u;
|
|
22
|
+
|
|
23
|
+
export const charactersOf = (written: string): string => written.normalize("NFKC").replaceAll(SEPARATOR, "").replaceAll(" ", "").toUpperCase();
|
|
24
|
+
|
|
25
|
+
/** A first group a number in groups may open with: capitals and digits only (HM, 5520), not a word (No, Member). */
|
|
26
|
+
const OPENING_GROUP = /^[0-9A-Z0-9A-Z]+$/u;
|
|
27
|
+
/** One space, then four or more capitals and digits holding a digit, not run on into a word (8137 の; not 100 copies, 080, 2名, 2nd). */
|
|
28
|
+
const FOLLOWING_GROUP = /^ (?=[0-9A-Z0-9A-Z]*[0-90-9])[0-9A-Z0-9A-Z]{4,}(?)/u;
|
|
29
|
+
|
|
30
|
+
/** The groups after a number's first, written one space apart on its line (HM 5520 8137); none when the first is not a group. Reading stops once past the longest number, so a run-on is still too long. */
|
|
31
|
+
export const followingGroups = (text: string, end: number, first: string): string => {
|
|
32
|
+
if (!OPENING_GROUP.test(first)) return "";
|
|
33
|
+
const read = (at: number, sofar: string): string => {
|
|
34
|
+
const tooLong = charactersOf(first + sofar).length > MAX_CHARACTERS;
|
|
35
|
+
const group = tooLong ? undefined : FOLLOWING_GROUP.exec(text.slice(at, at + MAX_CHARACTERS + 1))?.[0];
|
|
36
|
+
return group === undefined ? sofar : read(at + group.length, sofar + group);
|
|
37
|
+
};
|
|
38
|
+
return read(end, "");
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
/** The reference numbers of a text written right after a label on their line; unlabelled codes and URLs are not read. */
|
|
42
|
+
export const labelledReferenceNumbers = (source: string, labels: readonly LexiconEntry[]): ReferenceNumber[] => {
|
|
43
|
+
const text = withoutUrls(source);
|
|
44
|
+
return [...text.matchAll(REFERENCE_SHAPE)].flatMap((match) => {
|
|
45
|
+
const written = match[0] + followingGroups(text, match.index + match[0].length, match[0]);
|
|
46
|
+
const characters = charactersOf(written);
|
|
47
|
+
if ((characters.match(DIGIT)?.length ?? 0) < MIN_DIGITS || characters.length > MAX_CHARACTERS) return [];
|
|
48
|
+
const label = labelBefore(text, match.index, labels);
|
|
49
|
+
if (label === undefined || !LABEL_TO_NUMBER.test(label.between)) return [];
|
|
50
|
+
return [{ offset: match.index, written, characters, label: label.group }];
|
|
51
|
+
});
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
/** Every writing of a reference number that is another of the same label with two neighbours swapped (swappedVariants). */
|
|
55
|
+
export const referenceVariants = (numbers: readonly ReferenceNumber[]): ReferenceVariant[] => swappedVariants(numbers, (number) => number.characters);
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import type { Span } from "./plugin.ts";
|
|
2
|
+
import { isInPersonField as isFieldValue } from "./person-field.ts";
|
|
3
|
+
|
|
4
|
+
// 空白を挟んで書いた姓と名(高瀬 誠、佐伯 未咲)を、解析器の品詞に頼らず、前後の語で人の名前と読む。解析器は姓を地名やふつうの
|
|
5
|
+
// 名詞と読み、名を二語に切ることがあるので、姓と名を一つの名前にできない。後ろに敬称か肩書き(様、部長)が付くか、人を書く欄
|
|
6
|
+
// (氏名:、承認者:)の行の終わりにあれば、人の名前と読む。欄に書いた名と同じ名を空白の後ろに書いたもの(受託者:西村 亮 の
|
|
7
|
+
// 文書の 西邑 亮が)も、人の名前と読む。
|
|
8
|
+
|
|
9
|
+
/** suffixes は敬称(様、さん)、titles は名前のすぐ後ろの肩書き(部長)、labels は人を書く欄の語(氏名、承認者)。語彙表から。 */
|
|
10
|
+
export type SpacedNameCues = { readonly suffixes: readonly string[]; readonly titles: readonly string[]; readonly labels: readonly string[] };
|
|
11
|
+
|
|
12
|
+
export type SpacedName = { readonly surname: Span; readonly given: Span };
|
|
13
|
+
|
|
14
|
+
/** 姓と名それぞれの字数の上限。長い漢字の連なり(営業部長)は姓でない。 */
|
|
15
|
+
const MAX_PART = 3;
|
|
16
|
+
/** 姓の前を読む範囲(UTF-16 の単位)。姓より長い漢字の連なりを、長いまま見るため。 */
|
|
17
|
+
const LOOKBACK = 12;
|
|
18
|
+
const NAME_SPACE = /[\u0020\u3000]/gu;
|
|
19
|
+
const HAN = /^\p{Script=Han}$/u;
|
|
20
|
+
const LEADING_HAN = /^\p{Script=Han}+/u;
|
|
21
|
+
/** 文字列の頭と終わりの一字(𠮷 は UTF-16 の二つで一字)。 */
|
|
22
|
+
const FIRST_LETTER = /^./u;
|
|
23
|
+
const LAST_LETTER = /.$/u;
|
|
24
|
+
const ONE_SPACE = /^[\u0020\u3000]/u;
|
|
25
|
+
/** 欄の語と名前のあいだに置かない記号。文の中の「:」の後ろは欄ではない。 */
|
|
26
|
+
const NOT_IN_FIELD = /[。、,,::]/u;
|
|
27
|
+
const FIELD_COLON = /[::]/u;
|
|
28
|
+
/** 欄の行の頭の、Markdown の印(箇条書き、引用、見出し)。 */
|
|
29
|
+
const LINE_MARKS = /^[\s>*#+-]*/u;
|
|
30
|
+
/** 欄の名前の後ろ: 行の終わり。日付などの括弧一つで行が終わってもよい(髙瀬 誠(2026年4月1日))。 */
|
|
31
|
+
const FIELD_END = /^[\u0020\u3000]*(?:[((][^(())\n]*[))][\u0020\u3000]*)?(?:\r?\n|$)/u;
|
|
32
|
+
|
|
33
|
+
const isHan = (letter: string | undefined): boolean => letter !== undefined && HAN.test(letter);
|
|
34
|
+
|
|
35
|
+
/** 人を書く欄の行(承認者:営業部長 高瀬 誠)で、姓が欄の語の後ろにあるか。 */
|
|
36
|
+
const isInPersonField = (source: string, surnameStart: number, labels: readonly string[]): boolean => {
|
|
37
|
+
const head = source.slice(source.lastIndexOf("\n", surnameStart - 1) + 1, surnameStart);
|
|
38
|
+
const colon = head.search(FIELD_COLON);
|
|
39
|
+
if (colon < 0 || NOT_IN_FIELD.test(head.slice(colon + 1))) return false;
|
|
40
|
+
const label = head.slice(0, colon).replace(LINE_MARKS, "").trimEnd();
|
|
41
|
+
return labels.some((word) => label.endsWith(word));
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
/** 空白の後ろの漢字の連なりの頭から、敬称か肩書きの前までを名と読む(誠部長 の 誠、健太 様 の 健太)。 */
|
|
45
|
+
const givenBeforeSuffix = (run: string, after: string, words: readonly string[]): string | undefined => {
|
|
46
|
+
const letters = [...run];
|
|
47
|
+
return letters
|
|
48
|
+
.slice(0, MAX_PART)
|
|
49
|
+
.map((_letter, index) => letters.slice(0, index + 1).join(""))
|
|
50
|
+
.find((given) => {
|
|
51
|
+
const rest = given.length === run.length ? after.replace(ONE_SPACE, "") : run.slice(given.length) + after;
|
|
52
|
+
return words.some((word) => rest.startsWith(word));
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
/** fieldGivens は、文書が人を書く欄に書いた名(亮)。その名と同じ漢字の連なりは、敬称が無くても名と読む。 */
|
|
57
|
+
const givenAt = (source: string, start: number, cues: SpacedNameCues, inField: boolean, fieldGivens: ReadonlySet<string>): string | undefined => {
|
|
58
|
+
const run = LEADING_HAN.exec(source.slice(start, start + LOOKBACK))?.[0];
|
|
59
|
+
if (run === undefined) return undefined;
|
|
60
|
+
const after = source.slice(start + run.length, start + run.length + LOOKBACK);
|
|
61
|
+
const suffixed = givenBeforeSuffix(run, after, [...cues.suffixes, ...cues.titles]);
|
|
62
|
+
if (suffixed !== undefined) return suffixed;
|
|
63
|
+
if (fieldGivens.has(run)) return run;
|
|
64
|
+
return inField && [...run].length <= MAX_PART && FIELD_END.test(after) ? run : undefined;
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
/** 空白の前の漢字の連なり。字数が姓の形で、肩書きや敬称で終わらない(部長 高瀬様 の 部長 は姓でない)。 */
|
|
68
|
+
const surnameBefore = (source: string, space: number, cues: SpacedNameCues): string | undefined => {
|
|
69
|
+
const window = source.slice(Math.max(0, space - LOOKBACK), space);
|
|
70
|
+
const letters = [...window];
|
|
71
|
+
const run = letters.slice(letters.findLastIndex((letter) => !isHan(letter)) + 1).join("");
|
|
72
|
+
if (run === "" || [...run].length > MAX_PART) return undefined;
|
|
73
|
+
return [...cues.titles, ...cues.suffixes].some((word) => run.endsWith(word)) ? undefined : run;
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
const namesIn = (source: string, cues: SpacedNameCues, fieldGivens: ReadonlySet<string>): SpacedName[] =>
|
|
77
|
+
[...source.matchAll(NAME_SPACE)].flatMap((match) => {
|
|
78
|
+
const space = match.index;
|
|
79
|
+
if (!isHan(LAST_LETTER.exec(source.slice(Math.max(0, space - 2), space))?.[0]) || !isHan(FIRST_LETTER.exec(source.slice(space + 1, space + 3))?.[0]))
|
|
80
|
+
return [];
|
|
81
|
+
const surname = surnameBefore(source, space, cues);
|
|
82
|
+
if (surname === undefined) return [];
|
|
83
|
+
const surnameStart = space - surname.length;
|
|
84
|
+
const given = givenAt(source, space + 1, cues, isInPersonField(source, surnameStart, cues.labels), fieldGivens);
|
|
85
|
+
return given === undefined ? [] : [{ surname: { start: surnameStart, end: space }, given: { start: space + 1, end: space + 1 + given.length } }];
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* 空白を挟んだ姓と名で、後ろに敬称か肩書きが付くか、人を書く欄の行の終わりにあるもの。欄に書いた名と同じ名を書いたもの
|
|
90
|
+
* (受託者:西村 亮 と 西邑 亮が)も。
|
|
91
|
+
*/
|
|
92
|
+
export const spacedPersonNamesIn = (source: string, cues: SpacedNameCues): SpacedName[] => {
|
|
93
|
+
const fields = namesIn(source, cues, new Set()).filter(({ surname, given }) =>
|
|
94
|
+
isFieldValue(source, surname.start, given.end - surname.start, cues.labels, cues.suffixes),
|
|
95
|
+
);
|
|
96
|
+
return namesIn(source, cues, new Set(fields.map(({ given }) => source.slice(given.start, given.end))));
|
|
97
|
+
};
|
package/src/spacing-code.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import type { Span } from "./plugin.ts";
|
|
2
|
+
import { HYPHEN_CHARS } from "./orthography.ts";
|
|
2
3
|
|
|
3
4
|
// Text beside which a space is not a spacing choice: a clock time (13:30), which like 3時 names a time rather than a
|
|
4
|
-
// quantity,
|
|
5
|
+
// quantity, an e-mail address or a URL, whose end a reader and an auto-linker find by the space after it, and an
|
|
6
|
+
// identifier such as a booking or model number (MN-48215, SB-210), which a space sets off from the sentence. Pure.
|
|
5
7
|
|
|
6
8
|
/** A clock time: hours, a colon, minutes, and seconds optionally (9:05, 13:30, 08:00:15). */
|
|
7
9
|
const CLOCK_TIME = /(?<![\d::.])\d{1,2}[::][0-5]\d(?:[::][0-5]\d)?(?![\d::])/gu;
|
|
@@ -15,6 +17,20 @@ const URL_START = /^(?:https?:\/\/|www\.)/u;
|
|
|
15
17
|
|
|
16
18
|
const isAddress = (word: string): boolean => EMAIL.test(word) || URL_START.test(word);
|
|
17
19
|
|
|
20
|
+
/**
|
|
21
|
+
* An identifier: letters and digits joined by hyphens with three digits or more in a row (MN-48215, SB-210, KM-SP300), or
|
|
22
|
+
* capitals followed by four digits or more (A1234567). A shorter name with a digit (EC2, H30, UTF-8, COVID-19) is a word
|
|
23
|
+
* the writer spaces like any other.
|
|
24
|
+
*/
|
|
25
|
+
// The hyphen may be full-width or Japanese (KM-SP300), as in the hyphenated numbers orthography.ts reads.
|
|
26
|
+
const HYPHENATED = new RegExp(
|
|
27
|
+
`(?<![A-Za-z0-9.${HYPHEN_CHARS}])[A-Za-z0-9]+(?:[${HYPHEN_CHARS}][A-Za-z0-9]+)+(?![A-Za-z0-9${HYPHEN_CHARS}]|\\.[A-Za-z0-9])`,
|
|
28
|
+
"gu",
|
|
29
|
+
);
|
|
30
|
+
const CAPITALS_SERIAL = new RegExp(`(?<![A-Za-z0-9.${HYPHEN_CHARS}])[A-Z]+\\d{4,}(?![A-Za-z0-9${HYPHEN_CHARS}]|\\.[A-Za-z0-9])`, "gu");
|
|
31
|
+
const HAS_LETTER = /[A-Za-z]/u;
|
|
32
|
+
const SERIAL_DIGITS = /\d{3}/u;
|
|
33
|
+
|
|
18
34
|
const spansOf = (text: string, pattern: RegExp): Span[] =>
|
|
19
35
|
[...text.matchAll(pattern)].map((match) => ({ start: match.index, end: match.index + match[0].length }));
|
|
20
36
|
|
|
@@ -22,5 +38,10 @@ export const clockTimeSpans = (text: string): Span[] => spansOf(text, CLOCK_TIME
|
|
|
22
38
|
|
|
23
39
|
export const addressSpans = (text: string): Span[] => spansOf(text, ASCII_RUN).filter((span) => isAddress(text.slice(span.start, span.end)));
|
|
24
40
|
|
|
41
|
+
const isIdentifier = (word: string): boolean => HAS_LETTER.test(word) && SERIAL_DIGITS.test(word);
|
|
42
|
+
|
|
43
|
+
export const identifierSpans = (text: string): Span[] =>
|
|
44
|
+
[...spansOf(text, HYPHENATED), ...spansOf(text, CAPITALS_SERIAL)].filter((span) => isIdentifier(text.slice(span.start, span.end)));
|
|
45
|
+
|
|
25
46
|
/** Whether the character at `at` is inside one of the spans. */
|
|
26
47
|
export const isInsideSpan = (spans: readonly Span[], at: number): boolean => spans.some((span) => span.start <= at && at < span.end);
|