chaffjs 0.7.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -4
- package/dist/adapter-load.d.ts +12 -1
- package/dist/adapter-load.d.ts.map +1 -1
- package/dist/adapter-load.js +37 -13
- package/dist/adapter-load.js.map +1 -1
- package/dist/cli-args.d.ts +8 -0
- package/dist/cli-args.d.ts.map +1 -0
- package/dist/cli-args.js +8 -0
- package/dist/cli-args.js.map +1 -0
- package/dist/cli-text.d.ts +26 -0
- package/dist/cli-text.d.ts.map +1 -0
- package/dist/cli-text.js +151 -0
- package/dist/cli-text.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +75 -86
- package/dist/cli.js.map +1 -1
- package/dist/commands/cite.d.ts +2 -1
- package/dist/commands/cite.d.ts.map +1 -1
- package/dist/commands/cite.js +39 -18
- package/dist/commands/cite.js.map +1 -1
- package/dist/commands/skill.d.ts +22 -0
- package/dist/commands/skill.d.ts.map +1 -0
- package/dist/commands/skill.js +68 -0
- package/dist/commands/skill.js.map +1 -0
- package/dist/commands/tree.d.ts +11 -1
- package/dist/commands/tree.d.ts.map +1 -1
- package/dist/commands/tree.js +18 -6
- package/dist/commands/tree.js.map +1 -1
- package/dist/config/rule-problems.d.ts +2 -1
- package/dist/config/rule-problems.d.ts.map +1 -1
- package/dist/config/rule-problems.js +17 -6
- package/dist/config/rule-problems.js.map +1 -1
- package/dist/config/write.d.ts.map +1 -1
- package/dist/config/write.js +29 -9
- package/dist/config/write.js.map +1 -1
- package/dist/genre.d.ts +1 -1
- package/dist/genre.d.ts.map +1 -1
- package/dist/genre.js +3 -3
- package/dist/genre.js.map +1 -1
- package/dist/init.d.ts +2 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +62 -13
- package/dist/init.js.map +1 -1
- package/dist/plugin.d.ts +6 -0
- package/dist/plugin.d.ts.map +1 -1
- package/dist/reasons.d.ts +15 -0
- package/dist/reasons.d.ts.map +1 -0
- package/dist/reasons.js +29 -0
- package/dist/reasons.js.map +1 -0
- package/dist/render/explain.d.ts.map +1 -1
- package/dist/render/explain.js +36 -12
- package/dist/render/explain.js.map +1 -1
- package/dist/render/friendly.d.ts.map +1 -1
- package/dist/render/friendly.js +32 -9
- package/dist/render/friendly.js.map +1 -1
- package/dist/render/rules-json.d.ts.map +1 -1
- package/dist/render/rules-json.js +47 -27
- package/dist/render/rules-json.js.map +1 -1
- package/dist/render/summary.d.ts +3 -2
- package/dist/render/summary.d.ts.map +1 -1
- package/dist/render/summary.js +24 -9
- package/dist/render/summary.js.map +1 -1
- package/dist/render/suppressions.d.ts +2 -1
- package/dist/render/suppressions.d.ts.map +1 -1
- package/dist/render/suppressions.js +34 -10
- package/dist/render/suppressions.js.map +1 -1
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +18 -10
- package/dist/run.js.map +1 -1
- package/dist/structure/build.d.ts.map +1 -1
- package/dist/structure/build.js +8 -2
- package/dist/structure/build.js.map +1 -1
- package/dist/structure/cite.d.ts.map +1 -1
- package/dist/structure/cite.js +3 -1
- package/dist/structure/cite.js.map +1 -1
- package/dist/structure/issues.d.ts +5 -2
- package/dist/structure/issues.d.ts.map +1 -1
- package/dist/structure/issues.js +27 -9
- package/dist/structure/issues.js.map +1 -1
- package/dist/structure/numbering.d.ts.map +1 -1
- package/dist/structure/numbering.js +11 -6
- package/dist/structure/numbering.js.map +1 -1
- package/dist/ui.d.ts +14 -0
- package/dist/ui.d.ts.map +1 -0
- package/dist/ui.js +14 -0
- package/dist/ui.js.map +1 -0
- package/dist/watch.d.ts +1 -1
- package/dist/watch.d.ts.map +1 -1
- package/dist/watch.js +2 -2
- package/dist/watch.js.map +1 -1
- package/package.json +3 -2
- package/skills/chaff/SKILL.md +61 -0
- package/src/adapter-load.ts +41 -10
- package/src/cli-args.ts +9 -0
- package/src/cli-text.ts +182 -0
- package/src/cli.ts +91 -89
- package/src/commands/cite.ts +51 -18
- package/src/commands/skill.ts +74 -0
- package/src/commands/tree.ts +27 -7
- package/src/config/rule-problems.ts +24 -5
- package/src/config/write.ts +33 -9
- package/src/genre.ts +4 -4
- package/src/init.ts +74 -15
- package/src/plugin.ts +6 -0
- package/src/reasons.ts +44 -0
- package/src/render/explain.ts +46 -12
- package/src/render/friendly.ts +42 -10
- package/src/render/rules-json.ts +35 -9
- package/src/render/summary.ts +34 -9
- package/src/render/suppressions.ts +45 -10
- package/src/run.ts +20 -9
- package/src/structure/build.ts +10 -2
- package/src/structure/cite.ts +3 -1
- package/src/structure/issues.ts +33 -14
- package/src/structure/numbering.ts +12 -7
- package/src/ui.ts +23 -0
- package/src/watch.ts +2 -2
package/src/ui.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The language chaff speaks in. Japanese for Japanese, English for everything else: English is the language a
|
|
3
|
+
* reader of any other language is likeliest to read, and every message has an English text.
|
|
4
|
+
*/
|
|
5
|
+
export type UiLanguage = "ja" | "en";
|
|
6
|
+
|
|
7
|
+
export const uiLanguageOf = (language: string | undefined): UiLanguage => (language === "ja" ? "ja" : "en");
|
|
8
|
+
|
|
9
|
+
/** Locale variables in the order POSIX gives them precedence. */
|
|
10
|
+
const LOCALE_VARIABLES: readonly string[] = ["LC_ALL", "LC_MESSAGES", "LANG"];
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* The language for output that is not about one document (--help, genres, init, explain, relax, warnings):
|
|
14
|
+
* the language `chaff.yaml` sets, else the terminal's locale, else English. Pure: `env` is passed in.
|
|
15
|
+
*/
|
|
16
|
+
export const hostLanguage = (configLanguage: string | undefined, env: Readonly<Record<string, string | undefined>>): UiLanguage => {
|
|
17
|
+
if (configLanguage !== undefined) return uiLanguageOf(configLanguage);
|
|
18
|
+
const locale = LOCALE_VARIABLES.map((name) => env[name]).find((value) => value !== undefined && value !== "");
|
|
19
|
+
return locale !== undefined && locale.toLowerCase().startsWith("ja") ? "ja" : "en";
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
/** Text in both languages. Each module keeps its own, next to where it is used. */
|
|
23
|
+
export type Texts<T> = Readonly<Record<UiLanguage, T>>;
|
package/src/watch.ts
CHANGED
|
@@ -15,7 +15,7 @@ const total = (snapshot: Snapshot): number => Object.values(snapshot).reduce((su
|
|
|
15
15
|
* 差分だけを出す。書いている最中に全件を出し直されると、何が変わったのか分からない。
|
|
16
16
|
* workflow spec §11。
|
|
17
17
|
*/
|
|
18
|
-
export const describeChange = (before: Snapshot, after: Snapshot): string | undefined => {
|
|
18
|
+
export const describeChange = (before: Snapshot, after: Snapshot, unit = " 件"): string | undefined => {
|
|
19
19
|
const rules = [...new Set([...Object.keys(before), ...Object.keys(after)])];
|
|
20
20
|
const moved = rules
|
|
21
21
|
.map((rule) => ({ rule, delta: (after[rule] ?? 0) - (before[rule] ?? 0) }))
|
|
@@ -24,7 +24,7 @@ export const describeChange = (before: Snapshot, after: Snapshot): string | unde
|
|
|
24
24
|
if (moved.length === 0) return undefined;
|
|
25
25
|
const detail = moved.map((entry) => `${entry.delta > 0 ? "+" : ""}${entry.delta} ${entry.rule}`).join(", ");
|
|
26
26
|
const mark = total(after) < total(before) ? "✓" : "✗";
|
|
27
|
-
return `${mark} ${total(before)} → ${total(after)}
|
|
27
|
+
return `${mark} ${total(before)} → ${total(after)}${unit} (${detail})`;
|
|
28
28
|
};
|
|
29
29
|
|
|
30
30
|
export const clock = (): string => new Date().toTimeString().slice(0, 8);
|