paperlint 4.1.0 → 4.2.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 (113) hide show
  1. package/CLAUDE.md +24 -0
  2. package/CONTRIBUTING.md +7 -0
  3. package/dist/adapters/latex/document-class.d.ts +6 -5
  4. package/dist/adapters/latex/document-class.d.ts.map +1 -1
  5. package/dist/adapters/latex/document-class.js +18 -10
  6. package/dist/adapters/latex/document-class.js.map +1 -1
  7. package/dist/adapters/latex/includes.d.ts +12 -0
  8. package/dist/adapters/latex/includes.d.ts.map +1 -0
  9. package/dist/adapters/latex/includes.js +42 -0
  10. package/dist/adapters/latex/includes.js.map +1 -0
  11. package/dist/adapters/latex/index.d.ts +9 -5
  12. package/dist/adapters/latex/index.d.ts.map +1 -1
  13. package/dist/adapters/latex/index.js +8 -1
  14. package/dist/adapters/latex/index.js.map +1 -1
  15. package/dist/adapters/latex/nodes.d.ts +5 -1
  16. package/dist/adapters/latex/nodes.d.ts.map +1 -1
  17. package/dist/adapters/latex/nodes.js +6 -2
  18. package/dist/adapters/latex/nodes.js.map +1 -1
  19. package/dist/adapters/latex/parse.d.ts.map +1 -1
  20. package/dist/adapters/latex/parse.js +1 -0
  21. package/dist/adapters/latex/parse.js.map +1 -1
  22. package/dist/adapters/latex/prose.d.ts +8 -0
  23. package/dist/adapters/latex/prose.d.ts.map +1 -0
  24. package/dist/adapters/latex/prose.js +353 -0
  25. package/dist/adapters/latex/prose.js.map +1 -0
  26. package/dist/claim-provenance.d.ts +34 -0
  27. package/dist/claim-provenance.d.ts.map +1 -0
  28. package/dist/claim-provenance.js +146 -0
  29. package/dist/claim-provenance.js.map +1 -0
  30. package/dist/cli.d.ts.map +1 -1
  31. package/dist/cli.js +20 -0
  32. package/dist/cli.js.map +1 -1
  33. package/dist/domain/paper-source.d.ts +58 -0
  34. package/dist/domain/paper-source.d.ts.map +1 -0
  35. package/dist/domain/paper-source.js +109 -0
  36. package/dist/domain/paper-source.js.map +1 -0
  37. package/dist/domain/sentences.d.ts +26 -0
  38. package/dist/domain/sentences.d.ts.map +1 -0
  39. package/dist/domain/sentences.js +48 -0
  40. package/dist/domain/sentences.js.map +1 -0
  41. package/dist/domain/tex-document.d.ts +39 -4
  42. package/dist/domain/tex-document.d.ts.map +1 -1
  43. package/dist/domain/tex-document.js.map +1 -1
  44. package/dist/eslint-rules/paper-typography.d.ts +7 -0
  45. package/dist/eslint-rules/paper-typography.d.ts.map +1 -1
  46. package/dist/eslint-rules/paper-typography.js +53 -1
  47. package/dist/eslint-rules/paper-typography.js.map +1 -1
  48. package/dist/ports/latex.d.ts +12 -1
  49. package/dist/ports/latex.d.ts.map +1 -1
  50. package/dist/register.d.ts +40 -0
  51. package/dist/register.d.ts.map +1 -0
  52. package/dist/register.js +134 -0
  53. package/dist/register.js.map +1 -0
  54. package/dist/tex-paper.d.ts +19 -0
  55. package/dist/tex-paper.d.ts.map +1 -0
  56. package/dist/tex-paper.js +105 -0
  57. package/dist/tex-paper.js.map +1 -0
  58. package/dist/tex-venue-rules.d.ts +7 -2
  59. package/dist/tex-venue-rules.d.ts.map +1 -1
  60. package/dist/tex-venue-rules.js +31 -17
  61. package/dist/tex-venue-rules.js.map +1 -1
  62. package/docs/rules/tex/claim-provenance.md +83 -0
  63. package/docs/rules/tex/missing-input.md +58 -0
  64. package/docs/rules/tex/register.md +77 -0
  65. package/docs/rules/tex/required-section.md +3 -1
  66. package/docs/rules/tex/template.md +12 -0
  67. package/docs/rules/tex/venue-leftover.md +4 -2
  68. package/docs/rules.md +3 -0
  69. package/eslint-rules/paper-typography.test.mjs +48 -1
  70. package/eslint-rules/paper-typography.ts +72 -1
  71. package/eslint.config.mjs +1 -0
  72. package/fixtures/real-markdown-paper/baseline.ts +8 -7
  73. package/package.json +2 -1
  74. package/skills/cold-read-diff/SKILL.md +31 -10
  75. package/skills/cold-read-diff/SKILL.md.spec.ts +30 -9
  76. package/skills/draft-paper/SKILL.md +2 -2
  77. package/skills/draft-paper/SKILL.md.spec.ts +1 -1
  78. package/skills/grade-paper-writing/SKILL.md +109 -44
  79. package/skills/grade-paper-writing/SKILL.md.spec.ts +108 -43
  80. package/skills/harden-paper/SKILL.md +35 -36
  81. package/skills/harden-paper/SKILL.md.spec.ts +34 -35
  82. package/skills/paper-adversarial-review/SKILL.md +2 -2
  83. package/skills/paper-adversarial-review/SKILL.md.spec.ts +1 -1
  84. package/skills/paper-pipeline/SKILL.md +3 -3
  85. package/skills/paper-pipeline/SKILL.md.spec.ts +2 -2
  86. package/skills/paper-pipeline/grade-paper-writing-ablation.eval.mjs +6 -6
  87. package/skills/paper-pipeline/references/writing-craft.md +53 -18
  88. package/skills/pc-panel-review/SKILL.md +36 -11
  89. package/skills/pc-panel-review/SKILL.md.spec.ts +35 -10
  90. package/src/adapters/latex/document-class.ts +20 -12
  91. package/src/adapters/latex/includes.ts +66 -0
  92. package/src/adapters/latex/index.test.ts +175 -1
  93. package/src/adapters/latex/index.ts +14 -4
  94. package/src/adapters/latex/nodes.ts +11 -2
  95. package/src/adapters/latex/parse.ts +1 -0
  96. package/src/adapters/latex/prose.ts +484 -0
  97. package/src/claim-provenance.test.ts +352 -0
  98. package/src/claim-provenance.ts +217 -0
  99. package/src/cli.ts +20 -0
  100. package/src/domain/paper-source.test.ts +156 -0
  101. package/src/domain/paper-source.ts +233 -0
  102. package/src/domain/sentences.ts +67 -0
  103. package/src/domain/tex-document.ts +36 -3
  104. package/src/ports/latex.ts +13 -0
  105. package/src/register.test.ts +165 -0
  106. package/src/register.ts +177 -0
  107. package/src/rule-cases.test.ts +54 -4
  108. package/src/tex-paper.test.ts +131 -0
  109. package/src/tex-paper.ts +152 -0
  110. package/src/tex-venue-rules.test.ts +87 -5
  111. package/src/tex-venue-rules.ts +62 -30
  112. package/skills/harden-paper/fixtures/uncited-assertions-sample.md +0 -43
  113. package/skills/harden-paper/fixtures/uncited-assertions-sample.tex +0 -77
@@ -61,6 +61,7 @@
61
61
  */
62
62
  import assert from "node:assert/strict";
63
63
  import { getParser } from "@unified-latex/unified-latex-util-parse";
64
+ import { takeWhile } from "remeda";
64
65
  /** The inline bibliography — a `filecontents` block writing a `.bib` — with its offsets. */
65
66
  export function bibRange(text) {
66
67
  const m = /\\begin\{filecontents\*?\}(?:\[[^\]]*\])?\{[^}]*\.bib\}\r?\n([\s\S]*?)\\end\{filecontents\*?\}/d.exec(text);
@@ -87,7 +88,58 @@ function skippedRanges(sourceCode, raw) {
87
88
  const bib = bibRange(raw);
88
89
  if (bib)
89
90
  out.push([bib.start, bib.end]);
90
- return out;
91
+ return [...out, ...crefDefinitionRanges(raw)];
92
+ }
93
+ /**
94
+ * cleveref's name and format definitions (`\crefname{section}{§}{§§}`): the label a reference
95
+ * prints is set there, not written as prose, so a sign in them is not a sign in the text.
96
+ */
97
+ const CREF_DEFINITIONS = new Set([
98
+ "crefname",
99
+ "Crefname",
100
+ "crefformat",
101
+ "Crefformat",
102
+ "crefrangeformat",
103
+ "Crefrangeformat",
104
+ "crefmultiformat",
105
+ "Crefmultiformat",
106
+ "crefrangemultiformat",
107
+ "Crefrangemultiformat",
108
+ ]);
109
+ const isGroup = (n) => n.type === "group";
110
+ /**
111
+ * A macro's range with its arguments: the ones the parser attached (cleveref's are signed) or the
112
+ * `{…}` groups standing right after it when it was given none — from the first to the last offset
113
+ * any of them carries. An argument's closing brace is one character past its last node.
114
+ */
115
+ function withArguments(m, after) {
116
+ const offsets = [
117
+ m.position?.start.offset,
118
+ m.position?.end.offset,
119
+ ...(m.args ?? []).map((a) => {
120
+ const last = a.content?.at(-1)?.position?.end.offset;
121
+ return last === undefined ? undefined : last + 1;
122
+ }),
123
+ takeWhile(after, isGroup).at(-1)?.position?.end.offset,
124
+ ].filter((o) => o !== undefined);
125
+ return offsets.length === 0
126
+ ? []
127
+ : [[Math.min(...offsets), Math.max(...offsets)]];
128
+ }
129
+ /**
130
+ * The ranges of the cleveref definitions in the preamble and in the document body. `parse` is
131
+ * unified-latex's; a test hands in a tree with the fields the walk tolerates being absent.
132
+ */
133
+ export function crefDefinitionRanges(raw, { parse = (s) => getParser().parse(s), } = {}) {
134
+ const root = parse(raw);
135
+ const doc = root.content.find((n) => n.type === "environment" && n.env === "document");
136
+ const lists = [
137
+ root.content,
138
+ doc?.content ?? [],
139
+ ];
140
+ return lists.flatMap((list) => list.flatMap((n, i) => n.type === "macro" && CREF_DEFINITIONS.has(n.content)
141
+ ? withArguments(n, list.slice(i + 1))
142
+ : []));
91
143
  }
92
144
  const inside = (ranges, i) => ranges.some(([s, e]) => i >= s && i < e);
93
145
  /** Every match of `re` in `raw` outside the skipped ranges. */
@@ -1 +1 @@
1
- {"version":3,"file":"paper-typography.js","sourceRoot":"","sources":["../../eslint-rules/paper-typography.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"paper-typography.js","sourceRoot":"","sources":["../../eslint-rules/paper-typography.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,8 @@
2
2
  * What paperlint needs from a LaTeX source, shaped by its rules and `paperlint new` — not by the
3
3
  * parser. The one implementation is `src/adapters/latex/` (unified-latex); `src/cli.ts` wires it.
4
4
  */
5
- import type { ClassLine, DocumentClass, Outline, TextRun } from "../domain/tex-document.ts";
5
+ import type { Include } from "../domain/paper-source.ts";
6
+ import type { ClassLine, DocumentClass, Outline, Passage, Span, TextRun } from "../domain/tex-document.ts";
6
7
  export interface LatexReader {
7
8
  /** The source's `\documentclass`, as one of its states. */
8
9
  readonly documentClass: (src: string) => ClassLine;
@@ -10,6 +11,16 @@ export interface LatexReader {
10
11
  readonly outline: (src: string) => Outline;
11
12
  /** The text a reader sees: prose, the author block, footnotes — not comments, keys, math, code. */
12
13
  readonly renderedRuns: (src: string) => readonly TextRun[];
14
+ /**
15
+ * The body's prose, as passages a sentence cannot cross: from the start of the document (the
16
+ * abstract included) to the appendix or the bibliography, without headings, captions, floats,
17
+ * code or the title block. Citations, links and cross-references stay in place as marks.
18
+ */
19
+ readonly bodyProse: (src: string) => readonly Passage[];
20
+ /** Every `\input`, `\include` and `\subfile`, in source order: the path as written, where it stands. */
21
+ readonly includes: (src: string) => readonly Include[];
22
+ /** The span of the `document` environment's body, or null when the source has none. */
23
+ readonly documentBody: (src: string) => Span | null;
13
24
  /**
14
25
  * A preset's `template` → the class it names: a whole `\documentclass[…]{…}` line, or a bare
15
26
  * class name (no option). Null for anything else.
@@ -1 +1 @@
1
- {"version":3,"file":"latex.d.ts","sourceRoot":"","sources":["../../src/ports/latex.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EACV,SAAS,EACT,aAAa,EACb,OAAO,EACP,OAAO,EACR,MAAM,2BAA2B,CAAC;AAEnC,MAAM,WAAW,WAAW;IAC1B,2DAA2D;IAC3D,QAAQ,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,SAAS,CAAC;IACnD,+EAA+E;IAC/E,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IAC3C,mGAAmG;IACnG,QAAQ,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,SAAS,OAAO,EAAE,CAAC;IAC3D;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,aAAa,GAAG,IAAI,CAAC;IAC1D;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,KAAK,MAAM,CAAC;CAC1E"}
1
+ {"version":3,"file":"latex.d.ts","sourceRoot":"","sources":["../../src/ports/latex.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,EACV,SAAS,EACT,aAAa,EACb,OAAO,EACP,OAAO,EACP,IAAI,EACJ,OAAO,EACR,MAAM,2BAA2B,CAAC;AAEnC,MAAM,WAAW,WAAW;IAC1B,2DAA2D;IAC3D,QAAQ,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,SAAS,CAAC;IACnD,+EAA+E;IAC/E,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IAC3C,mGAAmG;IACnG,QAAQ,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,SAAS,OAAO,EAAE,CAAC;IAC3D;;;;OAIG;IACH,QAAQ,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,SAAS,OAAO,EAAE,CAAC;IACxD,wGAAwG;IACxG,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,SAAS,OAAO,EAAE,CAAC;IACvD,uFAAuF;IACvF,QAAQ,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IACpD;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,aAAa,GAAG,IAAI,CAAC;IAC1D;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,KAAK,MAAM,CAAC;CAC1E"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * `tex/register` — the body reads at the register of a paper, not of a post: sentences that open
3
+ * with a coordinating conjunction stay as rare as they are in accepted papers.
4
+ *
5
+ * warn more than 0.8 sentences per 1000 words of the body open with And, So, But, Nor, Or or Yet
6
+ *
7
+ * ── WHY ──────────────────────────────────────────────────────────────────────────
8
+ * Reviewers called our prose "too informal" and "a blogpost" twice. Measured against eleven accepted
9
+ * papers, sentence-initial conjunctions set our drafts apart (accepted 0–0.58 per 1000 words). The
10
+ * limit is an option; its default and the measurement behind it are on the rule's page.
11
+ *
12
+ * ── WHAT IT READS ────────────────────────────────────────────────────────────────
13
+ * The body's prose through the `LatexReader` port (`bodyProse`) — the parse tree of the whole paper,
14
+ * includes spliced — cut into sentences by the same splitter `tex/claim-provenance` uses
15
+ * (src/domain/sentences.ts). A citation, a cross-reference or math reads as one word, as it does on
16
+ * the page. A body under 2 000 words is not judged: there one sentence decides the rate.
17
+ */
18
+ import { type Passage, type Span } from "./domain/tex-document.ts";
19
+ import { type PaperDeps } from "./tex-paper.ts";
20
+ import { type Located, type TexRuleModule } from "./tex-venue-rules.ts";
21
+ /** Under this many words in the body, the rate is not judged. */
22
+ export declare const MIN_WORDS = 2000;
23
+ /** The limit when the config sets none, from the measurement on the rule's page. */
24
+ export declare const DEFAULT_LIMIT = 0.8;
25
+ /** What the body measures. */
26
+ export interface RegisterMeasure {
27
+ readonly words: number;
28
+ readonly conjunctionStarts: number;
29
+ /** The first three, as the reader sees them. */
30
+ readonly examples: readonly string[];
31
+ /** Where the body's first passage starts, for a finding about the whole body. */
32
+ readonly at: Span | null;
33
+ }
34
+ /** The body's words, and its sentences that open with a conjunction. */
35
+ export declare function measureRegister(passages: readonly Passage[]): RegisterMeasure;
36
+ /** One finding, at the start of the body, when the rate runs above `limit` per 1000 words. */
37
+ export declare function judgeRegister(m: RegisterMeasure, limit?: number): readonly Located[];
38
+ /** The rule, over the body's prose of the whole paper, its includes spliced (`readPaper`). */
39
+ export declare const registerRule: (deps: PaperDeps) => TexRuleModule;
40
+ //# sourceMappingURL=register.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAW,KAAK,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAE5E,OAAO,EAA4B,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAE9B,iEAAiE;AACjE,eAAO,MAAM,SAAS,OAAO,CAAC;AAE9B,oFAAoF;AACpF,eAAO,MAAM,aAAa,MAAM,CAAC;AAoCjC,8BAA8B;AAC9B,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,gDAAgD;IAChD,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,iFAAiF;IACjF,QAAQ,CAAC,EAAE,EAAE,IAAI,GAAG,IAAI,CAAC;CAC1B;AAaD,wEAAwE;AACxE,wBAAgB,eAAe,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,eAAe,CAgB7E;AAED,8FAA8F;AAC9F,wBAAgB,aAAa,CAC3B,CAAC,EAAE,eAAe,EAClB,KAAK,GAAE,MAAsB,GAC5B,SAAS,OAAO,EAAE,CAWpB;AAmCD,8FAA8F;AAC9F,eAAO,MAAM,YAAY,GAAI,MAAM,SAAS,KAAG,aAmB7C,CAAC"}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * `tex/register` — the body reads at the register of a paper, not of a post: sentences that open
3
+ * with a coordinating conjunction stay as rare as they are in accepted papers.
4
+ *
5
+ * warn more than 0.8 sentences per 1000 words of the body open with And, So, But, Nor, Or or Yet
6
+ *
7
+ * ── WHY ──────────────────────────────────────────────────────────────────────────
8
+ * Reviewers called our prose "too informal" and "a blogpost" twice. Measured against eleven accepted
9
+ * papers, sentence-initial conjunctions set our drafts apart (accepted 0–0.58 per 1000 words). The
10
+ * limit is an option; its default and the measurement behind it are on the rule's page.
11
+ *
12
+ * ── WHAT IT READS ────────────────────────────────────────────────────────────────
13
+ * The body's prose through the `LatexReader` port (`bodyProse`) — the parse tree of the whole paper,
14
+ * includes spliced — cut into sentences by the same splitter `tex/claim-provenance` uses
15
+ * (src/domain/sentences.ts). A citation, a cross-reference or math reads as one word, as it does on
16
+ * the page. A body under 2 000 words is not judged: there one sentence decides the rate.
17
+ */
18
+ import { runText } from "./domain/tex-document.js";
19
+ import { runOf, sentences } from "./domain/sentences.js";
20
+ import { readPaper, reportInPaper } from "./tex-paper.js";
21
+ import { ruleDocsUrl, } from "./tex-venue-rules.js";
22
+ /** Under this many words in the body, the rate is not judged. */
23
+ export const MIN_WORDS = 2000;
24
+ /** The limit when the config sets none, from the measurement on the rule's page. */
25
+ export const DEFAULT_LIMIT = 0.8;
26
+ /** The words that, opening a sentence, make it a conjunction start. Capitalised: only a first word. */
27
+ const CONJUNCTIONS = new Set([
28
+ "And",
29
+ "So",
30
+ "But",
31
+ "Nor",
32
+ "Or",
33
+ "Yet",
34
+ ]);
35
+ /** The characters a mark or math stands as in a sentence's text (src/domain/sentences.ts). */
36
+ const MARK = /[-]/gu;
37
+ const WORDS = new Intl.Segmenter("en", { granularity: "word" });
38
+ /** A sentence's words: the word-like ones, and one for each mark or math. Null when it has none of its own. */
39
+ function sentenceOf(text) {
40
+ const words = [...WORDS.segment(text)].filter((w) => w.isWordLike);
41
+ const [first] = words;
42
+ if (first === undefined)
43
+ return null;
44
+ return {
45
+ text: text.replace(MARK, "").replace(/\s+/gu, " ").trim(),
46
+ words: words.length + (text.match(MARK)?.length ?? 0),
47
+ first: first.segment,
48
+ };
49
+ }
50
+ /** Where a passage's first piece stands. */
51
+ function startOf(p) {
52
+ const first = p.pieces[0];
53
+ return first.kind === "text"
54
+ ? {
55
+ start: first.segment.at,
56
+ end: first.segment.at + first.segment.text.length,
57
+ }
58
+ : first.span;
59
+ }
60
+ /** The body's words, and its sentences that open with a conjunction. */
61
+ export function measureRegister(passages) {
62
+ const all = passages.flatMap((p) => {
63
+ const text = runText(runOf(p));
64
+ return sentences(text).flatMap(([from, to]) => {
65
+ const s = sentenceOf(text.slice(from, to));
66
+ return s === null ? [] : [s];
67
+ });
68
+ });
69
+ const conj = all.filter((s) => CONJUNCTIONS.has(s.first));
70
+ const [first] = passages;
71
+ return {
72
+ words: all.reduce((n, s) => n + s.words, 0),
73
+ conjunctionStarts: conj.length,
74
+ examples: conj.slice(0, 3).map((s) => s.text),
75
+ at: first === undefined ? null : startOf(first),
76
+ };
77
+ }
78
+ /** One finding, at the start of the body, when the rate runs above `limit` per 1000 words. */
79
+ export function judgeRegister(m, limit = DEFAULT_LIMIT) {
80
+ if (m.words < MIN_WORDS)
81
+ return [];
82
+ const rate = (1000 * m.conjunctionStarts) / m.words;
83
+ if (rate <= limit)
84
+ return [];
85
+ const data = {
86
+ count: m.conjunctionStarts,
87
+ rate: rate.toFixed(2),
88
+ limit,
89
+ examples: m.examples.map((x) => `«${x}»`).join(", "),
90
+ };
91
+ return [{ messageId: "conjunctionStarts", data, at: m.at }];
92
+ }
93
+ /** The limit the config sets, or the default: ESLint has validated the option against the schema. */
94
+ function limitOf(options) {
95
+ const [o] = options ?? [];
96
+ const given = typeof o === "object" && o !== null
97
+ ? Object.fromEntries(Object.entries(o))
98
+ : {};
99
+ const v = given["conjunctionStartsPer1000"];
100
+ return typeof v === "number" ? v : DEFAULT_LIMIT;
101
+ }
102
+ const META = {
103
+ type: "suggestion",
104
+ docs: {
105
+ description: "the body reads at a paper's register: few sentences open with And, So, But, Nor, Or or Yet",
106
+ url: ruleDocsUrl("register"),
107
+ },
108
+ schema: [
109
+ {
110
+ type: "object",
111
+ properties: {
112
+ conjunctionStartsPer1000: { type: "number", minimum: 0 },
113
+ },
114
+ additionalProperties: false,
115
+ },
116
+ ],
117
+ messages: {
118
+ conjunctionStarts: "{{count}} sentences open with And, So, But, Nor, Or or Yet — {{rate}} per 1000 words (first: {{examples}}). Accepted papers measured 0–0.58; this rule warns above {{limit}}. Join the sentence to the one before, or open with the connective a paper uses (However, Therefore, Moreover)",
119
+ },
120
+ };
121
+ /** The rule, over the body's prose of the whole paper, its includes spliced (`readPaper`). */
122
+ export const registerRule = (deps) => ({
123
+ meta: META,
124
+ create(context) {
125
+ return {
126
+ root() {
127
+ const sc = context.sourceCode;
128
+ const paper = readPaper(context.filename, sc.raw ?? sc.text, deps);
129
+ reportInPaper(context, META.messages, paper, judgeRegister(measureRegister(deps.latex.bodyProse(paper.text)), limitOf(context.options)));
130
+ },
131
+ };
132
+ },
133
+ });
134
+ //# sourceMappingURL=register.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { type PaperSource } from "./domain/paper-source.ts";
2
+ import type { LatexReader } from "./ports/latex.ts";
3
+ import type { Files } from "./ports/files.ts";
4
+ import type { Located, TexRuleContext, TexRuleModule } from "./tex-venue-rules.ts";
5
+ /** What reading a paper needs: the disk, and the LaTeX reader. */
6
+ export interface PaperDeps {
7
+ readonly files: Files;
8
+ readonly latex: LatexReader;
9
+ }
10
+ /** The paper whose main file is `filename` with the text `src`, its includes spliced. */
11
+ export declare function readPaper(filename: string, src: string, deps: PaperDeps): PaperSource;
12
+ /**
13
+ * Each finding reported in the main file: at its own place, or at the include that brought its text
14
+ * in, named in the message (`sections/results.tex:12:3: …`). Offsets are the assembled text's.
15
+ */
16
+ export declare function reportInPaper(context: TexRuleContext, messages: Readonly<Record<string, string>>, paper: PaperSource, findings: readonly Located[]): void;
17
+ /** The includes that name no file, each reported where it stands in the main file. */
18
+ export declare const missingInputRule: (deps: PaperDeps) => TexRuleModule;
19
+ //# sourceMappingURL=tex-paper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tex-paper.d.ts","sourceRoot":"","sources":["../src/tex-paper.ts"],"names":[],"mappings":"AAgBA,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,KAAK,EACV,OAAO,EACP,cAAc,EACd,aAAa,EACd,MAAM,sBAAsB,CAAC;AAE9B,kEAAkE;AAClE,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;CAC7B;AAED,yFAAyF;AACzF,wBAAgB,SAAS,CACvB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,SAAS,GACd,WAAW,CAUb;AAoCD;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAC1C,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,SAAS,OAAO,EAAE,GAC3B,IAAI,CAiBN;AAkBD,sFAAsF;AACtF,eAAO,MAAM,gBAAgB,GAAI,MAAM,SAAS,KAAG,aAkBjD,CAAC"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * THE PAPER, NOT ITS MAIN FILE — what every rule over the LaTeX parse tree reads, and how it reports.
3
+ *
4
+ * `readPaper` gives a rule `paper.tex` with every `\input`, `\include` and `\subfile` spliced in, the
5
+ * way TeX reads it (`assemblePaper`, src/domain/paper-source.ts). `reportInPaper` puts each finding
6
+ * back where its text came from: a finding in `paper.tex` at its own place; a finding in an included
7
+ * file at the include in `paper.tex` that brought it in — the one place ESLint can point to in this
8
+ * file — with the included file, line and column at the front of the message.
9
+ *
10
+ * tex/missing-input warn an `\input`, `\include` or `\subfile` names a file that is not there
11
+ *
12
+ * A missing file is a finding, not a silent skip: the rules would otherwise report a clean body for
13
+ * text they never read, and TeX stops on it too. Warn, not error: a file a build step writes (a
14
+ * table of generated numbers) is legitimately absent before that step has run.
15
+ */
16
+ import { basename, dirname, join } from "node:path";
17
+ import { assemblePaper, originOf, } from "./domain/paper-source.js";
18
+ import { callerPath } from "./caller-path.js";
19
+ /** The paper whose main file is `filename` with the text `src`, its includes spliced. */
20
+ export function readPaper(filename, src, deps) {
21
+ const dir = dirname(filename);
22
+ return assemblePaper(basename(filename), src, {
23
+ includes: deps.latex.includes,
24
+ documentBody: deps.latex.documentBody,
25
+ read: (rel) => {
26
+ const b = deps.files.readBytes(callerPath(join(dir, rel)));
27
+ return b === null ? null : new TextDecoder().decode(b);
28
+ },
29
+ });
30
+ }
31
+ /** Line and column (1-based) of an offset in a text. */
32
+ function lineColumn(text, at) {
33
+ const line = text.slice(0, at).split("\n").length;
34
+ const column = at - text.lastIndexOf("\n", at - 1);
35
+ return `${String(line)}:${String(column)}`;
36
+ }
37
+ /** A message template with its data filled in, the way ESLint fills it. */
38
+ const filled = (template, data = {}) => Object.entries(data).reduce((m, [k, v]) => m.replaceAll(`{{${k}}}`, String(v)), template);
39
+ /** A finding's span of the assembled text, as a place in the main file. */
40
+ function placed(paper, at) {
41
+ const origin = at === null ? null : originOf(paper, at);
42
+ if (origin === null)
43
+ return { at: null, from: null };
44
+ if (origin.file === paper.main)
45
+ return { at: origin.span, from: null };
46
+ return {
47
+ at: origin.via,
48
+ from: `${origin.file}:${lineColumn(origin.source, origin.span.start)}`,
49
+ };
50
+ }
51
+ /**
52
+ * Each finding reported in the main file: at its own place, or at the include that brought its text
53
+ * in, named in the message (`sections/results.tex:12:3: …`). Offsets are the assembled text's.
54
+ */
55
+ export function reportInPaper(context, messages, paper, findings) {
56
+ const loc = (i) => context.sourceCode.getLocFromIndex(i);
57
+ findings.forEach((f) => {
58
+ const p = placed(paper, f.at);
59
+ const where = {
60
+ start: loc(p.at?.start ?? 0),
61
+ end: loc(p.at?.end ?? 0),
62
+ };
63
+ if (p.from === null)
64
+ context.report({ loc: where, messageId: f.messageId, data: f.data });
65
+ else
66
+ context.report({
67
+ loc: where,
68
+ // A message id the rule does not define is printed as itself rather than dropped.
69
+ message: `${p.from}: ${filled(messages[f.messageId] ?? f.messageId, f.data)}`,
70
+ });
71
+ });
72
+ }
73
+ const MISSING_META = {
74
+ type: "problem",
75
+ docs: {
76
+ description: "an \\input, \\include or \\subfile names a file that is not there, so no rule read its text",
77
+ url: "https://github.com/zernie/paperlint/blob/main/docs/rules/tex/missing-input.md",
78
+ },
79
+ schema: [],
80
+ messages: {
81
+ missing: "`{{target}}` is not there (tried `{{target}}.tex` and `{{target}}`, from the paper's directory): TeX stops on it, and no rule read what it should hold",
82
+ missingIn: "`{{target}}`, which {{file}} includes, is not there (tried `{{target}}.tex` and `{{target}}`, from the paper's directory): TeX stops on it, and no rule read what it should hold",
83
+ },
84
+ };
85
+ /** The includes that name no file, each reported where it stands in the main file. */
86
+ export const missingInputRule = (deps) => ({
87
+ meta: MISSING_META,
88
+ create(context) {
89
+ return {
90
+ root() {
91
+ const sc = context.sourceCode;
92
+ const paper = readPaper(context.filename, sc.raw ?? sc.text, deps);
93
+ const loc = (i) => sc.getLocFromIndex(i);
94
+ paper.missing.forEach((m) => {
95
+ context.report({
96
+ loc: { start: loc(m.via.start), end: loc(m.via.end) },
97
+ messageId: m.file === paper.main ? "missing" : "missingIn",
98
+ data: { target: m.target, file: m.file },
99
+ });
100
+ });
101
+ },
102
+ };
103
+ },
104
+ });
105
+ //# sourceMappingURL=tex-paper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tex-paper.js","sourceRoot":"","sources":["../src/tex-paper.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,8 @@ export interface Located extends Finding {
9
9
  /** The slice of ESLint's rule context these rules use. `raw` exists on the `.tex` language's. */
10
10
  export interface TexRuleContext {
11
11
  readonly filename: string;
12
+ /** The rule's options from the config, as ESLint validated them against its schema. */
13
+ readonly options?: readonly unknown[];
12
14
  readonly sourceCode: {
13
15
  readonly text: string;
14
16
  readonly raw?: string;
@@ -28,9 +30,12 @@ export interface TexRuleContext {
28
30
  column: number;
29
31
  };
30
32
  };
33
+ } & ({
31
34
  readonly messageId: string;
32
35
  readonly data?: Readonly<Record<string, string | number>>;
33
- }): void;
36
+ } | {
37
+ readonly message: string;
38
+ })): void;
34
39
  }
35
40
  export interface TexRuleModule {
36
41
  readonly meta: {
@@ -65,7 +70,7 @@ export interface OtherVenue {
65
70
  */
66
71
  export declare function judgeLeftover(runs: readonly TextRun[], preset: Preset, others: readonly OtherVenue[]): readonly Located[];
67
72
  /** Where a rule's page lives: `docs/rules/tex/<name>.md` on the default branch. */
68
- export declare const ruleDocsUrl: (name: TexVenueRuleName) => string;
73
+ export declare const ruleDocsUrl: (name: TexVenueRuleName | "claim-provenance" | "register") => string;
69
74
  export type TexVenueRuleName = "template" | "required-section" | "venue-leftover";
70
75
  /** The level each rule is on at in paperlint's own config, for every `paper.tex`. */
71
76
  export declare const TEX_VENUE_RULE_LEVELS: Readonly<Record<`tex/${TexVenueRuleName}`, "error" | "warn">>;
@@ -1 +1 @@
1
- {"version":3,"file":"tex-venue-rules.d.ts","sourceRoot":"","sources":["../src/tex-venue-rules.ts"],"names":[],"mappings":"AAwBA,OAAO,EAML,KAAK,SAAS,EAGd,KAAK,OAAO,EAEZ,KAAK,IAAI,EACT,KAAK,OAAO,EACb,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAKL,KAAK,MAAM,EACZ,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE/D,yEAAyE;AACzE,MAAM,WAAW,OAAQ,SAAQ,OAAO;IACtC,QAAQ,CAAC,EAAE,EAAE,IAAI,GAAG,IAAI,CAAC;CAC1B;AAED,iGAAiG;AACjG,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE;QACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QACtB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC5E,CAAC;IACF,MAAM,CAAC,CAAC,EAAE;QACR,QAAQ,CAAC,GAAG,EAAE;YACZ,QAAQ,CAAC,KAAK,EAAE;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,MAAM,EAAE,MAAM,CAAA;aAAE,CAAC;YACjD,QAAQ,CAAC,GAAG,EAAE;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,MAAM,EAAE,MAAM,CAAA;aAAE,CAAC;SAChD,CAAC;QACF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;KAC3D,GAAG,IAAI,CAAC;CACV;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE;QACb,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,YAAY,CAAC;QACxC,QAAQ,CAAC,IAAI,EAAE;YAAE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAC;QACtE,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;QACnC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;KACrD,CAAC;IACF,MAAM,CAAC,OAAO,EAAE,cAAc,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC;CACxD;AAgDD;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,GACnC,SAAS,OAAO,EAAE,CAUpB;AAoDD,sEAAsE;AACtE,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,OAAO,EACtB,MAAM,EAAE,MAAM,GACb,SAAS,OAAO,EAAE,CAMpB;AAED,uFAAuF;AACvF,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAMD;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,SAAS,OAAO,EAAE,EACxB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,UAAU,EAAE,GAC5B,SAAS,OAAO,EAAE,CAsBpB;AAED,mFAAmF;AACnF,eAAO,MAAM,WAAW,GAAI,MAAM,gBAAgB,KAAG,MACsB,CAAC;AAW5E,MAAM,MAAM,gBAAgB,GAC1B,UAAU,GAAG,kBAAkB,GAAG,gBAAgB,CAAC;AAsErD,qFAAqF;AACrF,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAC1C,MAAM,CAAC,OAAO,gBAAgB,EAAE,EAAE,OAAO,GAAG,MAAM,CAAC,CAKpD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,aAAa,GAClB,SAAS,UAAU,EAAE,CAQvB;AAED,+FAA+F;AAC/F,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IACrD,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;CAC7B;AAoDD,+FAA+F;AAC/F,wBAAgB,aAAa,CAC3B,IAAI,EAAE,gBAAgB,GACrB,QAAQ,CAAC,MAAM,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC,CAMnD"}
1
+ {"version":3,"file":"tex-venue-rules.d.ts","sourceRoot":"","sources":["../src/tex-venue-rules.ts"],"names":[],"mappings":"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"}