slopless 0.1.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.
Files changed (193) hide show
  1. package/README.md +64 -0
  2. package/dist/families/metrics/avg-sentence-length.js +22 -0
  3. package/dist/families/metrics/avg-sentence-length.js.map +1 -0
  4. package/dist/families/metrics/coleman-liau.js +27 -0
  5. package/dist/families/metrics/coleman-liau.js.map +1 -0
  6. package/dist/families/metrics/flesch-kincaid.js +27 -0
  7. package/dist/families/metrics/flesch-kincaid.js.map +1 -0
  8. package/dist/families/metrics/gunning-fog.js +27 -0
  9. package/dist/families/metrics/gunning-fog.js.map +1 -0
  10. package/dist/families/metrics/paragraph-length.js +21 -0
  11. package/dist/families/metrics/paragraph-length.js.map +1 -0
  12. package/dist/families/metrics/word-repetition.js +46 -0
  13. package/dist/families/metrics/word-repetition.js.map +1 -0
  14. package/dist/families/orthography/colon-dramatic.js +117 -0
  15. package/dist/families/orthography/colon-dramatic.js.map +1 -0
  16. package/dist/families/orthography/em-dashes.js +41 -0
  17. package/dist/families/orthography/em-dashes.js.map +1 -0
  18. package/dist/families/orthography/exclamation-density.js +51 -0
  19. package/dist/families/orthography/exclamation-density.js.map +1 -0
  20. package/dist/families/orthography/fake-timestamps.js +103 -0
  21. package/dist/families/orthography/fake-timestamps.js.map +1 -0
  22. package/dist/families/orthography/sentence-case.js +66 -0
  23. package/dist/families/orthography/sentence-case.js.map +1 -0
  24. package/dist/families/orthography/smart-quotes.js +53 -0
  25. package/dist/families/orthography/smart-quotes.js.map +1 -0
  26. package/dist/families/phrases/cliches.js +17 -0
  27. package/dist/families/phrases/cliches.js.map +1 -0
  28. package/dist/families/phrases/corporate-speak.js +23 -0
  29. package/dist/families/phrases/corporate-speak.js.map +1 -0
  30. package/dist/families/phrases/data/cliches.json +699 -0
  31. package/dist/families/phrases/data/corporate-speak.json +27 -0
  32. package/dist/families/phrases/data/prohibited-phrases.json +8 -0
  33. package/dist/families/phrases/data/skunked-terms.json +10 -0
  34. package/dist/families/phrases/data/uncomparables.json +57 -0
  35. package/dist/families/phrases/humble-bragger.js +26 -0
  36. package/dist/families/phrases/humble-bragger.js.map +1 -0
  37. package/dist/families/phrases/jargon-faker.js +84 -0
  38. package/dist/families/phrases/jargon-faker.js.map +1 -0
  39. package/dist/families/phrases/llm-disclaimer.js +54 -0
  40. package/dist/families/phrases/llm-disclaimer.js.map +1 -0
  41. package/dist/families/phrases/prohibited-phrases.js +17 -0
  42. package/dist/families/phrases/prohibited-phrases.js.map +1 -0
  43. package/dist/families/phrases/skunked-terms.js +23 -0
  44. package/dist/families/phrases/skunked-terms.js.map +1 -0
  45. package/dist/families/phrases/uncomparables.js +78 -0
  46. package/dist/families/phrases/uncomparables.js.map +1 -0
  47. package/dist/families/semantic-thinness/patterns/abstract-contrast.json +85 -0
  48. package/dist/families/semantic-thinness/patterns/abstract-metaphor-claim.json +112 -0
  49. package/dist/families/semantic-thinness/patterns/body-emotion-shorthand.json +77 -0
  50. package/dist/families/semantic-thinness/patterns/body-knows.json +80 -0
  51. package/dist/families/semantic-thinness/patterns/deictic-summary.json +109 -0
  52. package/dist/families/semantic-thinness/patterns/empty-atmosphere-shift.json +70 -0
  53. package/dist/families/semantic-thinness/patterns/empty-emotional-weather.json +104 -0
  54. package/dist/families/semantic-thinness/patterns/empty-scene-state.json +117 -0
  55. package/dist/families/semantic-thinness/patterns/empty-scene-transition.json +98 -0
  56. package/dist/families/semantic-thinness/patterns/gaze-choreography.json +87 -0
  57. package/dist/families/semantic-thinness/patterns/generic-lesson-extraction.json +82 -0
  58. package/dist/families/semantic-thinness/patterns/generic-pressure-or-stakes.json +107 -0
  59. package/dist/families/semantic-thinness/patterns/generic-realization.json +113 -0
  60. package/dist/families/semantic-thinness/patterns/hollow-significance.json +103 -0
  61. package/dist/families/semantic-thinness/patterns/low-information-physical-blocking.json +113 -0
  62. package/dist/families/semantic-thinness/patterns/point-is-frame.json +81 -0
  63. package/dist/families/semantic-thinness/patterns/real-work-begins.json +66 -0
  64. package/dist/families/semantic-thinness/patterns/silence-as-actor.json +69 -0
  65. package/dist/families/semantic-thinness/patterns/something-shifted.json +73 -0
  66. package/dist/families/semantic-thinness/patterns/truth-answer-moves.json +75 -0
  67. package/dist/families/semantic-thinness/patterns/vague-connective-payoff.json +90 -0
  68. package/dist/families/semantic-thinness/patterns/vague-threshold-change.json +98 -0
  69. package/dist/families/semantic-thinness/private/pattern-data-a.js +15 -0
  70. package/dist/families/semantic-thinness/private/pattern-data-a.js.map +1 -0
  71. package/dist/families/semantic-thinness/private/pattern-data-b.js +15 -0
  72. package/dist/families/semantic-thinness/private/pattern-data-b.js.map +1 -0
  73. package/dist/families/semantic-thinness/private/pattern-data-c.js +9 -0
  74. package/dist/families/semantic-thinness/private/pattern-data-c.js.map +1 -0
  75. package/dist/families/semantic-thinness/private/pattern-data-d.js +17 -0
  76. package/dist/families/semantic-thinness/private/pattern-data-d.js.map +1 -0
  77. package/dist/families/semantic-thinness/private/pattern-data.js +11 -0
  78. package/dist/families/semantic-thinness/private/pattern-data.js.map +1 -0
  79. package/dist/families/semantic-thinness/private/pattern-matcher.js +172 -0
  80. package/dist/families/semantic-thinness/private/pattern-matcher.js.map +1 -0
  81. package/dist/families/semantic-thinness/semantic-thinness.js +25 -0
  82. package/dist/families/semantic-thinness/semantic-thinness.js.map +1 -0
  83. package/dist/families/syntactic-patterns/authority/authority-padding.js +81 -0
  84. package/dist/families/syntactic-patterns/authority/authority-padding.js.map +1 -0
  85. package/dist/families/syntactic-patterns/closers/affirmation-closers.js +48 -0
  86. package/dist/families/syntactic-patterns/closers/affirmation-closers.js.map +1 -0
  87. package/dist/families/syntactic-patterns/closers/boilerplate-conclusion.js +131 -0
  88. package/dist/families/syntactic-patterns/closers/boilerplate-conclusion.js.map +1 -0
  89. package/dist/families/syntactic-patterns/closers/false-question.js +30 -0
  90. package/dist/families/syntactic-patterns/closers/false-question.js.map +1 -0
  91. package/dist/families/syntactic-patterns/closers/summative-closer.js +33 -0
  92. package/dist/families/syntactic-patterns/closers/summative-closer.js.map +1 -0
  93. package/dist/families/syntactic-patterns/contrast/blame-reframe.js +59 -0
  94. package/dist/families/syntactic-patterns/contrast/blame-reframe.js.map +1 -0
  95. package/dist/families/syntactic-patterns/contrast/contrastive-aphorism.js +203 -0
  96. package/dist/families/syntactic-patterns/contrast/contrastive-aphorism.js.map +1 -0
  97. package/dist/families/syntactic-patterns/contrast/negation-reframe.js +20 -0
  98. package/dist/families/syntactic-patterns/contrast/negation-reframe.js.map +1 -0
  99. package/dist/families/syntactic-patterns/contrast/private/negation-reframe-matcher.js +218 -0
  100. package/dist/families/syntactic-patterns/contrast/private/negation-reframe-matcher.js.map +1 -0
  101. package/dist/families/syntactic-patterns/contrast/private/negation-reframe-parts.js +136 -0
  102. package/dist/families/syntactic-patterns/contrast/private/negation-reframe-parts.js.map +1 -0
  103. package/dist/families/syntactic-patterns/generalization/softening-language.js +143 -0
  104. package/dist/families/syntactic-patterns/generalization/softening-language.js.map +1 -0
  105. package/dist/families/syntactic-patterns/generalization/universalizing-claims.js +137 -0
  106. package/dist/families/syntactic-patterns/generalization/universalizing-claims.js.map +1 -0
  107. package/dist/families/syntactic-patterns/lead-ins/boilerplate-framing.js +104 -0
  108. package/dist/families/syntactic-patterns/lead-ins/boilerplate-framing.js.map +1 -0
  109. package/dist/families/syntactic-patterns/lead-ins/generic-signposting.js +230 -0
  110. package/dist/families/syntactic-patterns/lead-ins/generic-signposting.js.map +1 -0
  111. package/dist/families/syntactic-patterns/lead-ins/lesson-framing.js +76 -0
  112. package/dist/families/syntactic-patterns/lead-ins/lesson-framing.js.map +1 -0
  113. package/dist/families/syntactic-patterns/lead-ins/llm-openers.js +24 -0
  114. package/dist/families/syntactic-patterns/lead-ins/llm-openers.js.map +1 -0
  115. package/dist/families/syntactic-patterns/lead-ins/observer-guidance.js +95 -0
  116. package/dist/families/syntactic-patterns/lead-ins/observer-guidance.js.map +1 -0
  117. package/dist/families/syntactic-patterns/llm-artifacts/response-wrapper.js +106 -0
  118. package/dist/families/syntactic-patterns/llm-artifacts/response-wrapper.js.map +1 -0
  119. package/dist/families/syntactic-patterns/repetition/demonstrative-emphasis.js +251 -0
  120. package/dist/families/syntactic-patterns/repetition/demonstrative-emphasis.js.map +1 -0
  121. package/dist/families/syntactic-patterns/repetition/empty-emphasis.js +108 -0
  122. package/dist/families/syntactic-patterns/repetition/empty-emphasis.js.map +1 -0
  123. package/dist/families/syntactic-patterns/repetition/fragment-stacking.js +306 -0
  124. package/dist/families/syntactic-patterns/repetition/fragment-stacking.js.map +1 -0
  125. package/dist/families/syntactic-patterns/repetition/triple-repeat.js +149 -0
  126. package/dist/families/syntactic-patterns/repetition/triple-repeat.js.map +1 -0
  127. package/dist/families/term-policy/recommended-terms.js +87 -0
  128. package/dist/families/term-policy/recommended-terms.js.map +1 -0
  129. package/dist/families/term-policy/required-terms.js +32 -0
  130. package/dist/families/term-policy/required-terms.js.map +1 -0
  131. package/dist/families/words/data/prohibited-words.json +12 -0
  132. package/dist/families/words/data/simplicity-pairs.json +7 -0
  133. package/dist/families/words/hedge-stacking.js +43 -0
  134. package/dist/families/words/hedge-stacking.js.map +1 -0
  135. package/dist/families/words/llm-vocabulary.js +33 -0
  136. package/dist/families/words/llm-vocabulary.js.map +1 -0
  137. package/dist/families/words/prohibited-words.js +17 -0
  138. package/dist/families/words/prohibited-words.js.map +1 -0
  139. package/dist/families/words/simplicity.js +27 -0
  140. package/dist/families/words/simplicity.js.map +1 -0
  141. package/dist/index.js +26 -0
  142. package/dist/index.js.map +1 -0
  143. package/dist/presets/everything.js +52 -0
  144. package/dist/presets/everything.js.map +1 -0
  145. package/dist/registries/metrics.js +15 -0
  146. package/dist/registries/metrics.js.map +1 -0
  147. package/dist/registries/orthography.js +15 -0
  148. package/dist/registries/orthography.js.map +1 -0
  149. package/dist/registries/phrases.js +19 -0
  150. package/dist/registries/phrases.js.map +1 -0
  151. package/dist/registries/semantic-thinness.js +5 -0
  152. package/dist/registries/semantic-thinness.js.map +1 -0
  153. package/dist/registries/syntactic-patterns/authority.js +5 -0
  154. package/dist/registries/syntactic-patterns/authority.js.map +1 -0
  155. package/dist/registries/syntactic-patterns/closers.js +11 -0
  156. package/dist/registries/syntactic-patterns/closers.js.map +1 -0
  157. package/dist/registries/syntactic-patterns/contrast.js +9 -0
  158. package/dist/registries/syntactic-patterns/contrast.js.map +1 -0
  159. package/dist/registries/syntactic-patterns/generalization.js +7 -0
  160. package/dist/registries/syntactic-patterns/generalization.js.map +1 -0
  161. package/dist/registries/syntactic-patterns/lead-ins.js +13 -0
  162. package/dist/registries/syntactic-patterns/lead-ins.js.map +1 -0
  163. package/dist/registries/syntactic-patterns/llm-artifacts.js +5 -0
  164. package/dist/registries/syntactic-patterns/llm-artifacts.js.map +1 -0
  165. package/dist/registries/syntactic-patterns/repetition.js +11 -0
  166. package/dist/registries/syntactic-patterns/repetition.js.map +1 -0
  167. package/dist/registries/syntactic-patterns.js +17 -0
  168. package/dist/registries/syntactic-patterns.js.map +1 -0
  169. package/dist/registries/term-policy.js +7 -0
  170. package/dist/registries/term-policy.js.map +1 -0
  171. package/dist/registries/words.js +11 -0
  172. package/dist/registries/words.js.map +1 -0
  173. package/dist/shared/matchers/phrases.js +71 -0
  174. package/dist/shared/matchers/phrases.js.map +1 -0
  175. package/dist/shared/matchers/prose-patterns.js +104 -0
  176. package/dist/shared/matchers/prose-patterns.js.map +1 -0
  177. package/dist/shared/text/document.js +18 -0
  178. package/dist/shared/text/document.js.map +1 -0
  179. package/dist/shared/text/normalize.js +30 -0
  180. package/dist/shared/text/normalize.js.map +1 -0
  181. package/dist/shared/text/quotes.js +20 -0
  182. package/dist/shared/text/quotes.js.map +1 -0
  183. package/dist/shared/text/sections.js +119 -0
  184. package/dist/shared/text/sections.js.map +1 -0
  185. package/dist/shared/text/sentences.js +79 -0
  186. package/dist/shared/text/sentences.js.map +1 -0
  187. package/dist/shared/text/tokens.js +18 -0
  188. package/dist/shared/text/tokens.js.map +1 -0
  189. package/dist/shared/text/traverse.js +10 -0
  190. package/dist/shared/text/traverse.js.map +1 -0
  191. package/dist/shared/text/whitespace.js +25 -0
  192. package/dist/shared/text/whitespace.js.map +1 -0
  193. package/package.json +115 -0
@@ -0,0 +1,66 @@
1
+ import { RuleHelper } from "textlint-rule-helper";
2
+ import { sourceText } from "../../shared/text/traverse.js";
3
+ import { splitWhitespace } from "../../shared/text/whitespace.js";
4
+ const MAX_CAPITALIZED_NON_FIRST_WORDS = 2;
5
+ const MAX_RUST_HEADING_DEPTH = 2;
6
+ function isUppercaseLetter(character) {
7
+ const lower = character.toLocaleLowerCase();
8
+ const upper = character.toLocaleUpperCase();
9
+ return lower !== upper && character === upper;
10
+ }
11
+ function hasLowercaseLetter(text) {
12
+ for (const character of text) {
13
+ const lower = character.toLocaleLowerCase();
14
+ const upper = character.toLocaleUpperCase();
15
+ if (lower !== upper && character === lower) {
16
+ return true;
17
+ }
18
+ }
19
+ return false;
20
+ }
21
+ function isTitleCased(word) {
22
+ const first = word[0];
23
+ if (first === undefined || !isUppercaseLetter(first)) {
24
+ return false;
25
+ }
26
+ return hasLowercaseLetter(word.slice(1));
27
+ }
28
+ function countCapitalizedNonFirstWords(text) {
29
+ let count = 0;
30
+ const words = splitWhitespace(text);
31
+ for (let index = 1; index < words.length; index += 1) {
32
+ const word = words[index];
33
+ if (word !== undefined && isTitleCased(word)) {
34
+ count += 1;
35
+ }
36
+ }
37
+ return count;
38
+ }
39
+ const rule = (context) => {
40
+ const { Syntax, RuleError, report } = context;
41
+ const helper = new RuleHelper(context);
42
+ const ignoredParents = [
43
+ Syntax.List,
44
+ Syntax.ListItem,
45
+ Syntax.Table,
46
+ Syntax.TableCell
47
+ ];
48
+ return {
49
+ [Syntax.Header](node) {
50
+ if (helper.isChildNode(node, ignoredParents)) {
51
+ return;
52
+ }
53
+ if (node.depth > MAX_RUST_HEADING_DEPTH) {
54
+ return;
55
+ }
56
+ const source = sourceText(node);
57
+ const count = countCapitalizedNonFirstWords(source.text);
58
+ if (count <= MAX_CAPITALIZED_NON_FIRST_WORDS) {
59
+ return;
60
+ }
61
+ report(node, new RuleError(`Heading looks like title case. Use sentence case; found ${count} capitalized non-first words.`));
62
+ }
63
+ };
64
+ };
65
+ export default rule;
66
+ //# sourceMappingURL=sentence-case.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sentence-case.js","sourceRoot":"","sources":["../../../src/families/orthography/sentence-case.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import { RuleHelper } from "textlint-rule-helper";
2
+ import { splitSentences } from "../../shared/text/sentences.js";
3
+ import { sourceText } from "../../shared/text/traverse.js";
4
+ const SMART_QUOTES = new Set(["\u201C", "\u201D", "\u2018", "\u2019"]);
5
+ function findSmartQuotes(text) {
6
+ const matches = [];
7
+ for (const sentence of splitSentences(text)) {
8
+ let matchedText = "";
9
+ let start;
10
+ let end = sentence.start;
11
+ for (let index = sentence.start; index < sentence.end; index += 1) {
12
+ const character = text[index];
13
+ if (character === undefined || !SMART_QUOTES.has(character)) {
14
+ continue;
15
+ }
16
+ start ??= index;
17
+ end = index + character.length;
18
+ matchedText += character;
19
+ }
20
+ if (start !== undefined) {
21
+ matches.push({ end, matchedText, start });
22
+ }
23
+ }
24
+ return matches;
25
+ }
26
+ const rule = (context) => {
27
+ const { Syntax, RuleError, locator, report } = context;
28
+ const helper = new RuleHelper(context);
29
+ const ignoredParents = [
30
+ Syntax.List,
31
+ Syntax.ListItem,
32
+ Syntax.Table,
33
+ Syntax.TableCell
34
+ ];
35
+ return {
36
+ [Syntax.Paragraph](node) {
37
+ if (helper.isChildNode(node, ignoredParents)) {
38
+ return;
39
+ }
40
+ const source = sourceText(node);
41
+ for (const match of findSmartQuotes(source.text)) {
42
+ report(node, new RuleError(`Smart quotes found: "${match.matchedText}". Replace curly quotes with straight quotes.`, {
43
+ padding: locator.range([
44
+ source.originalStartFor(match.start),
45
+ source.originalEndFor(match.end)
46
+ ])
47
+ }));
48
+ }
49
+ }
50
+ };
51
+ };
52
+ export default rule;
53
+ //# sourceMappingURL=smart-quotes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smart-quotes.js","sourceRoot":"","sources":["../../../src/families/orthography/smart-quotes.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AAQvE,SAAS,eAAe,CAAC,IAAY;IACnC,MAAM,OAAO,GAAsB,EAAE,CAAC;IAEtC,KAAK,MAAM,QAAQ,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5C,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,KAAyB,CAAC;QAC9B,IAAI,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC;QAEzB,KAAK,IAAI,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,QAAQ,CAAC,GAAG,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YAClE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9B,IAAI,SAAS,KAAK,SAAS,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC5D,SAAS;YACX,CAAC;YAED,KAAK,KAAK,KAAK,CAAC;YAChB,GAAG,GAAG,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC;YAC/B,WAAW,IAAI,SAAS,CAAC;QAC3B,CAAC;QAED,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,IAAI,GAAuB,CAAC,OAAO,EAAE,EAAE;IAC3C,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IACvD,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,cAAc,GAAG;QACrB,MAAM,CAAC,IAAI;QACX,MAAM,CAAC,QAAQ;QACf,MAAM,CAAC,KAAK;QACZ,MAAM,CAAC,SAAS;KACjB,CAAC;IAEF,OAAO;QACL,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAmB;YACpC,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,CAAC;gBAC7C,OAAO;YACT,CAAC;YAED,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YAEhC,KAAK,MAAM,KAAK,IAAI,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjD,MAAM,CACJ,IAAI,EACJ,IAAI,SAAS,CACX,wBAAwB,KAAK,CAAC,WAAW,+CAA+C,EACxF;oBACE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC;wBACrB,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC;wBACpC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC;qBACjC,CAAC;iBACH,CACF,CACF,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -0,0 +1,17 @@
1
+ import cliches from "./data/cliches.json" with { type: "json" };
2
+ import { findUnquotedPhraseMatches } from "../../shared/matchers/phrases.js";
3
+ const rule = (context) => {
4
+ const { Syntax, RuleError, getSource, locator, report } = context;
5
+ return {
6
+ [Syntax.Str](node) {
7
+ const text = getSource(node);
8
+ for (const match of findUnquotedPhraseMatches(text, cliches)) {
9
+ report(node, new RuleError(`Cliche found: "${match.text}". Replace it with specific wording.`, {
10
+ padding: locator.range([match.start, match.end])
11
+ }));
12
+ }
13
+ }
14
+ };
15
+ };
16
+ export default rule;
17
+ //# sourceMappingURL=cliches.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cliches.js","sourceRoot":"","sources":["../../../src/families/phrases/cliches.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,qBAAqB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAE7E,MAAM,IAAI,GAAuB,CAAC,OAAO,EAAE,EAAE;IAC3C,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAElE,OAAO;QACL,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI;YACf,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;YAE7B,KAAK,MAAM,KAAK,IAAI,yBAAyB,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;gBAC7D,MAAM,CACJ,IAAI,EACJ,IAAI,SAAS,CACX,kBAAkB,KAAK,CAAC,IAAI,sCAAsC,EAClE;oBACE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;iBACjD,CACF,CACF,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,IAAI,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { RuleHelper } from "textlint-rule-helper";
2
+ import corporateSpeak from "./data/corporate-speak.json" with { type: "json" };
3
+ import { findUnquotedPhraseMatches } from "../../shared/matchers/phrases.js";
4
+ const rule = (context) => {
5
+ const { Syntax, RuleError, getSource, locator, report } = context;
6
+ const helper = new RuleHelper(context);
7
+ const ignoredParents = [Syntax.Link, Syntax.LinkReference];
8
+ return {
9
+ [Syntax.Str](node) {
10
+ if (helper.isChildNode(node, ignoredParents)) {
11
+ return;
12
+ }
13
+ const text = getSource(node);
14
+ for (const match of findUnquotedPhraseMatches(text, corporateSpeak)) {
15
+ report(node, new RuleError(`Corporate-speak phrase found: "${match.text}". Replace it with specific wording.`, {
16
+ padding: locator.range([match.start, match.end])
17
+ }));
18
+ }
19
+ }
20
+ };
21
+ };
22
+ export default rule;
23
+ //# sourceMappingURL=corporate-speak.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"corporate-speak.js","sourceRoot":"","sources":["../../../src/families/phrases/corporate-speak.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,cAAc,MAAM,6BAA6B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAE7E,MAAM,IAAI,GAAuB,CAAC,OAAO,EAAE,EAAE;IAC3C,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAClE,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,cAAc,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;IAE3D,OAAO;QACL,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI;YACf,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,CAAC;gBAC7C,OAAO;YACT,CAAC;YAED,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;YAE7B,KAAK,MAAM,KAAK,IAAI,yBAAyB,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,CAAC;gBACpE,MAAM,CACJ,IAAI,EACJ,IAAI,SAAS,CACX,kCAAkC,KAAK,CAAC,IAAI,sCAAsC,EAClF;oBACE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;iBACjD,CACF,CACF,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,IAAI,CAAC"}