slopless 0.2.10 → 0.2.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -9
- package/dist/registries/academic-slop.js +4 -0
- package/dist/registries/academic-slop.js.map +1 -1
- package/dist/registries/narrative-slop.js +4 -0
- package/dist/registries/narrative-slop.js.map +1 -1
- package/dist/rules/academic-slop/academic-boilerplate.js +17 -0
- package/dist/rules/academic-slop/academic-boilerplate.js.map +1 -0
- package/dist/rules/academic-slop/academic-formula-frames.js +17 -0
- package/dist/rules/academic-slop/academic-formula-frames.js.map +1 -0
- package/dist/rules/academic-slop/data/academic-boilerplate.json +22 -0
- package/dist/rules/academic-slop/data/academic-formula-frames.json +252 -0
- package/dist/rules/narrative-slop/emotion-telling.js +58 -0
- package/dist/rules/narrative-slop/emotion-telling.js.map +1 -0
- package/dist/rules/narrative-slop/empty-beat.js +124 -0
- package/dist/rules/narrative-slop/empty-beat.js.map +1 -0
- package/dist/rules/narrative-slop/low-information-beat-density.js +24 -1
- package/dist/rules/narrative-slop/low-information-beat-density.js.map +1 -1
- package/dist/rules/narrative-slop/perception-verb-density.js +4 -0
- package/dist/rules/narrative-slop/perception-verb-density.js.map +1 -1
- package/dist/rules/orthography/colon-dramatic.js +38 -1
- package/dist/rules/orthography/colon-dramatic.js.map +1 -1
- package/dist/rules/phrases/corporate-speak.js +30 -1
- package/dist/rules/phrases/corporate-speak.js.map +1 -1
- package/dist/rules/phrases/data/corporate-abstraction-patterns.json +60 -0
- package/dist/rules/phrases/data/corporate-speak.json +20 -0
- package/dist/rules/phrases/data/prohibited-phrases.json +6 -1
- package/dist/rules/semantic-thinness/patterns/abstract-agency-personification.json +145 -0
- package/dist/rules/semantic-thinness/patterns/body-knows.json +17 -2
- package/dist/rules/semantic-thinness/patterns/deictic-summary.json +10 -2
- package/dist/rules/semantic-thinness/patterns/emotion-as-substance.json +17 -1
- package/dist/rules/semantic-thinness/patterns/empty-scene-state.json +18 -1
- package/dist/rules/semantic-thinness/patterns/recursive-meaning-frame.json +79 -0
- package/dist/rules/semantic-thinness/private/concrete-guards.js +9 -0
- package/dist/rules/semantic-thinness/private/concrete-guards.js.map +1 -1
- package/dist/rules/semantic-thinness/private/pattern-data-c.js +2 -0
- package/dist/rules/semantic-thinness/private/pattern-data-c.js.map +1 -1
- package/dist/rules/semantic-thinness/private/pattern-data-e.js +5 -0
- package/dist/rules/semantic-thinness/private/pattern-data-e.js.map +1 -0
- package/dist/rules/semantic-thinness/private/pattern-data.js +3 -1
- package/dist/rules/semantic-thinness/private/pattern-data.js.map +1 -1
- package/dist/rules/semantic-thinness/private/pattern-matcher.js +7 -1
- package/dist/rules/semantic-thinness/private/pattern-matcher.js.map +1 -1
- package/dist/rules/syntactic-patterns/contrast/contrastive-aphorism.js +2 -151
- package/dist/rules/syntactic-patterns/contrast/contrastive-aphorism.js.map +1 -1
- package/dist/rules/syntactic-patterns/contrast/private/inline-contrast-connector.js +16 -0
- package/dist/rules/syntactic-patterns/contrast/private/inline-contrast-connector.js.map +1 -0
- package/dist/rules/syntactic-patterns/contrast/private/inline-not-because-reframe.js +22 -0
- package/dist/rules/syntactic-patterns/contrast/private/inline-not-because-reframe.js.map +1 -0
- package/dist/rules/syntactic-patterns/contrast/private/inline-short-negation.js +62 -0
- package/dist/rules/syntactic-patterns/contrast/private/inline-short-negation.js.map +1 -0
- package/dist/rules/syntactic-patterns/contrast/private/negation-context-gates.js +72 -0
- package/dist/rules/syntactic-patterns/contrast/private/negation-context-gates.js.map +1 -0
- package/dist/rules/syntactic-patterns/contrast/private/negation-reframe-matcher.js +20 -17
- package/dist/rules/syntactic-patterns/contrast/private/negation-reframe-matcher.js.map +1 -1
- package/dist/rules/syntactic-patterns/contrast/private/same-sentence-contrast.js +47 -16
- package/dist/rules/syntactic-patterns/contrast/private/same-sentence-contrast.js.map +1 -1
- package/dist/rules/syntactic-patterns/contrast/private/single-sentence-aphorism.js +178 -0
- package/dist/rules/syntactic-patterns/contrast/private/single-sentence-aphorism.js.map +1 -0
- package/dist/rules/syntactic-patterns/lead-ins/generic-signposting.js +50 -0
- package/dist/rules/syntactic-patterns/lead-ins/generic-signposting.js.map +1 -1
- package/dist/rules/words/llm-vocabulary-density.js +41 -1
- package/dist/rules/words/llm-vocabulary-density.js.map +1 -1
- package/dist/rules/words/llm-vocabulary.js +5 -7
- package/dist/rules/words/llm-vocabulary.js.map +1 -1
- package/dist/rules/words/private/vocabulary-context.js +125 -0
- package/dist/rules/words/private/vocabulary-context.js.map +1 -0
- package/dist/rules/words/prohibited-words.js +2 -2
- package/dist/rules/words/prohibited-words.js.map +1 -1
- package/dist/shared/matchers/concrete-evidence.js +4 -0
- package/dist/shared/matchers/concrete-evidence.js.map +1 -1
- package/dist/shared/text/traverse.js +4 -1
- package/dist/shared/text/traverse.js.map +1 -1
- package/package.json +21 -17
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
{
|
|
2
|
+
"id": "recursive-meaning-frame",
|
|
3
|
+
"class": "recursive-meaning",
|
|
4
|
+
"purpose": "Catch recursive importance, meaning, lesson, and work frames that reuse the same abstraction as both premise and payoff.",
|
|
5
|
+
"matchMode": "contains",
|
|
6
|
+
"maxTokens": 42,
|
|
7
|
+
"templates": [
|
|
8
|
+
"{thinSubject} {importanceVerb} because it {invitationVerb} us to {recursiveVerb} what {importanceVerb}.",
|
|
9
|
+
"{thinSubject} {workVerb} {abstractSpace} for more {thinAdjective} {thinObject}.",
|
|
10
|
+
"{thinSubject} is not about {thinObject}; it is about {becomingFrame}.",
|
|
11
|
+
"{thinSubject} is trying to tell a {biggerStory} about what it means to {emptyMotion}.",
|
|
12
|
+
"{thinSubject} asks us to {softAction} the part of us that already {knowingVerb}."
|
|
13
|
+
],
|
|
14
|
+
"slots": {
|
|
15
|
+
"thinSubject": [
|
|
16
|
+
"this moment",
|
|
17
|
+
"the moment",
|
|
18
|
+
"the work",
|
|
19
|
+
"the work ahead",
|
|
20
|
+
"the lesson",
|
|
21
|
+
"the journey",
|
|
22
|
+
"the system",
|
|
23
|
+
"the story",
|
|
24
|
+
"the process",
|
|
25
|
+
"the practice"
|
|
26
|
+
],
|
|
27
|
+
"importanceVerb": ["matters", "counts"],
|
|
28
|
+
"invitationVerb": ["invites", "asks"],
|
|
29
|
+
"recursiveVerb": ["rethink", "reconsider", "remember"],
|
|
30
|
+
"workVerb": ["opens", "creates", "makes"],
|
|
31
|
+
"abstractSpace": ["space", "room", "permission"],
|
|
32
|
+
"thinAdjective": [
|
|
33
|
+
"meaningful",
|
|
34
|
+
"intentional",
|
|
35
|
+
"aligned",
|
|
36
|
+
"human",
|
|
37
|
+
"purposeful"
|
|
38
|
+
],
|
|
39
|
+
"thinObject": ["work", "lesson", "journey", "practice", "process"],
|
|
40
|
+
"becomingFrame": [
|
|
41
|
+
"becoming more aligned with the lesson",
|
|
42
|
+
"becoming available to the work",
|
|
43
|
+
"becoming more human in the process",
|
|
44
|
+
"moving closer to the practice"
|
|
45
|
+
],
|
|
46
|
+
"biggerStory": ["bigger story", "deeper story", "larger story"],
|
|
47
|
+
"emptyMotion": [
|
|
48
|
+
"move forward",
|
|
49
|
+
"become aligned",
|
|
50
|
+
"stay human",
|
|
51
|
+
"do the work",
|
|
52
|
+
"meet the moment"
|
|
53
|
+
],
|
|
54
|
+
"softAction": ["listen to", "trust", "make room for", "honor"],
|
|
55
|
+
"knowingVerb": ["knows", "understands", "remembers"]
|
|
56
|
+
},
|
|
57
|
+
"rejectIf": [
|
|
58
|
+
"sentence names the concrete reason the moment matters",
|
|
59
|
+
"sentence names the actual lesson",
|
|
60
|
+
"sentence names the concrete work, owner, deadline, or output"
|
|
61
|
+
],
|
|
62
|
+
"positiveExamples": [
|
|
63
|
+
"This moment matters because it invites us to rethink what matters.",
|
|
64
|
+
"The work ahead opens space for more meaningful work.",
|
|
65
|
+
"The lesson is not about work; it is about becoming more aligned with the lesson.",
|
|
66
|
+
"The system is trying to tell a bigger story about what it means to move forward.",
|
|
67
|
+
"The journey asks us to listen to the part of us that already knows."
|
|
68
|
+
],
|
|
69
|
+
"negativeExamples": [
|
|
70
|
+
"This deadline matters because the vendor contract expires on June 30.",
|
|
71
|
+
"The work ahead creates space for two additional wheelchair seats in the waiting room.",
|
|
72
|
+
"The lesson is not in the workbook; it is in chapter 4.",
|
|
73
|
+
"The system reports why request 42 failed validation."
|
|
74
|
+
],
|
|
75
|
+
"notes": [
|
|
76
|
+
"This is intentionally recursive: the abstraction reappears as the claimed payoff.",
|
|
77
|
+
"It belongs in semantic-thinness, not phrases, because the slots are productive."
|
|
78
|
+
]
|
|
79
|
+
}
|
|
@@ -3,9 +3,11 @@ const CONCRETE_EXPLANATION_TOKENS = new Set([
|
|
|
3
3
|
"archive",
|
|
4
4
|
"auditor",
|
|
5
5
|
"billing",
|
|
6
|
+
"bids",
|
|
6
7
|
"crew",
|
|
7
8
|
"decibels",
|
|
8
9
|
"dns",
|
|
10
|
+
"document",
|
|
9
11
|
"doctor",
|
|
10
12
|
"email",
|
|
11
13
|
"endpoint",
|
|
@@ -20,6 +22,7 @@ const CONCRETE_EXPLANATION_TOKENS = new Set([
|
|
|
20
22
|
"ledger",
|
|
21
23
|
"masonry",
|
|
22
24
|
"mark",
|
|
25
|
+
"meter",
|
|
23
26
|
"named",
|
|
24
27
|
"offset",
|
|
25
28
|
"parser",
|
|
@@ -33,14 +36,20 @@ const CONCRETE_EXPLANATION_TOKENS = new Set([
|
|
|
33
36
|
"screening",
|
|
34
37
|
"seam",
|
|
35
38
|
"server",
|
|
39
|
+
"sensor",
|
|
36
40
|
"signed",
|
|
37
41
|
"signatures",
|
|
38
42
|
"signal",
|
|
39
43
|
"service",
|
|
40
44
|
"socket",
|
|
45
|
+
"speaker",
|
|
41
46
|
"split",
|
|
47
|
+
"tagged",
|
|
48
|
+
"temperature",
|
|
42
49
|
"tax",
|
|
43
50
|
"token",
|
|
51
|
+
"trademark",
|
|
52
|
+
"transcript",
|
|
44
53
|
"trial",
|
|
45
54
|
"volume",
|
|
46
55
|
"wall"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"concrete-guards.js","sourceRoot":"","sources":["../../../../src/rules/semantic-thinness/private/concrete-guards.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"concrete-guards.js","sourceRoot":"","sources":["../../../../src/rules/semantic-thinness/private/concrete-guards.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import abstractPersonificationLine from "../patterns/abstract-personification-line.json" with { type: "json" };
|
|
2
|
+
import abstractAgencyPersonification from "../patterns/abstract-agency-personification.json" with { type: "json" };
|
|
2
3
|
import bodyEmotionShorthand from "../patterns/body-emotion-shorthand.json" with { type: "json" };
|
|
3
4
|
import emptyAtmosphereShift from "../patterns/empty-atmosphere-shift.json" with { type: "json" };
|
|
4
5
|
import fixedMetaphorFrame from "../patterns/fixed-metaphor-frame.json" with { type: "json" };
|
|
@@ -6,6 +7,7 @@ import gazeChoreography from "../patterns/gaze-choreography.json" with { type: "
|
|
|
6
7
|
import sensoryInsteadOfFrame from "../patterns/sensory-instead-of-frame.json" with { type: "json" };
|
|
7
8
|
import summaryFogTransition from "../patterns/summary-fog-transition.json" with { type: "json" };
|
|
8
9
|
export const semanticThinnessPatternSetC = [
|
|
10
|
+
abstractAgencyPersonification,
|
|
9
11
|
abstractPersonificationLine,
|
|
10
12
|
bodyEmotionShorthand,
|
|
11
13
|
emptyAtmosphereShift,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pattern-data-c.js","sourceRoot":"","sources":["../../../../src/rules/semantic-thinness/private/pattern-data-c.ts"],"names":[],"mappings":"AAAA,OAAO,2BAA2B,MAAM,gDAAgD,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC/G,OAAO,oBAAoB,MAAM,yCAAyC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACjG,OAAO,oBAAoB,MAAM,yCAAyC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACjG,OAAO,kBAAkB,MAAM,uCAAuC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC7F,OAAO,gBAAgB,MAAM,oCAAoC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACxF,OAAO,qBAAqB,MAAM,2CAA2C,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACpG,OAAO,oBAAoB,MAAM,yCAAyC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAGjG,MAAM,CAAC,MAAM,2BAA2B,GAAuC;IAC7E,2BAA2B;IAC3B,oBAAoB;IACpB,oBAAoB;IACpB,kBAAkB;IAClB,gBAAgB;IAChB,qBAAqB;IACrB,oBAAoB;CACrB,CAAC"}
|
|
1
|
+
{"version":3,"file":"pattern-data-c.js","sourceRoot":"","sources":["../../../../src/rules/semantic-thinness/private/pattern-data-c.ts"],"names":[],"mappings":"AAAA,OAAO,2BAA2B,MAAM,gDAAgD,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC/G,OAAO,6BAA6B,MAAM,kDAAkD,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACnH,OAAO,oBAAoB,MAAM,yCAAyC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACjG,OAAO,oBAAoB,MAAM,yCAAyC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACjG,OAAO,kBAAkB,MAAM,uCAAuC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC7F,OAAO,gBAAgB,MAAM,oCAAoC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACxF,OAAO,qBAAqB,MAAM,2CAA2C,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACpG,OAAO,oBAAoB,MAAM,yCAAyC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAGjG,MAAM,CAAC,MAAM,2BAA2B,GAAuC;IAC7E,6BAA6B;IAC7B,2BAA2B;IAC3B,oBAAoB;IACpB,oBAAoB;IACpB,kBAAkB;IAClB,gBAAgB;IAChB,qBAAqB;IACrB,oBAAoB;CACrB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pattern-data-e.js","sourceRoot":"","sources":["../../../../src/rules/semantic-thinness/private/pattern-data-e.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,MAAM,0CAA0C,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAGnG,MAAM,CAAC,MAAM,2BAA2B,GAAuC;IAC7E,qBAAqB;CACtB,CAAC"}
|
|
@@ -2,10 +2,12 @@ import { semanticThinnessPatternSetA } from "./pattern-data-a.js";
|
|
|
2
2
|
import { semanticThinnessPatternSetB } from "./pattern-data-b.js";
|
|
3
3
|
import { semanticThinnessPatternSetC } from "./pattern-data-c.js";
|
|
4
4
|
import { semanticThinnessPatternSetD } from "./pattern-data-d.js";
|
|
5
|
+
import { semanticThinnessPatternSetE } from "./pattern-data-e.js";
|
|
5
6
|
export const semanticThinnessPatterns = [
|
|
6
7
|
...semanticThinnessPatternSetA,
|
|
7
8
|
...semanticThinnessPatternSetB,
|
|
8
9
|
...semanticThinnessPatternSetC,
|
|
9
|
-
...semanticThinnessPatternSetD
|
|
10
|
+
...semanticThinnessPatternSetD,
|
|
11
|
+
...semanticThinnessPatternSetE
|
|
10
12
|
];
|
|
11
13
|
//# sourceMappingURL=pattern-data.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pattern-data.js","sourceRoot":"","sources":["../../../../src/rules/semantic-thinness/private/pattern-data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAElE,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,GAAG,2BAA2B;IAC9B,GAAG,2BAA2B;IAC9B,GAAG,2BAA2B;IAC9B,GAAG,2BAA2B;CAC/B,CAAC"}
|
|
1
|
+
{"version":3,"file":"pattern-data.js","sourceRoot":"","sources":["../../../../src/rules/semantic-thinness/private/pattern-data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAElE,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,GAAG,2BAA2B;IAC9B,GAAG,2BAA2B;IAC9B,GAAG,2BAA2B;IAC9B,GAAG,2BAA2B;IAC9B,GAAG,2BAA2B;CAC/B,CAAC"}
|
|
@@ -15,6 +15,7 @@ const REJECT_TOKENS = new Set([
|
|
|
15
15
|
"while"
|
|
16
16
|
]);
|
|
17
17
|
const BROAD_PATTERN_IDS = new Set([
|
|
18
|
+
"abstract-agency-personification",
|
|
18
19
|
"abstract-personification-line",
|
|
19
20
|
"body-emotion-shorthand",
|
|
20
21
|
"deictic-summary",
|
|
@@ -29,7 +30,12 @@ const BROAD_PATTERN_IDS = new Set([
|
|
|
29
30
|
"truth-answer-moves",
|
|
30
31
|
"vague-threshold-change"
|
|
31
32
|
]);
|
|
32
|
-
const CONNECTOR_ALLOWED_PATTERN_IDS = new Set([
|
|
33
|
+
const CONNECTOR_ALLOWED_PATTERN_IDS = new Set([
|
|
34
|
+
"abstract-agency-personification",
|
|
35
|
+
"body-knows",
|
|
36
|
+
"recursive-meaning-frame",
|
|
37
|
+
"vague-summary-cost"
|
|
38
|
+
]);
|
|
33
39
|
function normalizedTokens(text) {
|
|
34
40
|
return wordTokens(text).map((token) => token.normalized);
|
|
35
41
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pattern-matcher.js","sourceRoot":"","sources":["../../../../src/rules/semantic-thinness/private/pattern-matcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,+CAA+C,CAAC;AACzF,OAAO,EAAE,UAAU,EAAc,MAAM,gCAAgC,CAAC;AACxE,OAAO,EACL,sBAAsB,EACtB,4BAA4B,EAC7B,MAAM,sBAAsB,CAAC;AA4C9B,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAC/B,MAAM,eAAe,GAAG,EAAE,CAAC;AAC3B,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;IAC5B,SAAS;IACT,WAAW;IACX,QAAQ;IACR,MAAM;IACN,UAAU;IACV,SAAS;IACT,OAAO;IACP,OAAO;CACR,CAAC,CAAC;AACH,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAChC,+BAA+B;IAC/B,wBAAwB;IACxB,iBAAiB;IACjB,mBAAmB;IACnB,wBAAwB;IACxB,mBAAmB;IACnB,4BAA4B;IAC5B,qBAAqB;IACrB,qBAAqB;IACrB,0BAA0B;IAC1B,kBAAkB;IAClB,oBAAoB;IACpB,wBAAwB;CACzB,CAAC,CAAC;AACH,MAAM,6BAA6B,GAAG,IAAI,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"pattern-matcher.js","sourceRoot":"","sources":["../../../../src/rules/semantic-thinness/private/pattern-matcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,+CAA+C,CAAC;AACzF,OAAO,EAAE,UAAU,EAAc,MAAM,gCAAgC,CAAC;AACxE,OAAO,EACL,sBAAsB,EACtB,4BAA4B,EAC7B,MAAM,sBAAsB,CAAC;AA4C9B,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAC/B,MAAM,eAAe,GAAG,EAAE,CAAC;AAC3B,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;IAC5B,SAAS;IACT,WAAW;IACX,QAAQ;IACR,MAAM;IACN,UAAU;IACV,SAAS;IACT,OAAO;IACP,OAAO;CACR,CAAC,CAAC;AACH,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAChC,iCAAiC;IACjC,+BAA+B;IAC/B,wBAAwB;IACxB,iBAAiB;IACjB,mBAAmB;IACnB,wBAAwB;IACxB,mBAAmB;IACnB,4BAA4B;IAC5B,qBAAqB;IACrB,qBAAqB;IACrB,0BAA0B;IAC1B,kBAAkB;IAClB,oBAAoB;IACpB,wBAAwB;CACzB,CAAC,CAAC;AACH,MAAM,6BAA6B,GAAG,IAAI,GAAG,CAAC;IAC5C,iCAAiC;IACjC,YAAY;IACZ,yBAAyB;IACzB,oBAAoB;CACrB,CAAC,CAAC;AACH,SAAS,gBAAgB,CAAC,IAAY;IACpC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,YAAY,CAAC,KAAqB,EAAE,OAAe;IAC1D,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,QAAgB,EAAE,KAAa;IACnD,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;IAEtB,OAAO,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;YACtB,OAAO,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QAC3B,CAAC;QACD,IAAI,IAAI,SAAS,IAAI,EAAE,CAAC;QACxB,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IAED,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,eAAe,CAAC,QAAgB;IACvC,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,OAAO,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;YACtB,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC7B,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACxD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YACnC,KAAK,GAAG,SAAS,CAAC;YAClB,SAAS;QACX,CAAC;QAED,OAAO,IAAI,SAAS,IAAI,EAAE,CAAC;QAC3B,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IAED,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AACrC,CAAC;AAED,SAAS,iBAAiB,CACxB,KAAkD;IAElD,MAAM,QAAQ,GAAmD,EAAE,CAAC;IAEpE,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACnD,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC7C,QAA4C;IAE5C,MAAM,YAAY,GAAG,CACnB,OAAgC,EACX,EAAE,CACvB,OAAO,CAAC,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;IAEzD,MAAM,mBAAmB,GAAG,CAAC,OAAgC,EAAU,EAAE,CACvE,YAAY,CAAC,OAAO,CAAC,KAAK,UAAU;QAClC,CAAC,CAAC,mBAAmB;QACrB,CAAC,CAAC,eAAe,CAAC;IAEtB,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAChC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,SAAS,EAAE,YAAY,CAAC,OAAO,CAAC;QAChC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,mBAAmB,CAAC,OAAO,CAAC;QAC5D,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,UAAU,EAAE,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC;QAC5C,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;KAC1E,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY,EAAE,MAAwB;IAChE,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,4BAA4B,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,sBAAsB,CAC7B,OAAwB,EACxB,MAAwB;IAExB,IAAI,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,CAAC,CAAC,6BAA6B,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7C,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;QAC9D,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,sBAAsB,CAAC,MAAM,CAAC,CAAC,CACtE,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CACpB,MAAwB,EACxB,QAA2B,EAC3B,KAAa;IAEb,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QAC5C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACxD,IAAI,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,EAAE,UAAU,KAAK,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1D,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,SAAS,CAChB,MAAwB,EACxB,OAAwB,EACxB,IAAkB,EAClB,UAAkB;IAElB,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC;YACnD,CAAC,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YACnC,CAAC,CAAC,EAAE,CAAC;IACT,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SACzC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;SAC7D,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,eAAe,CACtB,MAAwB,EACxB,OAAwB,EACxB,QAA0B,EAC1B,KAAa;IAEb,IAAI,SAAS,GAAsB,CAAC,KAAK,CAAC,CAAC;IAE3C,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAClC,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CACzC,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAC3C,CAAC;QACF,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;QACrC,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,sBAAsB,CAC7B,MAAwB,EACxB,OAAwB,EACxB,QAA0B;IAE1B,IAAI,OAAO,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;QACjC,OAAO,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACtD,IAAI,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;YACtD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,oBAAoB,CAC3B,MAAwB,EACxB,OAAwB,EACxB,IAAY;IAEZ,IACE,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC;QACvC,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,wBAAwB,CAAC,IAAI,CAAC,CAAC,EACrE,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACzC,IAAI,sBAAsB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;YACtD,OAAO;gBACL,YAAY,EAAE,OAAO,CAAC,KAAK;gBAC3B,SAAS,EAAE,OAAO,CAAC,EAAE;gBACrB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,MAAM,EAAE,QAAQ,CAAC,MAAM;aACxB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,IAAY,EACZ,QAAoC;IAEpC,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IAEnC,IAAI,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;QACxC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7D,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -3,158 +3,9 @@ import { sentenceUnits } from "../../../adapters/textlint/units.js";
|
|
|
3
3
|
import { cleanSentence, startsWithWords, tokens, trimTerminalPunctuation } from "../../../shared/matchers/prose-patterns.js";
|
|
4
4
|
import { pairHasAbstractSubjectOrObject } from "./private/abstract-pair-gates.js";
|
|
5
5
|
import { matchSameSentenceContrast } from "./private/same-sentence-contrast.js";
|
|
6
|
+
import { matchSingleSentenceAphorism } from "./private/single-sentence-aphorism.js";
|
|
6
7
|
const PREFIXES = ["and ", "but ", "so ", "because "];
|
|
7
8
|
const ENOUGH_FOR_SUFFIXES = [" is enough for this", " is enough for that"];
|
|
8
|
-
const ABSTRACT_CONTRAST_NOUNS = ["revelations", "vibe", "virtues"];
|
|
9
|
-
const ADVISORY_NEGATIVE_NOUNS = ["buffet", "elegance"];
|
|
10
|
-
const HUMAN_PLURAL_SUBJECTS = ["kids", "children", "people"];
|
|
11
|
-
const IMPERATIVE_CONTRAST_VERBS = ["bring"];
|
|
12
|
-
const ADVISORY_MODAL_SUBJECTS = ["i"];
|
|
13
|
-
const ADVISORY_MODAL_VERBS = ["give", "expect"];
|
|
14
|
-
const ARTICLE = { kind: "article" };
|
|
15
|
-
const ANY = { kind: "any" };
|
|
16
|
-
function exact(value) {
|
|
17
|
-
return { kind: "exact", value };
|
|
18
|
-
}
|
|
19
|
-
function oneOf(values) {
|
|
20
|
-
return { kind: "oneOf", values };
|
|
21
|
-
}
|
|
22
|
-
function partMatches(word, part) {
|
|
23
|
-
if (word === undefined) {
|
|
24
|
-
return false;
|
|
25
|
-
}
|
|
26
|
-
if (part.kind === "any") {
|
|
27
|
-
return true;
|
|
28
|
-
}
|
|
29
|
-
if (part.kind === "article") {
|
|
30
|
-
return word === "a" || word === "an" || word === "the";
|
|
31
|
-
}
|
|
32
|
-
if (part.kind === "exact") {
|
|
33
|
-
return word === part.value;
|
|
34
|
-
}
|
|
35
|
-
return part.values.includes(word);
|
|
36
|
-
}
|
|
37
|
-
function matchesPattern(words, pattern) {
|
|
38
|
-
if (words.length < pattern.length) {
|
|
39
|
-
return false;
|
|
40
|
-
}
|
|
41
|
-
for (let index = 0; index < pattern.length; index += 1) {
|
|
42
|
-
const part = pattern[index];
|
|
43
|
-
if (part === undefined || !partMatches(words[index], part)) {
|
|
44
|
-
return false;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
return true;
|
|
48
|
-
}
|
|
49
|
-
function matchesArticleNounContrast(words, leadingVerbs, contrastNouns) {
|
|
50
|
-
return matchesPattern(words, [
|
|
51
|
-
oneOf(leadingVerbs),
|
|
52
|
-
ARTICLE,
|
|
53
|
-
ANY,
|
|
54
|
-
exact("not"),
|
|
55
|
-
ARTICLE,
|
|
56
|
-
oneOf(contrastNouns)
|
|
57
|
-
]);
|
|
58
|
-
}
|
|
59
|
-
function matchesModalArticleNounContrast(words) {
|
|
60
|
-
return matchesPattern(words, [
|
|
61
|
-
oneOf(ADVISORY_MODAL_SUBJECTS),
|
|
62
|
-
exact("would"),
|
|
63
|
-
oneOf(ADVISORY_MODAL_VERBS),
|
|
64
|
-
ARTICLE,
|
|
65
|
-
ANY,
|
|
66
|
-
exact("not"),
|
|
67
|
-
ARTICLE,
|
|
68
|
-
oneOf(ADVISORY_NEGATIVE_NOUNS)
|
|
69
|
-
]);
|
|
70
|
-
}
|
|
71
|
-
function matchesSubjectGetInContrast(words) {
|
|
72
|
-
return matchesPattern(words, [
|
|
73
|
-
oneOf(HUMAN_PLURAL_SUBJECTS),
|
|
74
|
-
exact("get"),
|
|
75
|
-
ANY,
|
|
76
|
-
exact("in"),
|
|
77
|
-
ANY,
|
|
78
|
-
exact("not"),
|
|
79
|
-
oneOf(ABSTRACT_CONTRAST_NOUNS)
|
|
80
|
-
]);
|
|
81
|
-
}
|
|
82
|
-
function matchSingle(sentence) {
|
|
83
|
-
const stripped = cleanSentence(sentence, PREFIXES);
|
|
84
|
-
const words = tokens(stripped);
|
|
85
|
-
if (matchesPattern(words, [
|
|
86
|
-
ANY,
|
|
87
|
-
ANY,
|
|
88
|
-
exact("is"),
|
|
89
|
-
exact("the"),
|
|
90
|
-
exact("part"),
|
|
91
|
-
exact("that"),
|
|
92
|
-
exact("sticks")
|
|
93
|
-
])) {
|
|
94
|
-
return "part-that-sticks";
|
|
95
|
-
}
|
|
96
|
-
if (matchesPattern(words, [
|
|
97
|
-
oneOf(["that", "this", "it"]),
|
|
98
|
-
exact("is"),
|
|
99
|
-
exact("the"),
|
|
100
|
-
exact("part"),
|
|
101
|
-
exact("most"),
|
|
102
|
-
ANY,
|
|
103
|
-
exact("miss")
|
|
104
|
-
])) {
|
|
105
|
-
return "part-most-x-miss";
|
|
106
|
-
}
|
|
107
|
-
if (words.length <= 8 &&
|
|
108
|
-
words.at(-3) === "it" &&
|
|
109
|
-
words.at(-2) === "changes" &&
|
|
110
|
-
words.at(-1) === "everything") {
|
|
111
|
-
return "it-changes-everything";
|
|
112
|
-
}
|
|
113
|
-
if (matchesArticleNounContrast(words, IMPERATIVE_CONTRAST_VERBS, ABSTRACT_CONTRAST_NOUNS)) {
|
|
114
|
-
return "imperative-contrast-aphorism";
|
|
115
|
-
}
|
|
116
|
-
if (matchesModalArticleNounContrast(words)) {
|
|
117
|
-
return "modal-advisory-contrast-aphorism";
|
|
118
|
-
}
|
|
119
|
-
if (matchesSubjectGetInContrast(words)) {
|
|
120
|
-
return "reps-not-revelations";
|
|
121
|
-
}
|
|
122
|
-
if (words.length <= 10 &&
|
|
123
|
-
startsWithWords(words, ["mostly", "by", "treating"]) &&
|
|
124
|
-
words.includes("like") &&
|
|
125
|
-
words.includes("not") &&
|
|
126
|
-
ABSTRACT_CONTRAST_NOUNS.includes(words.at(-1) ?? "")) {
|
|
127
|
-
return "treating-like-not-virtues";
|
|
128
|
-
}
|
|
129
|
-
if (matchesPattern(words, [
|
|
130
|
-
exact("watch"),
|
|
131
|
-
exact("for"),
|
|
132
|
-
ARTICLE,
|
|
133
|
-
exact("pattern"),
|
|
134
|
-
exact("not"),
|
|
135
|
-
exact("one"),
|
|
136
|
-
exact("bad"),
|
|
137
|
-
ANY
|
|
138
|
-
])) {
|
|
139
|
-
return "watch-for-pattern-not-week";
|
|
140
|
-
}
|
|
141
|
-
if (matchesPattern(words, [
|
|
142
|
-
ANY,
|
|
143
|
-
ANY,
|
|
144
|
-
ANY,
|
|
145
|
-
exact("like"),
|
|
146
|
-
ARTICLE,
|
|
147
|
-
ANY,
|
|
148
|
-
exact("problem"),
|
|
149
|
-
exact("not"),
|
|
150
|
-
ARTICLE,
|
|
151
|
-
ANY,
|
|
152
|
-
exact("problem")
|
|
153
|
-
])) {
|
|
154
|
-
return "like-a-problem-not-a-problem";
|
|
155
|
-
}
|
|
156
|
-
return undefined;
|
|
157
|
-
}
|
|
158
9
|
function matchCurriculumPair(first, second) {
|
|
159
10
|
const a = trimTerminalPunctuation(cleanSentence(first, PREFIXES));
|
|
160
11
|
const b = trimTerminalPunctuation(cleanSentence(second, PREFIXES));
|
|
@@ -225,7 +76,7 @@ const rule = defineTextlintRule({
|
|
|
225
76
|
detector: {
|
|
226
77
|
detect: ({ units }) => {
|
|
227
78
|
const detections = units.flatMap((unit) => {
|
|
228
|
-
const signal =
|
|
79
|
+
const signal = matchSingleSentenceAphorism(unit.text);
|
|
229
80
|
const sameSentenceSignal = signal ?? matchSameSentenceContrast(unit.text);
|
|
230
81
|
if (sameSentenceSignal === undefined) {
|
|
231
82
|
return [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contrastive-aphorism.js","sourceRoot":"","sources":["../../../../src/rules/syntactic-patterns/contrast/contrastive-aphorism.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EACL,aAAa,EACb,eAAe,EACf,MAAM,EACN,uBAAuB,EACxB,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"contrastive-aphorism.js","sourceRoot":"","sources":["../../../../src/rules/syntactic-patterns/contrast/contrastive-aphorism.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
const INLINE_CONTRAST_CONNECTORS = new Set([
|
|
2
|
+
"also",
|
|
3
|
+
"but",
|
|
4
|
+
"instead",
|
|
5
|
+
"rather"
|
|
6
|
+
]);
|
|
7
|
+
export function hasInlineContrastConnectorAfterNegation(tokens, negationIndex) {
|
|
8
|
+
if (tokens[negationIndex + 1]?.normalized === "help" &&
|
|
9
|
+
tokens[negationIndex + 2]?.normalized === "but") {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
return tokens
|
|
13
|
+
.slice(negationIndex + 1)
|
|
14
|
+
.some((token) => INLINE_CONTRAST_CONNECTORS.has(token.normalized));
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=inline-contrast-connector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inline-contrast-connector.js","sourceRoot":"","sources":["../../../../../src/rules/syntactic-patterns/contrast/private/inline-contrast-connector.ts"],"names":[],"mappings":"AAEA,MAAM,0BAA0B,GAAG,IAAI,GAAG,CAAC;IACzC,MAAM;IACN,KAAK;IACL,SAAS;IACT,QAAQ;CACT,CAAC,CAAC;AAEH,MAAM,UAAU,uCAAuC,CACrD,MAAwB,EACxB,aAAqB;IAErB,IACE,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC,EAAE,UAAU,KAAK,MAAM;QAChD,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC,EAAE,UAAU,KAAK,KAAK,EAC/C,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,MAAM;SACV,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC;SACxB,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,0BAA0B,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;AACvE,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { hasAbstractNegationPayoff } from "./negation-context-gates.js";
|
|
2
|
+
import { startsWithWords } from "./negation-reframe-parts.js";
|
|
3
|
+
import { hasConcreteCorrectionEvidence } from "../../../../shared/matchers/concrete-evidence.js";
|
|
4
|
+
export function inlineNotBecauseReframe(sentence, tokens) {
|
|
5
|
+
if (!startsWithWords(tokens, ["not", "because"]) ||
|
|
6
|
+
!hasAbstractNegationPayoff(tokens)) {
|
|
7
|
+
return undefined;
|
|
8
|
+
}
|
|
9
|
+
for (let index = 2; index < tokens.length - 1; index += 1) {
|
|
10
|
+
if (tokens[index]?.normalized === "but" &&
|
|
11
|
+
tokens[index + 1]?.normalized === "because" &&
|
|
12
|
+
!hasConcreteCorrectionEvidence(sentence.text)) {
|
|
13
|
+
return {
|
|
14
|
+
end: sentence.end,
|
|
15
|
+
start: sentence.start,
|
|
16
|
+
text: sentence.text
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=inline-not-because-reframe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inline-not-because-reframe.js","sourceRoot":"","sources":["../../../../../src/rules/syntactic-patterns/contrast/private/inline-not-because-reframe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,6BAA6B,EAAE,MAAM,kDAAkD,CAAC;AAUjG,MAAM,UAAU,uBAAuB,CACrC,QAAuB,EACvB,MAAwB;IAExB,IACE,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC5C,CAAC,yBAAyB,CAAC,MAAM,CAAC,EAClC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC1D,IACE,MAAM,CAAC,KAAK,CAAC,EAAE,UAAU,KAAK,KAAK;YACnC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,UAAU,KAAK,SAAS;YAC3C,CAAC,6BAA6B,CAAC,QAAQ,CAAC,IAAI,CAAC,EAC7C,CAAC;YACD,OAAO;gBACL,GAAG,EAAE,QAAQ,CAAC,GAAG;gBACjB,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,IAAI,EAAE,QAAQ,CAAC,IAAI;aACpB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { hasConcreteCorrectionEvidence } from "../../../../shared/matchers/concrete-evidence.js";
|
|
2
|
+
import { hasFactualConnectorAfterNegation } from "./negation-context-gates.js";
|
|
3
|
+
import { findCopularNegation, findNegationIndex, startsWithWords, words } from "./negation-reframe-parts.js";
|
|
4
|
+
export function inlineNotJustCopularReframe(sentence, tokens) {
|
|
5
|
+
const negation = findCopularNegation(tokens);
|
|
6
|
+
const negationIndex = findNegationIndex(tokens);
|
|
7
|
+
const tokenWords = words(tokens);
|
|
8
|
+
if (negation === undefined ||
|
|
9
|
+
negationIndex === undefined ||
|
|
10
|
+
tokenWords[negation.negatedPredicateStart] !== "just" ||
|
|
11
|
+
hasFactualConnectorAfterNegation(tokens, negationIndex) ||
|
|
12
|
+
!hasLaterAffirmativeCopula(tokens, negation) ||
|
|
13
|
+
hasConcreteCorrectionEvidence(sentence.text)) {
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
|
16
|
+
return {
|
|
17
|
+
end: sentence.end,
|
|
18
|
+
start: sentence.start,
|
|
19
|
+
text: sentence.text
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function hasLaterAffirmativeCopula(tokens, negation) {
|
|
23
|
+
for (let index = negation.negatedPredicateStart + 1; index < tokens.length; index += 1) {
|
|
24
|
+
const suffix = tokens.slice(index);
|
|
25
|
+
if (startsWithWords(suffix, [...negation.subject, negation.affirmativeAux]) ||
|
|
26
|
+
startsWithWords(suffix, ["it", negation.affirmativeAux])) {
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
const SHORT_NEGATED_BEAT_VERBS = new Set(["wait"]);
|
|
33
|
+
const SHORT_NEGATED_BEAT_PRONOUNS = new Set(["he", "i", "she", "they", "we"]);
|
|
34
|
+
function hasPersonalOrNamedSubject(tokens, negationIndex) {
|
|
35
|
+
const subject = tokens.slice(0, negationIndex);
|
|
36
|
+
const subjectToken = subject[0];
|
|
37
|
+
const firstCharacter = subjectToken?.text[0];
|
|
38
|
+
return (subject.length === 1 &&
|
|
39
|
+
subjectToken !== undefined &&
|
|
40
|
+
(SHORT_NEGATED_BEAT_PRONOUNS.has(subjectToken.normalized) ||
|
|
41
|
+
(firstCharacter !== undefined &&
|
|
42
|
+
firstCharacter >= "A" &&
|
|
43
|
+
firstCharacter <= "Z")));
|
|
44
|
+
}
|
|
45
|
+
export function inlineShortNegatedBeat(sentence, tokens) {
|
|
46
|
+
const tokenWords = words(tokens);
|
|
47
|
+
const didIndex = tokenWords.findIndex((word, index) => word === "didn't" || (word === "did" && tokenWords[index + 1] === "not"));
|
|
48
|
+
const verbIndex = tokenWords[didIndex] === "did" ? didIndex + 2 : didIndex + 1;
|
|
49
|
+
if (didIndex < 1 ||
|
|
50
|
+
tokenWords.length > 4 ||
|
|
51
|
+
tokenWords[verbIndex + 1] !== undefined ||
|
|
52
|
+
!SHORT_NEGATED_BEAT_VERBS.has(tokenWords[verbIndex] ?? "") ||
|
|
53
|
+
!hasPersonalOrNamedSubject(tokens, didIndex)) {
|
|
54
|
+
return undefined;
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
end: sentence.end,
|
|
58
|
+
start: sentence.start,
|
|
59
|
+
text: sentence.text
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=inline-short-negation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inline-short-negation.js","sourceRoot":"","sources":["../../../../../src/rules/syntactic-patterns/contrast/private/inline-short-negation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { FACTUAL_NEGATION_CONNECTORS, hasCommaBeforeNegation } from "./negation-reframe-parts.js";
|
|
2
|
+
const INLINE_COMMA_ABSTRACT_WORDS = new Set([
|
|
3
|
+
"alignment",
|
|
4
|
+
"answer",
|
|
5
|
+
"change",
|
|
6
|
+
"clarity",
|
|
7
|
+
"comfort",
|
|
8
|
+
"complexity",
|
|
9
|
+
"direction",
|
|
10
|
+
"execution",
|
|
11
|
+
"failure",
|
|
12
|
+
"fix",
|
|
13
|
+
"focus",
|
|
14
|
+
"growth",
|
|
15
|
+
"impact",
|
|
16
|
+
"intention",
|
|
17
|
+
"lesson",
|
|
18
|
+
"meaning",
|
|
19
|
+
"momentum",
|
|
20
|
+
"perfection",
|
|
21
|
+
"point",
|
|
22
|
+
"progress",
|
|
23
|
+
"purpose",
|
|
24
|
+
"signal",
|
|
25
|
+
"solution",
|
|
26
|
+
"strategy",
|
|
27
|
+
"truth",
|
|
28
|
+
"value",
|
|
29
|
+
"work"
|
|
30
|
+
]);
|
|
31
|
+
const META_CONTEXT_WORDS = new Set([
|
|
32
|
+
"code",
|
|
33
|
+
"comment",
|
|
34
|
+
"commit",
|
|
35
|
+
"coverage",
|
|
36
|
+
"detector",
|
|
37
|
+
"diff",
|
|
38
|
+
"example",
|
|
39
|
+
"expected",
|
|
40
|
+
"filename",
|
|
41
|
+
"fixture",
|
|
42
|
+
"implementation",
|
|
43
|
+
"literal",
|
|
44
|
+
"markdown",
|
|
45
|
+
"matcher",
|
|
46
|
+
"normalized",
|
|
47
|
+
"output",
|
|
48
|
+
"prompt",
|
|
49
|
+
"production",
|
|
50
|
+
"quoted",
|
|
51
|
+
"raw",
|
|
52
|
+
"screenshot",
|
|
53
|
+
"sentence",
|
|
54
|
+
"string",
|
|
55
|
+
"tag"
|
|
56
|
+
]);
|
|
57
|
+
export function hasAbstractCommaContrast(sentence, tokens, negationStart) {
|
|
58
|
+
return (hasCommaBeforeNegation(sentence.text, negationStart) &&
|
|
59
|
+
tokens.some((token) => INLINE_COMMA_ABSTRACT_WORDS.has(token.normalized)));
|
|
60
|
+
}
|
|
61
|
+
export function hasAbstractNegationPayoff(tokens) {
|
|
62
|
+
return tokens.some((token) => INLINE_COMMA_ABSTRACT_WORDS.has(token.normalized));
|
|
63
|
+
}
|
|
64
|
+
export function hasFactualConnectorAfterNegation(tokens, negationIndex) {
|
|
65
|
+
return tokens
|
|
66
|
+
.slice(negationIndex + 1)
|
|
67
|
+
.some((token) => FACTUAL_NEGATION_CONNECTORS.has(token.normalized));
|
|
68
|
+
}
|
|
69
|
+
export function hasMetaContext(tokens) {
|
|
70
|
+
return tokens.some((token) => META_CONTEXT_WORDS.has(token.normalized));
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=negation-context-gates.js.map
|