chaffjs 0.23.0 → 0.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/detectors/bare-comparative.d.ts +26 -0
- package/dist/detectors/bare-comparative.d.ts.map +1 -0
- package/dist/detectors/bare-comparative.js +117 -0
- package/dist/detectors/bare-comparative.js.map +1 -0
- package/dist/detectors/chat-citation.d.ts +6 -0
- package/dist/detectors/chat-citation.d.ts.map +1 -1
- package/dist/detectors/chat-citation.js +26 -1
- package/dist/detectors/chat-citation.js.map +1 -1
- package/dist/detectors/clause-shape.d.ts.map +1 -1
- package/dist/detectors/clause-shape.js +19 -5
- package/dist/detectors/clause-shape.js.map +1 -1
- package/dist/detectors/connective-hierarchy.d.ts +16 -0
- package/dist/detectors/connective-hierarchy.d.ts.map +1 -0
- package/dist/detectors/connective-hierarchy.js +68 -0
- package/dist/detectors/connective-hierarchy.js.map +1 -0
- package/dist/detectors/definition-use.d.ts.map +1 -1
- package/dist/detectors/definition-use.js +4 -2
- package/dist/detectors/definition-use.js.map +1 -1
- package/dist/detectors/generic-heading.d.ts +8 -0
- package/dist/detectors/generic-heading.d.ts.map +1 -0
- package/dist/detectors/generic-heading.js +26 -0
- package/dist/detectors/generic-heading.js.map +1 -0
- package/dist/detectors/ime-residue.d.ts +13 -0
- package/dist/detectors/ime-residue.d.ts.map +1 -0
- package/dist/detectors/ime-residue.js +27 -0
- package/dist/detectors/ime-residue.js.map +1 -0
- package/dist/detectors/lexicon.d.ts.map +1 -1
- package/dist/detectors/lexicon.js +9 -2
- package/dist/detectors/lexicon.js.map +1 -1
- package/dist/detectors/lookalike-character.d.ts +18 -0
- package/dist/detectors/lookalike-character.d.ts.map +1 -0
- package/dist/detectors/lookalike-character.js +50 -0
- package/dist/detectors/lookalike-character.js.map +1 -0
- package/dist/detectors/lowercase-name.d.ts +9 -0
- package/dist/detectors/lowercase-name.d.ts.map +1 -0
- package/dist/detectors/lowercase-name.js +40 -0
- package/dist/detectors/lowercase-name.js.map +1 -0
- package/dist/detectors/missing-final-period.d.ts +17 -0
- package/dist/detectors/missing-final-period.d.ts.map +1 -0
- package/dist/detectors/missing-final-period.js +62 -0
- package/dist/detectors/missing-final-period.js.map +1 -0
- package/dist/detectors/missing-space-after-comma.d.ts +10 -0
- package/dist/detectors/missing-space-after-comma.d.ts.map +1 -0
- package/dist/detectors/missing-space-after-comma.js +42 -0
- package/dist/detectors/missing-space-after-comma.js.map +1 -0
- package/dist/detectors/registry/bare-comparative.d.ts +3 -0
- package/dist/detectors/registry/bare-comparative.d.ts.map +1 -0
- package/dist/detectors/registry/bare-comparative.js +3 -0
- package/dist/detectors/registry/bare-comparative.js.map +1 -0
- package/dist/detectors/registry/calendar-name-case.d.ts +3 -0
- package/dist/detectors/registry/calendar-name-case.d.ts.map +1 -0
- package/dist/detectors/registry/calendar-name-case.js +3 -0
- package/dist/detectors/registry/calendar-name-case.js.map +1 -0
- package/dist/detectors/registry/connective-hierarchy.d.ts +3 -0
- package/dist/detectors/registry/connective-hierarchy.d.ts.map +1 -0
- package/dist/detectors/registry/connective-hierarchy.js +3 -0
- package/dist/detectors/registry/connective-hierarchy.js.map +1 -0
- package/dist/detectors/registry/generic-heading.d.ts +3 -0
- package/dist/detectors/registry/generic-heading.d.ts.map +1 -0
- package/dist/detectors/registry/generic-heading.js +3 -0
- package/dist/detectors/registry/generic-heading.js.map +1 -0
- package/dist/detectors/registry/ime-residue.d.ts +3 -0
- package/dist/detectors/registry/ime-residue.d.ts.map +1 -0
- package/dist/detectors/registry/ime-residue.js +3 -0
- package/dist/detectors/registry/ime-residue.js.map +1 -0
- package/dist/detectors/registry/lookalike-character.d.ts +3 -0
- package/dist/detectors/registry/lookalike-character.d.ts.map +1 -0
- package/dist/detectors/registry/lookalike-character.js +3 -0
- package/dist/detectors/registry/lookalike-character.js.map +1 -0
- package/dist/detectors/registry/missing-final-period.d.ts +3 -0
- package/dist/detectors/registry/missing-final-period.d.ts.map +1 -0
- package/dist/detectors/registry/missing-final-period.js +3 -0
- package/dist/detectors/registry/missing-final-period.js.map +1 -0
- package/dist/detectors/registry/missing-space-after-comma.d.ts +3 -0
- package/dist/detectors/registry/missing-space-after-comma.d.ts.map +1 -0
- package/dist/detectors/registry/missing-space-after-comma.js +3 -0
- package/dist/detectors/registry/missing-space-after-comma.js.map +1 -0
- package/dist/detectors/registry/unit-spacing-consistency.d.ts +3 -0
- package/dist/detectors/registry/unit-spacing-consistency.d.ts.map +1 -0
- package/dist/detectors/registry/unit-spacing-consistency.js +3 -0
- package/dist/detectors/registry/unit-spacing-consistency.js.map +1 -0
- package/dist/detectors/signals.d.ts.map +1 -1
- package/dist/detectors/signals.js +8 -4
- package/dist/detectors/signals.js.map +1 -1
- package/dist/detectors/structure-tree.d.ts.map +1 -1
- package/dist/detectors/structure-tree.js +32 -7
- package/dist/detectors/structure-tree.js.map +1 -1
- package/dist/detectors/technical-docs.d.ts.map +1 -1
- package/dist/detectors/technical-docs.js +14 -0
- package/dist/detectors/technical-docs.js.map +1 -1
- package/dist/detectors/unit-spacing.d.ts +25 -0
- package/dist/detectors/unit-spacing.d.ts.map +1 -0
- package/dist/detectors/unit-spacing.js +50 -0
- package/dist/detectors/unit-spacing.js.map +1 -0
- package/dist/quoted-span.d.ts +7 -0
- package/dist/quoted-span.d.ts.map +1 -1
- package/dist/quoted-span.js +20 -0
- package/dist/quoted-span.js.map +1 -1
- package/dist/structure/definition-use.d.ts +14 -4
- package/dist/structure/definition-use.d.ts.map +1 -1
- package/dist/structure/definition-use.js +29 -9
- package/dist/structure/definition-use.js.map +1 -1
- package/package.json +3 -3
- package/rules/calendar-name-case.yaml +55 -0
- package/rules/comparative-without-baseline.yaml +71 -0
- package/rules/connective-hierarchy.yaml +62 -0
- package/rules/cross-doc-broken-link.yaml +1 -1
- package/rules/cross-doc-duplicate-definition.yaml +1 -1
- package/rules/cross-doc-fact-conflict.yaml +1 -1
- package/rules/cross-doc-term-variant.yaml +5 -3
- package/rules/ime-residue.yaml +55 -0
- package/rules/lookalike-character.yaml +82 -0
- package/rules/missing-final-period.yaml +76 -0
- package/rules/missing-space-after-comma.yaml +57 -0
- package/rules/numbered-generic-heading.yaml +111 -0
- package/rules/undefined-acronym.yaml +1 -0
- package/rules/unit-spacing-consistency.yaml +74 -0
- package/skills/chaff/SKILL.md +20 -3
- package/src/detectors/bare-comparative.ts +152 -0
- package/src/detectors/chat-citation.ts +28 -1
- package/src/detectors/clause-shape.ts +20 -6
- package/src/detectors/connective-hierarchy.ts +99 -0
- package/src/detectors/definition-use.ts +13 -3
- package/src/detectors/generic-heading.ts +30 -0
- package/src/detectors/ime-residue.ts +37 -0
- package/src/detectors/lexicon.ts +11 -2
- package/src/detectors/lookalike-character.ts +75 -0
- package/src/detectors/lowercase-name.ts +58 -0
- package/src/detectors/missing-final-period.ts +79 -0
- package/src/detectors/missing-space-after-comma.ts +54 -0
- package/src/detectors/registry/bare-comparative.ts +4 -0
- package/src/detectors/registry/calendar-name-case.ts +4 -0
- package/src/detectors/registry/connective-hierarchy.ts +4 -0
- package/src/detectors/registry/generic-heading.ts +4 -0
- package/src/detectors/registry/ime-residue.ts +4 -0
- package/src/detectors/registry/lookalike-character.ts +4 -0
- package/src/detectors/registry/missing-final-period.ts +4 -0
- package/src/detectors/registry/missing-space-after-comma.ts +4 -0
- package/src/detectors/registry/unit-spacing-consistency.ts +4 -0
- package/src/detectors/signals.ts +9 -5
- package/src/detectors/structure-tree.ts +55 -30
- package/src/detectors/technical-docs.ts +13 -0
- package/src/detectors/unit-spacing.ts +71 -0
- package/src/quoted-span.ts +25 -0
- package/src/structure/definition-use.ts +42 -10
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Detector, Lexicon, Sentence, Token } from "../plugin.ts";
|
|
2
|
+
/**
|
|
3
|
+
* 比べる相手の無い比較(より良い結果、さらに高速に、The new engine is faster.)。何より良いのか、何より速いのかが書かれていない。
|
|
4
|
+
* 語は語彙表 comparative-baseline が言う。group marker は日本語の比べる副詞(より、さらに)、more は英語の比べる語、comparative は比べた形の語
|
|
5
|
+
* (faster、better)、baseline は相手を言う語(従来、以前、than、previous)、exempt は比較でない決まった言い方(より多くの、より詳しく)、
|
|
6
|
+
* condition は比較を条件や仮定の下に置く語(使うと、if、would)。条件を書いた比較は、その条件の無い場合と比べている。
|
|
7
|
+
* 同じ文か前の二文に相手を言う語があれば、相手は書いてある。
|
|
8
|
+
*/
|
|
9
|
+
export type ComparativeLists = {
|
|
10
|
+
readonly markers: ReadonlySet<string>;
|
|
11
|
+
readonly more: ReadonlySet<string>;
|
|
12
|
+
readonly comparatives: ReadonlySet<string>;
|
|
13
|
+
readonly baselines: readonly string[];
|
|
14
|
+
readonly exempt: ReadonlySet<string>;
|
|
15
|
+
readonly conditions: ReadonlySet<string>;
|
|
16
|
+
};
|
|
17
|
+
export type BareComparative = {
|
|
18
|
+
readonly first: Token;
|
|
19
|
+
readonly last: Token;
|
|
20
|
+
};
|
|
21
|
+
export declare const bareComparativesIn: (tokens: readonly Token[], lists: ComparativeLists) => BareComparative[];
|
|
22
|
+
/** 文の中に、比べる相手を言う語か、相手を受ける助詞の「より」(従来より)があるか。 */
|
|
23
|
+
export declare const namesBaseline: (sentence: Sentence | undefined, baselines: readonly string[]) => boolean;
|
|
24
|
+
export declare const listsOf: (lexicon: Lexicon) => ComparativeLists;
|
|
25
|
+
export declare const bareComparative: Detector;
|
|
26
|
+
//# sourceMappingURL=bare-comparative.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bare-comparative.d.ts","sourceRoot":"","sources":["../../src/detectors/bare-comparative.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAW,OAAO,EAAE,QAAQ,EAAQ,KAAK,EAAE,MAAM,cAAc,CAAC;AAGtF;;;;;;GAMG;AAEH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACtC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACnC,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3C,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC;AAoE9E,eAAO,MAAM,kBAAkB,GAAI,QAAQ,SAAS,KAAK,EAAE,EAAE,OAAO,gBAAgB,KAAG,eAAe,EAG/B,CAAC;AAoBxE,+CAA+C;AAC/C,eAAO,MAAM,aAAa,GAAI,UAAU,QAAQ,GAAG,SAAS,EAAE,WAAW,SAAS,MAAM,EAAE,KAAG,OAG1F,CAAC;AAOJ,eAAO,MAAM,OAAO,GAAI,SAAS,OAAO,KAAG,gBAOzC,CAAC;AAKH,eAAO,MAAM,eAAe,EAAE,QAiB7B,CAAC"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { quotedIn } from "../quoted-span.js";
|
|
2
|
+
/** 前に立てば、比べた形が述語として読める語の品詞(is faster、runs faster)。 */
|
|
3
|
+
const PREDICATE_HEAD = new Set(["VERB", "AUX"]);
|
|
4
|
+
/** 比べた形の後ろで節が終わる印。 */
|
|
5
|
+
const CLAUSE_END = new Set([".", "!", "?", ",", ";", ":"]);
|
|
6
|
+
/** 述語と比べた形のあいだに挟まってよい副詞の数(is now much faster)。 */
|
|
7
|
+
const MAX_ADVERBS = 2;
|
|
8
|
+
/** 日本語の形容動詞の語幹の後ろに来る語(高速な、高速に、高速です)。 */
|
|
9
|
+
const ADJECTIVAL_TAIL = new Set(["な", "に", "だ", "です", "で"]);
|
|
10
|
+
const lower = (token) => token?.surface.toLowerCase() ?? "";
|
|
11
|
+
const isThirdPersonVerb = (token) => token.pos === "NOUN" && token.features?.["AlsoVerb"] === "Yes" && token.features["Number"] === "Plur";
|
|
12
|
+
/** 比べる語の後ろの、程度を言える語(良い、高速な)。形容詞か、形容動詞の語幹。 */
|
|
13
|
+
const isGradable = (tokens, at) => {
|
|
14
|
+
const word = tokens[at];
|
|
15
|
+
if (word?.pos === "ADJ")
|
|
16
|
+
return true;
|
|
17
|
+
return word?.pos === "NOUN" && word.features?.["Bound"] !== "Yes" && ADJECTIVAL_TAIL.has(tokens[at + 1]?.surface ?? "");
|
|
18
|
+
};
|
|
19
|
+
/** 比べる副詞が語の頭に立つか。前が助詞・記号・接続の語か文の頭のときだけ(「学年だより等」の「より」は語の一部)。 */
|
|
20
|
+
const OPENS_WORD = new Set(["ADP", "PUNCT", "SCONJ", "CCONJ", "ADV"]);
|
|
21
|
+
/** 日本語: 副詞の「より」「さらに」の直後の、程度を言える語。比較の決まった言い方(より多くの)は除く。 */
|
|
22
|
+
const markedAt = (tokens, at, lists) => {
|
|
23
|
+
const [marker, word] = [tokens[at], tokens[at + 1]];
|
|
24
|
+
if (marker?.pos !== "ADV" || !lists.markers.has(marker.surface) || word === undefined || lists.exempt.has(word.surface))
|
|
25
|
+
return undefined;
|
|
26
|
+
const previous = tokens[at - 1];
|
|
27
|
+
if (previous !== undefined && !OPENS_WORD.has(previous.pos))
|
|
28
|
+
return undefined;
|
|
29
|
+
return isGradable(tokens, at + 1) ? { first: marker, last: word } : undefined;
|
|
30
|
+
};
|
|
31
|
+
/** 比べた形の後ろで節が終わるか。読点の後ろに形容詞が続けば、名詞の前に並べた修飾語(better, more predictable results)。 */
|
|
32
|
+
const closesClause = (tokens, at) => {
|
|
33
|
+
const next = tokens[at + 1];
|
|
34
|
+
if (next === undefined)
|
|
35
|
+
return true;
|
|
36
|
+
if (!CLAUSE_END.has(next.surface))
|
|
37
|
+
return false;
|
|
38
|
+
const after = tokens[at + 2];
|
|
39
|
+
return next.surface !== "," || (after?.pos !== "ADJ" && after?.pos !== "ADV");
|
|
40
|
+
};
|
|
41
|
+
/** more と形容詞のあいだの副詞(more computationally efficient)を飛ばした、more の位置。無ければ -1。 */
|
|
42
|
+
const moreBefore = (tokens, at, more) => {
|
|
43
|
+
const before = tokens.slice(Math.max(0, at - 1 - MAX_ADVERBS), at).reverse();
|
|
44
|
+
const found = before.findIndex((token) => token.pos !== "ADV" || more.has(lower(token)));
|
|
45
|
+
return found !== -1 && more.has(lower(before[found])) ? at - 1 - found : -1;
|
|
46
|
+
};
|
|
47
|
+
/** 英語: 述語の後ろで節を閉じる比べた形(is faster.、runs faster,)か、more と形容詞。 */
|
|
48
|
+
const predicateAt = (tokens, at, lists) => {
|
|
49
|
+
const word = tokens[at];
|
|
50
|
+
if (word === undefined || !closesClause(tokens, at))
|
|
51
|
+
return undefined;
|
|
52
|
+
const moreAt = word.pos === "ADJ" ? moreBefore(tokens, at, lists.more) : -1;
|
|
53
|
+
if (moreAt === -1 && !lists.comparatives.has(lower(word)))
|
|
54
|
+
return undefined;
|
|
55
|
+
const start = moreAt === -1 ? at : moreAt;
|
|
56
|
+
const first = tokens[start] ?? word;
|
|
57
|
+
const adverbs = tokens.slice(Math.max(0, start - MAX_ADVERBS), start).reverse();
|
|
58
|
+
const skipped = adverbs.findIndex((token) => token.pos !== "ADV");
|
|
59
|
+
const head = tokens[start - 1 - (skipped === -1 ? adverbs.length : skipped)];
|
|
60
|
+
return head !== undefined && (PREDICATE_HEAD.has(head.pos) || isThirdPersonVerb(head)) ? { first, last: word } : undefined;
|
|
61
|
+
};
|
|
62
|
+
/** 比べた形より前に、条件か仮定を言う語があるか。並べる「と」(A と B)は条件でない。 */
|
|
63
|
+
const isConditional = (tokens, found, conditions) => tokens.some((token) => token.span.start < found.first.span.start && token.pos !== "CCONJ" && conditions.has(lower(token)));
|
|
64
|
+
export const bareComparativesIn = (tokens, lists) => tokens
|
|
65
|
+
.flatMap((_, at) => markedAt(tokens, at, lists) ?? predicateAt(tokens, at, lists) ?? [])
|
|
66
|
+
.filter((found) => !isConditional(tokens, found, lists.conditions));
|
|
67
|
+
/**
|
|
68
|
+
* 語が比べる相手を言う語か。語の形か原形で照らし、一字の語(旧)は語の頭だけ(旧版は相手、復旧は相手でない)。
|
|
69
|
+
*/
|
|
70
|
+
const isBaselineWord = (token, baselines) => {
|
|
71
|
+
const [surface, lemma] = [token.surface.toLowerCase(), token.lemma?.toLowerCase()];
|
|
72
|
+
return baselines.some((baseline) => surface === baseline || lemma === baseline || ([...baseline].length === 1 && surface.startsWith(baseline)));
|
|
73
|
+
};
|
|
74
|
+
/** 相手を言う語が、続く語に分かれて書かれているか(これ・まで、で・は・なく)。 */
|
|
75
|
+
const MAX_BASELINE_TOKENS = 3;
|
|
76
|
+
const isSplitBaseline = (tokens, at, baselines) => {
|
|
77
|
+
const joined = tokens
|
|
78
|
+
.slice(at, at + MAX_BASELINE_TOKENS)
|
|
79
|
+
.map((token) => token.surface.toLowerCase())
|
|
80
|
+
.reduce((runs, surface) => [...runs, `${runs.at(-1) ?? ""}${surface}`], []);
|
|
81
|
+
return joined.slice(1).some((run) => baselines.includes(run));
|
|
82
|
+
};
|
|
83
|
+
/** 文の中に、比べる相手を言う語か、相手を受ける助詞の「より」(従来より)があるか。 */
|
|
84
|
+
export const namesBaseline = (sentence, baselines) => (sentence?.tokens ?? []).some((token, at, tokens) => (token.surface === "より" && token.pos === "ADP") || isBaselineWord(token, baselines) || isSplitBaseline(tokens, at, baselines));
|
|
85
|
+
/** 比べる相手を探す、前の文の数。段落の中で相手を言ってから、一つ文を挟んで比べることがある。 */
|
|
86
|
+
const BASELINE_REACH = 2;
|
|
87
|
+
const groupOf = (lexicon, group) => lexicon.filter((entry) => entry.group === group).map((entry) => entry.pattern.toLowerCase());
|
|
88
|
+
export const listsOf = (lexicon) => ({
|
|
89
|
+
markers: new Set(groupOf(lexicon, "marker")),
|
|
90
|
+
more: new Set(groupOf(lexicon, "more")),
|
|
91
|
+
comparatives: new Set(groupOf(lexicon, "comparative")),
|
|
92
|
+
baselines: groupOf(lexicon, "baseline"),
|
|
93
|
+
exempt: new Set(groupOf(lexicon, "exempt")),
|
|
94
|
+
conditions: new Set(groupOf(lexicon, "condition")),
|
|
95
|
+
});
|
|
96
|
+
/** 鉤括弧の中の比較(「給与所得の確定申告がさらに簡単に!」ページ)は題や語を挙げたもので、書き手の比較ではない。 */
|
|
97
|
+
const insideSpan = (found, span) => found.first.span.start >= span.start && found.last.span.end <= span.end;
|
|
98
|
+
export const bareComparative = (doc) => {
|
|
99
|
+
const lists = listsOf(doc.lexicons["comparative-baseline"] ?? []);
|
|
100
|
+
return doc.sentences.flatMap((sentence, at) => {
|
|
101
|
+
const nearby = doc.sentences.slice(Math.max(0, at - BASELINE_REACH), at + 1);
|
|
102
|
+
if (sentence.embeddedLanguage !== undefined || nearby.some((near) => namesBaseline(near, lists.baselines)))
|
|
103
|
+
return [];
|
|
104
|
+
const quoted = quotedIn(sentence);
|
|
105
|
+
return bareComparativesIn(sentence.tokens ?? [], lists)
|
|
106
|
+
.filter((found) => !quoted.some((span) => insideSpan(found, span)))
|
|
107
|
+
.map((found) => ({
|
|
108
|
+
rule: "",
|
|
109
|
+
severity: "info",
|
|
110
|
+
line: 0,
|
|
111
|
+
column: 0,
|
|
112
|
+
quote: sentence.text.trim(),
|
|
113
|
+
values: { matched: doc.source.slice(found.first.span.start, found.last.span.end), offset: found.first.span.start },
|
|
114
|
+
}));
|
|
115
|
+
});
|
|
116
|
+
};
|
|
117
|
+
//# sourceMappingURL=bare-comparative.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bare-comparative.js","sourceRoot":"","sources":["../../src/detectors/bare-comparative.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAqB7C,sDAAsD;AACtD,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAChD,sBAAsB;AACtB,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAC3D,kDAAkD;AAClD,MAAM,WAAW,GAAG,CAAC,CAAC;AACtB,wCAAwC;AACxC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;AAE5D,MAAM,KAAK,GAAG,CAAC,KAAwB,EAAU,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;AAEvF,MAAM,iBAAiB,GAAG,CAAC,KAAY,EAAW,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,KAAK,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,MAAM,CAAC;AAE3J,6CAA6C;AAC7C,MAAM,UAAU,GAAG,CAAC,MAAwB,EAAE,EAAU,EAAW,EAAE;IACnE,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IACxB,IAAI,IAAI,EAAE,GAAG,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IACrC,OAAO,IAAI,EAAE,GAAG,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,KAAK,IAAI,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC;AAC1H,CAAC,CAAC;AAEF,+DAA+D;AAC/D,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;AAEtE,0DAA0D;AAC1D,MAAM,QAAQ,GAAG,CAAC,MAAwB,EAAE,EAAU,EAAE,KAAuB,EAA+B,EAAE;IAC9G,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACpD,IAAI,MAAM,EAAE,GAAG,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1I,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAChC,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAC9E,OAAO,UAAU,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAChF,CAAC,CAAC;AAEF,kFAAkF;AAClF,MAAM,YAAY,GAAG,CAAC,MAAwB,EAAE,EAAU,EAAW,EAAE;IACrE,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC5B,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IAChD,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC7B,OAAO,IAAI,CAAC,OAAO,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,KAAK,KAAK,IAAI,KAAK,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC;AAChF,CAAC,CAAC;AAEF,8EAA8E;AAC9E,MAAM,UAAU,GAAG,CAAC,MAAwB,EAAE,EAAU,EAAE,IAAyB,EAAU,EAAE;IAC7F,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IAC7E,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzF,OAAO,KAAK,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9E,CAAC,CAAC;AAEF,+DAA+D;AAC/D,MAAM,WAAW,GAAG,CAAC,MAAwB,EAAE,EAAU,EAAE,KAAuB,EAA+B,EAAE;IACjH,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IACxB,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC;QAAE,OAAO,SAAS,CAAC;IACtE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,IAAI,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5E,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;IACpC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;IAChF,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7E,OAAO,IAAI,KAAK,SAAS,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7H,CAAC,CAAC;AAEF,kDAAkD;AAClD,MAAM,aAAa,GAAG,CAAC,MAAwB,EAAE,KAAsB,EAAE,UAA+B,EAAW,EAAE,CACnH,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAE7H,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,MAAwB,EAAE,KAAuB,EAAqB,EAAE,CACzG,MAAM;KACH,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;KACvF,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;AAExE;;GAEG;AACH,MAAM,cAAc,GAAG,CAAC,KAAY,EAAE,SAA4B,EAAW,EAAE;IAC7E,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;IACnF,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,KAAK,QAAQ,IAAI,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAClJ,CAAC,CAAC;AAEF,6CAA6C;AAC7C,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAC9B,MAAM,eAAe,GAAG,CAAC,MAAwB,EAAE,EAAU,EAAE,SAA4B,EAAW,EAAE;IACtG,MAAM,MAAM,GAAG,MAAM;SAClB,KAAK,CAAC,EAAE,EAAE,EAAE,GAAG,mBAAmB,CAAC;SACnC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;SAC3C,MAAM,CAAW,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IACxF,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAChE,CAAC,CAAC;AAEF,+CAA+C;AAC/C,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAA8B,EAAE,SAA4B,EAAW,EAAE,CACrG,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,CAC3B,CAAC,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,IAAI,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC,IAAI,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,eAAe,CAAC,MAAM,EAAE,EAAE,EAAE,SAAS,CAAC,CACrJ,CAAC;AAEJ,oDAAoD;AACpD,MAAM,cAAc,GAAG,CAAC,CAAC;AAEzB,MAAM,OAAO,GAAG,CAAC,OAAgB,EAAE,KAAa,EAAY,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;AAE5J,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,OAAgB,EAAoB,EAAE,CAAC,CAAC;IAC9D,OAAO,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC5C,IAAI,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACvC,YAAY,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACtD,SAAS,EAAE,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC;IACvC,MAAM,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC3C,UAAU,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;CACnD,CAAC,CAAC;AAEH,8DAA8D;AAC9D,MAAM,UAAU,GAAG,CAAC,KAAsB,EAAE,IAAU,EAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;AAE5I,MAAM,CAAC,MAAM,eAAe,GAAa,CAAC,GAAG,EAAa,EAAE;IAC1D,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC,CAAC;IAClE,OAAO,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE;QAC5C,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,cAAc,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7E,IAAI,QAAQ,CAAC,gBAAgB,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YAAE,OAAO,EAAE,CAAC;QACtH,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAClC,OAAO,kBAAkB,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,EAAE,KAAK,CAAC;aACpD,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;aAClE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACf,IAAI,EAAE,EAAE;YACR,QAAQ,EAAE,MAAM;YAChB,IAAI,EAAE,CAAC;YACP,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE;YAC3B,MAAM,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE;SACnH,CAAC,CAAC,CAAC;IACR,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -13,6 +13,12 @@ export declare const showsInProse: (prose: string, span: Span) => boolean;
|
|
|
13
13
|
* the whole of an autolink. The label is left out, so code in a link's text stays code.
|
|
14
14
|
*/
|
|
15
15
|
export declare const destinationOf: (source: string, span: Span) => Span;
|
|
16
|
+
/**
|
|
17
|
+
* Whether the marker stands as a word of its own (links ending in "?utm_source=chatgpt.com", marks such as oaicite.), or
|
|
18
|
+
* alone in quotation marks, as Japanese writes it with no spaces (「?utm_source=chatgpt.com」の付いたリンク): prose
|
|
19
|
+
* about the marks names them. What a chat answer leaves is always joined to a URL or a citation (oaicite:0).
|
|
20
|
+
*/
|
|
21
|
+
export declare const standsAlone: (source: string, span: Span) => boolean;
|
|
16
22
|
/** Each marker is a leftover in its own right, so each is reported, from the first. */
|
|
17
23
|
export declare const chatCitationResidue: Detector;
|
|
18
24
|
//# sourceMappingURL=chat-citation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-citation.d.ts","sourceRoot":"","sources":["../../src/detectors/chat-citation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAW,OAAO,EAAiB,IAAI,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"chat-citation.d.ts","sourceRoot":"","sources":["../../src/detectors/chat-citation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAW,OAAO,EAAiB,IAAI,EAAE,MAAM,cAAc,CAAC;AAKpF,sGAAsG;AACtG,MAAM,MAAM,UAAU,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC;AAE3E,kGAAkG;AAClG,eAAO,MAAM,SAAS,GAAI,MAAM,MAAM,EAAE,SAAS,OAAO,KAAG,UAAU,EASH,CAAC;AAInE,mIAAmI;AACnI,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,EAAE,MAAM,IAAI,KAAG,OAA0D,CAAC;AAEpH;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,QAAQ,MAAM,EAAE,MAAM,IAAI,KAAG,IAM1D,CAAC;AAqBF;;;;GAIG;AACH,eAAO,MAAM,WAAW,GAAI,QAAQ,MAAM,EAAE,MAAM,IAAI,KAAG,OAQxD,CAAC;AAEF,uFAAuF;AACvF,eAAO,MAAM,mBAAmB,EAAE,QAIjC,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { escapeRegExp } from "../orthography.js";
|
|
2
|
+
import { isQuotedAlone } from "../quoted-span.js";
|
|
2
3
|
import { findingAt, markupOf } from "./markup-finding.js";
|
|
3
4
|
/** Every place a lexicon pattern is written in `text`, case and all, in the order they appear. */
|
|
4
5
|
export const markersIn = (text, lexicon) => lexicon
|
|
@@ -31,9 +32,33 @@ const reachesReader = (doc, span) => {
|
|
|
31
32
|
const destinations = [...markup.links, ...markup.images].map((target) => destinationOf(doc.source, target));
|
|
32
33
|
return showsInProse(doc.prose, span) || within([...markup.texts, ...destinations], span);
|
|
33
34
|
};
|
|
35
|
+
/** Quotation marks, parentheses and sentence punctuation at the ends of a word, which are not part of it. */
|
|
36
|
+
const SURROUNDING = new Set(['"', "'", "“", "”", "‘", "’", "(", ")", ".", ",", ";", ":", "!", "?"]);
|
|
37
|
+
const SPACE = /\s/u;
|
|
38
|
+
/** What is left of a string after the surrounding marks at both of its ends. */
|
|
39
|
+
const withoutSurrounding = (text) => {
|
|
40
|
+
const chars = [...text];
|
|
41
|
+
const first = chars.findIndex((char) => !SURROUNDING.has(char));
|
|
42
|
+
return first === -1 ? "" : chars.slice(first, chars.findLastIndex((char) => !SURROUNDING.has(char)) + 1).join("");
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Whether the marker stands as a word of its own (links ending in "?utm_source=chatgpt.com", marks such as oaicite.), or
|
|
46
|
+
* alone in quotation marks, as Japanese writes it with no spaces (「?utm_source=chatgpt.com」の付いたリンク): prose
|
|
47
|
+
* about the marks names them. What a chat answer leaves is always joined to a URL or a citation (oaicite:0).
|
|
48
|
+
*/
|
|
49
|
+
export const standsAlone = (source, span) => {
|
|
50
|
+
if (isQuotedAlone(source, span))
|
|
51
|
+
return true;
|
|
52
|
+
const lineStart = source.lastIndexOf("\n", span.start - 1) + 1;
|
|
53
|
+
const lineEnd = source.indexOf("\n", span.end);
|
|
54
|
+
const before = source.slice(lineStart, span.start).split(SPACE).at(-1) ?? "";
|
|
55
|
+
const after = source.slice(span.end, lineEnd === -1 ? source.length : lineEnd).split(SPACE)[0] ?? "";
|
|
56
|
+
const marker = source.slice(span.start, span.end);
|
|
57
|
+
return withoutSurrounding(`${before}${marker}${after}`) === marker;
|
|
58
|
+
};
|
|
34
59
|
/** Each marker is a leftover in its own right, so each is reported, from the first. */
|
|
35
60
|
export const chatCitationResidue = (doc, options) => {
|
|
36
|
-
const markers = markersIn(doc.source, options.lexicon ?? []).filter((marker) => reachesReader(doc, marker.span));
|
|
61
|
+
const markers = markersIn(doc.source, options.lexicon ?? []).filter((marker) => reachesReader(doc, marker.span) && !standsAlone(doc.source, marker.span));
|
|
37
62
|
if (markers.length === 0 || markers.length < options.limit)
|
|
38
63
|
return [];
|
|
39
64
|
return markers.map((marker) => findingAt(doc, marker.span, { matched: marker.matched, count: markers.length, limit: options.limit }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-citation.js","sourceRoot":"","sources":["../../src/detectors/chat-citation.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"chat-citation.js","sourceRoot":"","sources":["../../src/detectors/chat-citation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clause-shape.d.ts","sourceRoot":"","sources":["../../src/detectors/clause-shape.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAoD,QAAQ,EAAS,MAAM,cAAc,CAAC;AAqChH;;;GAGG;AACH,eAAO,MAAM,QAAQ,GAAI,UAAU,QAAQ,KAAG,MAAM,GAAG,SAQtD,CAAC;AAEF,KAAK,KAAK,GAAG;IAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAElF,6GAA6G;AAC7G,eAAO,MAAM,UAAU,GAAI,WAAW,SAAS,QAAQ,EAAE,KAAG,KAAK,EAAE,EAQjB,CAAC;AAcnD,4FAA4F;AAC5F,eAAO,MAAM,SAAS,EAAE,QAKrB,CAAC;AAwBJ,6FAA6F;AAC7F,eAAO,MAAM,gBAAgB,EAAE,QAU9B,CAAC;AAqBF,0GAA0G;AAC1G,eAAO,MAAM,cAAc,EAAE,QAS5B,CAAC;
|
|
1
|
+
{"version":3,"file":"clause-shape.d.ts","sourceRoot":"","sources":["../../src/detectors/clause-shape.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAoD,QAAQ,EAAS,MAAM,cAAc,CAAC;AAqChH;;;GAGG;AACH,eAAO,MAAM,QAAQ,GAAI,UAAU,QAAQ,KAAG,MAAM,GAAG,SAQtD,CAAC;AAEF,KAAK,KAAK,GAAG;IAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAElF,6GAA6G;AAC7G,eAAO,MAAM,UAAU,GAAI,WAAW,SAAS,QAAQ,EAAE,KAAG,KAAK,EAAE,EAQjB,CAAC;AAcnD,4FAA4F;AAC5F,eAAO,MAAM,SAAS,EAAE,QAKrB,CAAC;AAwBJ,6FAA6F;AAC7F,eAAO,MAAM,gBAAgB,EAAE,QAU9B,CAAC;AAqBF,0GAA0G;AAC1G,eAAO,MAAM,cAAc,EAAE,QAS5B,CAAC;AAyDF,mHAAmH;AACnH,eAAO,MAAM,cAAc,EAAE,QAM5B,CAAC"}
|
|
@@ -116,18 +116,32 @@ const PARTICLE = "ADP";
|
|
|
116
116
|
const NOMINAL_POS = new Set(["NOUN", "PROPN"]);
|
|
117
117
|
/** The first word after the particle, past adverbs (順次) and a bound honorific prefix (ご連絡). */
|
|
118
118
|
const headAfter = (tokens, at) => tokens.findIndex((token, index) => index > at && !isSpace(token) && !SKIPPED_POS.has(token.pos) && token.features?.["Bound"] !== "Yes");
|
|
119
|
+
/** The last noun of the compound that starts at head (新規受付, 受付開始): the compound is named by its last word. */
|
|
120
|
+
const compoundEnd = (tokens, head) => {
|
|
121
|
+
const after = tokens.findIndex((token, index) => index > head && !isSpace(token) && !NOMINAL_POS.has(token.pos));
|
|
122
|
+
const end = after === -1 ? tokens.length : after;
|
|
123
|
+
return tokens.slice(head, end).reduce((last, token, offset) => (NOMINAL_POS.has(token.pos) ? head + offset : last), head);
|
|
124
|
+
};
|
|
125
|
+
const SENTENCE_STOP = "。";
|
|
119
126
|
/**
|
|
120
|
-
* The head names a start or a sending (開始, 参る, 連絡). A noun head must be the action itself:
|
|
121
|
-
*
|
|
127
|
+
* The head names a start or a sending (開始, 参る, 連絡). A noun head must be the action itself: a compound whose last
|
|
128
|
+
* noun is listed (新規受付を開始, 受付開始します), followed by a light verb, the end of the sentence, or an object marker
|
|
129
|
+
* whose verb is listed too; not a noun being compared (昨年より販売が増えた, 昨年より新規受付を増やした) or a compound
|
|
130
|
+
* named by another noun (昨年より受付件数を増やした).
|
|
122
131
|
*/
|
|
123
132
|
const isOriginHead = (tokens, head, heads, objectMarkers) => {
|
|
124
133
|
const token = tokens[head];
|
|
125
|
-
if (token === undefined
|
|
134
|
+
if (token === undefined)
|
|
126
135
|
return false;
|
|
127
136
|
if (!NOMINAL_POS.has(token.pos))
|
|
137
|
+
return isListed(heads, token);
|
|
138
|
+
const last = compoundEnd(tokens, head);
|
|
139
|
+
if (!isListed(heads, tokens[last]))
|
|
140
|
+
return false;
|
|
141
|
+
const next = nextWord(tokens, last);
|
|
142
|
+
if (next === undefined || next.surface === SENTENCE_STOP || next.features?.["VerbType"] === "Light")
|
|
128
143
|
return true;
|
|
129
|
-
|
|
130
|
-
return next !== undefined && (objectMarkers.has(next.surface) || next.features?.["VerbType"] === "Light");
|
|
144
|
+
return objectMarkers.has(next.surface) && isListed(heads, nextWord(tokens, tokens.indexOf(next)));
|
|
131
145
|
};
|
|
132
146
|
const originsIn = (sentence, words) => {
|
|
133
147
|
const tokens = sentence.tokens ?? [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clause-shape.js","sourceRoot":"","sources":["../../src/detectors/clause-shape.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"clause-shape.js","sourceRoot":"","sources":["../../src/detectors/clause-shape.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Detector, LexiconEntry, Sentence } from "../plugin.ts";
|
|
2
|
+
/** One outer-level connective with nothing to stand above, and where it is in the document. */
|
|
3
|
+
export type LoneConnective = {
|
|
4
|
+
readonly offset: number;
|
|
5
|
+
readonly written: string;
|
|
6
|
+
readonly usual: string;
|
|
7
|
+
};
|
|
8
|
+
/** The word lists the detector reads: the connectives, and the phrases that hold one's letters without being one (歯並びに). */
|
|
9
|
+
export type ConnectiveLists = {
|
|
10
|
+
readonly connectives: readonly LexiconEntry[];
|
|
11
|
+
readonly lookalikes: readonly LexiconEntry[];
|
|
12
|
+
};
|
|
13
|
+
/** The outer-level connectives of a sentence that stand over no inner level. */
|
|
14
|
+
export declare const loneConnectivesIn: (sentence: Sentence, lists: ConnectiveLists) => LoneConnective[];
|
|
15
|
+
export declare const connectiveHierarchy: Detector;
|
|
16
|
+
//# sourceMappingURL=connective-hierarchy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connective-hierarchy.d.ts","sourceRoot":"","sources":["../../src/detectors/connective-hierarchy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAW,YAAY,EAAE,QAAQ,EAAe,MAAM,cAAc,CAAC;AAQ3F,+FAA+F;AAC/F,MAAM,MAAM,cAAc,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAI3G,4HAA4H;AAC5H,MAAM,MAAM,eAAe,GAAG;IAAE,QAAQ,CAAC,WAAW,EAAE,SAAS,YAAY,EAAE,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,YAAY,EAAE,CAAA;CAAE,CAAC;AA4D9H,gFAAgF;AAChF,eAAO,MAAM,iBAAiB,GAAI,UAAU,QAAQ,EAAE,OAAO,eAAe,KAAG,cAAc,EAS5F,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,QAYjC,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { escapeRegExp } from "../orthography.js";
|
|
2
|
+
import { quotedSpans } from "../quoted-span.js";
|
|
3
|
+
const CONJUNCTION = "CCONJ";
|
|
4
|
+
/**
|
|
5
|
+
* The tagger does not always tell a connective from a noun and a particle: it reads 申請書並びに as 並び + に and
|
|
6
|
+
* 文字の並びに as the conjunction. After の, a determiner or an adjective (の並びに, この並びに, 正しい並びに) the word is
|
|
7
|
+
* a noun of its own. Where the tagger splits it, it is a connective only between two nouns: a noun, a number or a mark
|
|
8
|
+
* before it, and no verb right after it (一列並びに座る).
|
|
9
|
+
*/
|
|
10
|
+
const MODIFIES_NOUN = new Set(["DET", "ADJ"]);
|
|
11
|
+
const GENITIVE = "の";
|
|
12
|
+
const JOINS_AFTER = new Set(["NOUN", "PROPN", "NUM", "PUNCT", "SYM"]);
|
|
13
|
+
const ENDS_CLAUSE = new Set(["VERB", "AUX"]);
|
|
14
|
+
const modifiesNoun = (token) => token !== undefined && (MODIFIES_NOUN.has(token.pos) || (token.pos === "ADP" && token.surface === GENITIVE));
|
|
15
|
+
const joinsNouns = (previous, next) => previous !== undefined && JOINS_AFTER.has(previous.pos) && next !== undefined && !ENDS_CLAUSE.has(next.pos);
|
|
16
|
+
const placesOf = (text, word) => [...text.matchAll(new RegExp(escapeRegExp(word), "gu"))].map((match) => match.index);
|
|
17
|
+
/** Inside 「」 or 『』 (a quoted phrase holds half a list) or inside a lookalike (歯並びに), by the sentence's own offsets. */
|
|
18
|
+
const hiddenLetters = (text, lookalikes) => {
|
|
19
|
+
const hidden = Array.from({ length: text.length }, () => false);
|
|
20
|
+
const hide = (start, end) => hidden.fill(true, start, end);
|
|
21
|
+
quotedSpans(text).forEach((span) => hide(span.start, span.end));
|
|
22
|
+
lookalikes.forEach(({ pattern }) => placesOf(text, pattern).forEach((at) => hide(at, at + pattern.length)));
|
|
23
|
+
return hidden;
|
|
24
|
+
};
|
|
25
|
+
const readingOf = (sentence, lookalikes) => {
|
|
26
|
+
const tokens = sentence.tokens ?? [];
|
|
27
|
+
return {
|
|
28
|
+
byStart: new Map(tokens.map((token) => [token.span.start, token])),
|
|
29
|
+
byEnd: new Map(tokens.map((token) => [token.span.end, token])),
|
|
30
|
+
hidden: hiddenLetters(sentence.text, lookalikes),
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
const standsAsConnective = (reading, span) => {
|
|
34
|
+
const previous = reading.byEnd.get(span.start);
|
|
35
|
+
if (modifiesNoun(previous))
|
|
36
|
+
return false;
|
|
37
|
+
const own = reading.byStart.get(span.start);
|
|
38
|
+
const tagged = own !== undefined && own.pos === CONJUNCTION && own.span.end === span.end;
|
|
39
|
+
return tagged || joinsNouns(previous, reading.byStart.get(span.end));
|
|
40
|
+
};
|
|
41
|
+
const hasInnerLevel = (sentence, outer, connectives) => connectives.some((entry) => entry.instead_of === outer.pattern && sentence.text.includes(entry.pattern));
|
|
42
|
+
/** Where one outer-level word stands as a connective in the sentence. */
|
|
43
|
+
const connectiveSpans = (sentence, outer, reading) => placesOf(sentence.text, outer.pattern)
|
|
44
|
+
.filter((at) => reading.hidden[at] !== true)
|
|
45
|
+
.map((at) => ({ start: sentence.span.start + at, end: sentence.span.start + at + outer.pattern.length }))
|
|
46
|
+
.filter((span) => standsAsConnective(reading, span));
|
|
47
|
+
/** The outer-level connectives of a sentence that stand over no inner level. */
|
|
48
|
+
export const loneConnectivesIn = (sentence, lists) => {
|
|
49
|
+
const lone = lists.connectives.filter((entry) => entry.rewrite !== undefined && sentence.text.includes(entry.pattern) && !hasInnerLevel(sentence, entry, lists.connectives));
|
|
50
|
+
if (lone.length === 0)
|
|
51
|
+
return [];
|
|
52
|
+
const reading = readingOf(sentence, lists.lookalikes);
|
|
53
|
+
return lone
|
|
54
|
+
.flatMap((entry) => connectiveSpans(sentence, entry, reading).map((span) => ({ offset: span.start, written: entry.pattern, usual: entry.rewrite ?? "" })))
|
|
55
|
+
.sort((a, b) => a.offset - b.offset);
|
|
56
|
+
};
|
|
57
|
+
export const connectiveHierarchy = (doc, options) => {
|
|
58
|
+
const lists = { connectives: options.lexicon ?? [], lookalikes: doc.lexicons["connective-lookalike"] ?? [] };
|
|
59
|
+
return doc.sentences.flatMap((sentence) => loneConnectivesIn(sentence, lists).map((lone) => ({
|
|
60
|
+
rule: "",
|
|
61
|
+
severity: "info",
|
|
62
|
+
line: 0,
|
|
63
|
+
column: 0,
|
|
64
|
+
quote: sentence.text.trim(),
|
|
65
|
+
values: { written: lone.written, usual: lone.usual, offset: lone.offset },
|
|
66
|
+
})));
|
|
67
|
+
};
|
|
68
|
+
//# sourceMappingURL=connective-hierarchy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connective-hierarchy.js","sourceRoot":"","sources":["../../src/detectors/connective-hierarchy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definition-use.d.ts","sourceRoot":"","sources":["../../src/detectors/definition-use.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAA0B,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"definition-use.d.ts","sourceRoot":"","sources":["../../src/detectors/definition-use.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAA0B,MAAM,cAAc,CAAC;AAuBrE,8BAA8B;AAC9B,eAAO,MAAM,gBAAgB,EAAE,QAKxB,CAAC;AAER,sCAAsC;AACtC,eAAO,MAAM,mBAAmB,EAAE,QAK3B,CAAC;AAER,8BAA8B;AAC9B,eAAO,MAAM,wBAAwB,EAAE,QAUtC,CAAC"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { definedTerms, unusedDefinitions, usesBeforeDefinition } from "../structure/definition-use.js";
|
|
2
2
|
import { expansionConflicts, expansionsIn } from "../acronym-expansions.js";
|
|
3
3
|
import { linesOf, lineNumberAt } from "../structure/lines.js";
|
|
4
|
+
import { isQuotedAlone } from "../quoted-span.js";
|
|
4
5
|
import { quoteAt } from "./structure-tree.js";
|
|
5
6
|
const bodyOf = (doc) => doc.sentences.map((sentence) => ({ start: sentence.span.start, text: sentence.text }));
|
|
7
|
+
const mentionedIn = (doc) => (start, end) => isQuotedAlone(doc.source, { start, end });
|
|
6
8
|
const findingAt = (doc, offset, values) => ({
|
|
7
9
|
rule: "",
|
|
8
10
|
severity: "warning",
|
|
@@ -14,11 +16,11 @@ const findingAt = (doc, offset, values) => ({
|
|
|
14
16
|
/** 定義したのに、定義の外で一度も使っていない語。 */
|
|
15
17
|
export const unusedDefinition = (doc) => doc.structure === undefined
|
|
16
18
|
? []
|
|
17
|
-
: unusedDefinitions(definedTerms(doc.structure), bodyOf(doc)).map((defined) => findingAt(doc, defined.span.start, { term: defined.term }));
|
|
19
|
+
: unusedDefinitions(definedTerms(doc.structure), bodyOf(doc), mentionedIn(doc)).map((defined) => findingAt(doc, defined.span.start, { term: defined.term }));
|
|
18
20
|
/** 文の途中で括弧に入れて定義した語を、定義より前で使っている所。 */
|
|
19
21
|
export const useBeforeDefinition = (doc) => doc.structure === undefined
|
|
20
22
|
? []
|
|
21
|
-
: usesBeforeDefinition(definedTerms(doc.structure), bodyOf(doc)).map((use) => findingAt(doc, use.offset, { term: use.term.term, defined: use.term.line }));
|
|
23
|
+
: usesBeforeDefinition(definedTerms(doc.structure), bodyOf(doc), mentionedIn(doc)).map((use) => findingAt(doc, use.offset, { term: use.term.term, defined: use.term.line }));
|
|
22
24
|
/** 同じ略語を、文書の中で二通りに展開している所。 */
|
|
23
25
|
export const acronymExpansionConflict = (doc) => {
|
|
24
26
|
const lines = linesOf(doc.source);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definition-use.js","sourceRoot":"","sources":["../../src/detectors/definition-use.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,
|
|
1
|
+
{"version":3,"file":"definition-use.js","sourceRoot":"","sources":["../../src/detectors/definition-use.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Detector, Lexicon, MarkupHeading, ProseDocument } from "../plugin.ts";
|
|
2
|
+
/** 札のどれかと番号だけで書いた見出しの形。札が無ければ undefined。 */
|
|
3
|
+
export declare const bareLabelPattern: (labels: Lexicon) => RegExp | undefined;
|
|
4
|
+
/** 札と番号だけの見出し。 */
|
|
5
|
+
export declare const bareLabelHeadings: (doc: ProseDocument) => MarkupHeading[];
|
|
6
|
+
/** 数で見る。一つなら書き手の選び方、並べば型をなぞった見出し。 */
|
|
7
|
+
export declare const genericHeading: Detector;
|
|
8
|
+
//# sourceMappingURL=generic-heading.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generic-heading.d.ts","sourceRoot":"","sources":["../../src/detectors/generic-heading.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAW,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAY7F,4CAA4C;AAC5C,eAAO,MAAM,gBAAgB,GAAI,QAAQ,OAAO,KAAG,MAAM,GAAG,SAG3D,CAAC;AAEF,kBAAkB;AAClB,eAAO,MAAM,iBAAiB,GAAI,KAAK,aAAa,KAAG,aAAa,EAGnE,CAAC;AAEF,qCAAqC;AACrC,eAAO,MAAM,cAAc,EAAE,QAI5B,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { escapeRegExp } from "../orthography.js";
|
|
2
|
+
import { findingAt, writtenHeadings } from "./markup-finding.js";
|
|
3
|
+
/**
|
|
4
|
+
* 札と番号だけの見出し(メリット1、ポイント2、Benefit 3)。目次を見ても、節に何が書いてあるかが分からない。
|
|
5
|
+
* 札は語彙表 generic-heading-label が言う。題を足した見出し(メリット1:設定が要らない)は読まない。
|
|
6
|
+
*/
|
|
7
|
+
/** 番号の書き方。数字、丸数字、漢数字。前に「その」や「#」、後ろに区切りの記号が付いてもよい。 */
|
|
8
|
+
const NUMBER = String.raw `(?:その)?\s*#?\s*[((]?\s*(?:[0-90-9]+|[①-⑳]|[一二三四五六七八九十]+)\s*(?:つ目)?\s*[::..。))]?`;
|
|
9
|
+
/** 札のどれかと番号だけで書いた見出しの形。札が無ければ undefined。 */
|
|
10
|
+
export const bareLabelPattern = (labels) => {
|
|
11
|
+
const words = labels.map((entry) => escapeRegExp(entry.pattern)).filter((word) => word !== "");
|
|
12
|
+
return words.length === 0 ? undefined : new RegExp(`^(?:${words.join("|")})\\s*${NUMBER}$`, "iu");
|
|
13
|
+
};
|
|
14
|
+
/** 札と番号だけの見出し。 */
|
|
15
|
+
export const bareLabelHeadings = (doc) => {
|
|
16
|
+
const pattern = bareLabelPattern(doc.lexicons["generic-heading-label"] ?? []);
|
|
17
|
+
return pattern === undefined ? [] : writtenHeadings(doc).filter((heading) => pattern.test(heading.text.trim()));
|
|
18
|
+
};
|
|
19
|
+
/** 数で見る。一つなら書き手の選び方、並べば型をなぞった見出し。 */
|
|
20
|
+
export const genericHeading = (doc, options) => {
|
|
21
|
+
const bare = bareLabelHeadings(doc);
|
|
22
|
+
if (bare.length === 0 || bare.length < options.limit)
|
|
23
|
+
return [];
|
|
24
|
+
return bare.map((heading) => findingAt(doc, heading, { heading: heading.text.trim(), count: bare.length, limit: options.limit }));
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=generic-heading.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generic-heading.js","sourceRoot":"","sources":["../../src/detectors/generic-heading.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEjE;;;GAGG;AAEH,qDAAqD;AACrD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAA,iFAAiF,CAAC;AAE3G,4CAA4C;AAC5C,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAe,EAAsB,EAAE;IACtE,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;IAC/F,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,MAAM,GAAG,EAAE,IAAI,CAAC,CAAC;AACpG,CAAC,CAAC;AAEF,kBAAkB;AAClB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAkB,EAAmB,EAAE;IACvE,MAAM,OAAO,GAAG,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9E,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAClH,CAAC,CAAC;AAEF,qCAAqC;AACrC,MAAM,CAAC,MAAM,cAAc,GAAa,CAAC,GAAG,EAAE,OAAO,EAAa,EAAE;IAClE,MAAM,IAAI,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IAChE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACpI,CAAC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Detector } from "../plugin.ts";
|
|
2
|
+
/** One stray letter, and where it is in the text. */
|
|
3
|
+
export type StrayLetter = {
|
|
4
|
+
readonly offset: number;
|
|
5
|
+
readonly letter: string;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* One lower-case letter between Japanese: hiragana or kanji before, kana after. A letter followed by a particle names
|
|
9
|
+
* something (変数xが, まずxを, をxで), so it is left alone; the particles come from the lexicon.
|
|
10
|
+
*/
|
|
11
|
+
export declare const strayLettersIn: (text: string, particles: readonly string[]) => StrayLetter[];
|
|
12
|
+
export declare const imeResidue: Detector;
|
|
13
|
+
//# sourceMappingURL=ime-residue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ime-residue.d.ts","sourceRoot":"","sources":["../../src/detectors/ime-residue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAW,MAAM,cAAc,CAAC;AAKtD,qDAAqD;AACrD,MAAM,MAAM,WAAW,GAAG;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAS/E;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,EAAE,WAAW,SAAS,MAAM,EAAE,KAAG,WAAW,EAInF,CAAC;AAEL,eAAO,MAAM,UAAU,EAAE,QAWxB,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { quoteAround } from "./quote-around.js";
|
|
2
|
+
// Hiragana or kanji before (after katakana a letter is a label: サイズm, プランb), kana after.
|
|
3
|
+
const STRAY = /(?<=[\p{Script=Hiragana}\p{Script=Han}々])[a-z](?=[\p{Script=Hiragana}\p{Script=Katakana}ー])/gu;
|
|
4
|
+
/** Marks that make the run around the letter a path, an address or an assignment (/docs/あaい, a=b). */
|
|
5
|
+
const PATH_MARK = /[/\\=@#]/u;
|
|
6
|
+
const runBefore = (text, offset) => text.slice(0, offset).split(/\s/u).at(-1) ?? "";
|
|
7
|
+
/**
|
|
8
|
+
* One lower-case letter between Japanese: hiragana or kanji before, kana after. A letter followed by a particle names
|
|
9
|
+
* something (変数xが, まずxを, をxで), so it is left alone; the particles come from the lexicon.
|
|
10
|
+
*/
|
|
11
|
+
export const strayLettersIn = (text, particles) => [...text.matchAll(STRAY)].flatMap((match) => {
|
|
12
|
+
const namesSomething = particles.some((particle) => text.startsWith(particle, match.index + 1));
|
|
13
|
+
return namesSomething || PATH_MARK.test(runBefore(text, match.index)) ? [] : [{ offset: match.index, letter: match[0] }];
|
|
14
|
+
});
|
|
15
|
+
export const imeResidue = (doc) => {
|
|
16
|
+
const text = doc.prose ?? doc.source;
|
|
17
|
+
const particles = (doc.lexicons["case-particle"] ?? []).map((entry) => entry.pattern);
|
|
18
|
+
return strayLettersIn(text, particles).map((stray) => ({
|
|
19
|
+
rule: "",
|
|
20
|
+
severity: "warning",
|
|
21
|
+
line: 0,
|
|
22
|
+
column: 0,
|
|
23
|
+
quote: quoteAround(text, stray.offset, stray.offset + 1),
|
|
24
|
+
values: { letter: stray.letter, offset: stray.offset },
|
|
25
|
+
}));
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=ime-residue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ime-residue.js","sourceRoot":"","sources":["../../src/detectors/ime-residue.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAOhD,yFAAyF;AACzF,MAAM,KAAK,GAAG,+FAA+F,CAAC;AAC9G,sGAAsG;AACtG,MAAM,SAAS,GAAG,WAAW,CAAC;AAE9B,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,MAAc,EAAU,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAE5G;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,SAA4B,EAAiB,EAAE,CAC1F,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;IAC1C,MAAM,cAAc,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IAChG,OAAO,cAAc,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3H,CAAC,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,UAAU,GAAa,CAAC,GAAG,EAAa,EAAE;IACrD,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,MAAM,CAAC;IACrC,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACtF,OAAO,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACrD,IAAI,EAAE,EAAE;QACR,QAAQ,EAAE,SAAS;QACnB,IAAI,EAAE,CAAC;QACP,MAAM,EAAE,CAAC;QACT,KAAK,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACxD,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE;KACvD,CAAC,CAAC,CAAC;AACN,CAAC,CAAC"}
|