@optique/man 1.4.0-dev.2681 → 1.4.0-dev.2708

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
- const require_man = require('./man-BmoPyf06.cjs');
2
+ const require_man = require('./man-CbkazOBJ.cjs');
3
3
  require('./roff-C8MvQ2tL.cjs');
4
- const require_generator = require('./generator-BOnOtkJo.cjs');
4
+ const require_generator = require('./generator-oBpyBLKQ.cjs');
5
5
  const __optique_core_constructs = require_man.__toESM(require("@optique/core/constructs"));
6
6
  const __optique_core_primitives = require_man.__toESM(require("@optique/core/primitives"));
7
7
  const __optique_core_valueparser = require_man.__toESM(require("@optique/core/valueparser"));
@@ -17,7 +17,7 @@ const node_url = require_man.__toESM(require("node:url"));
17
17
 
18
18
  //#region deno.json
19
19
  var name = "@optique/man";
20
- var version = "1.4.0-dev.2681+eaa9a981";
20
+ var version = "1.4.0-dev.2708+0119545d";
21
21
  var license = "MIT";
22
22
  var exports$1 = {
23
23
  ".": "./src/index.ts",
package/dist/cli.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import "./roff-Bh9bsH6u.js";
3
- import "./man-BS0Yx0Li.js";
4
- import { generateManPageAsync } from "./generator-DQzLiBjq.js";
3
+ import "./man-CQXpql4K.js";
4
+ import { generateManPageAsync } from "./generator-B5yyN1Vt.js";
5
5
  import { object } from "@optique/core/constructs";
6
6
  import { argument, option } from "@optique/core/primitives";
7
7
  import { choice, string } from "@optique/core/valueparser";
@@ -17,7 +17,7 @@ import { fileURLToPath, pathToFileURL } from "node:url";
17
17
 
18
18
  //#region deno.json
19
19
  var name = "@optique/man";
20
- var version = "1.4.0-dev.2681+eaa9a981";
20
+ var version = "1.4.0-dev.2708+0119545d";
21
21
  var license = "MIT";
22
22
  var exports = {
23
23
  ".": "./src/index.ts",
@@ -1,4 +1,4 @@
1
- import { ManPageOptions } from "./man-CwjJZCko.js";
1
+ import { ManPageOptions } from "./man-WqxcdyoU.js";
2
2
  import { Program } from "@optique/core/program";
3
3
  import { Mode, ModeValue, Parser } from "@optique/core/parser";
4
4
 
@@ -1,4 +1,4 @@
1
- import { formatDocPageAsMan } from "./man-BS0Yx0Li.js";
1
+ import { formatDocPageAsMan } from "./man-CQXpql4K.js";
2
2
  import { getDocPageAsync, getDocPageSync } from "@optique/core/parser";
3
3
 
4
4
  //#region src/generator.ts
@@ -1,4 +1,4 @@
1
- const require_man = require('./man-BmoPyf06.cjs');
1
+ const require_man = require('./man-CbkazOBJ.cjs');
2
2
  const __optique_core_parser = require_man.__toESM(require("@optique/core/parser"));
3
3
 
4
4
  //#region src/generator.ts
@@ -1,4 +1,4 @@
1
- import { ManPageOptions } from "./man-BON751gT.cjs";
1
+ import { ManPageOptions } from "./man-BB48LlND.cjs";
2
2
  import { Mode, ModeValue, Parser } from "@optique/core/parser";
3
3
  import { Program } from "@optique/core/program";
4
4
 
@@ -1,6 +1,6 @@
1
- require('./man-BmoPyf06.cjs');
1
+ require('./man-CbkazOBJ.cjs');
2
2
  require('./roff-C8MvQ2tL.cjs');
3
- const require_generator = require('./generator-BOnOtkJo.cjs');
3
+ const require_generator = require('./generator-oBpyBLKQ.cjs');
4
4
 
5
5
  exports.generateManPage = require_generator.generateManPage;
6
6
  exports.generateManPageAsync = require_generator.generateManPageAsync;
@@ -1,3 +1,3 @@
1
- import "./man-BON751gT.cjs";
2
- import { GenerateManPageOptions, GenerateManPageProgramOptions, generateManPage, generateManPageAsync, generateManPageSync } from "./generator-DpK0Sjwb.cjs";
1
+ import "./man-BB48LlND.cjs";
2
+ import { GenerateManPageOptions, GenerateManPageProgramOptions, generateManPage, generateManPageAsync, generateManPageSync } from "./generator-pUbUcxVA.cjs";
3
3
  export { GenerateManPageOptions, GenerateManPageProgramOptions, generateManPage, generateManPageAsync, generateManPageSync };
@@ -1,3 +1,3 @@
1
- import "./man-CwjJZCko.js";
2
- import { GenerateManPageOptions, GenerateManPageProgramOptions, generateManPage, generateManPageAsync, generateManPageSync } from "./generator-l5JcmLW0.js";
1
+ import "./man-WqxcdyoU.js";
2
+ import { GenerateManPageOptions, GenerateManPageProgramOptions, generateManPage, generateManPageAsync, generateManPageSync } from "./generator-1fDy_sht.js";
3
3
  export { GenerateManPageOptions, GenerateManPageProgramOptions, generateManPage, generateManPageAsync, generateManPageSync };
package/dist/generator.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import "./roff-Bh9bsH6u.js";
2
- import "./man-BS0Yx0Li.js";
3
- import { generateManPage, generateManPageAsync, generateManPageSync } from "./generator-DQzLiBjq.js";
2
+ import "./man-CQXpql4K.js";
3
+ import { generateManPage, generateManPageAsync, generateManPageSync } from "./generator-B5yyN1Vt.js";
4
4
 
5
5
  export { generateManPage, generateManPageAsync, generateManPageSync };
package/dist/index.cjs CHANGED
@@ -1,6 +1,6 @@
1
- const require_man = require('./man-BmoPyf06.cjs');
1
+ const require_man = require('./man-CbkazOBJ.cjs');
2
2
  const require_roff = require('./roff-C8MvQ2tL.cjs');
3
- const require_generator = require('./generator-BOnOtkJo.cjs');
3
+ const require_generator = require('./generator-oBpyBLKQ.cjs');
4
4
 
5
5
  exports.escapeHyphens = require_roff.escapeHyphens;
6
6
  exports.escapeQuotedValue = require_roff.escapeQuotedValue;
package/dist/index.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- import { ManPageOptions, formatDateForMan, formatDocPageAsMan, formatUsageTermAsRoff } from "./man-BON751gT.cjs";
2
- import { GenerateManPageOptions, GenerateManPageProgramOptions, generateManPage, generateManPageAsync, generateManPageSync } from "./generator-DpK0Sjwb.cjs";
1
+ import { ManPageOptions, formatDateForMan, formatDocPageAsMan, formatUsageTermAsRoff } from "./man-BB48LlND.cjs";
2
+ import { GenerateManPageOptions, GenerateManPageProgramOptions, generateManPage, generateManPageAsync, generateManPageSync } from "./generator-pUbUcxVA.cjs";
3
3
  import { RoffFormatOptions, escapeHyphens, escapeQuotedValue, escapeRequestArg, escapeRoff, formatMessageAsRoff } from "./roff-Cpm_FJok.cjs";
4
4
  export { type GenerateManPageOptions, type GenerateManPageProgramOptions, type ManPageOptions, type RoffFormatOptions, escapeHyphens, escapeQuotedValue, escapeRequestArg, escapeRoff, formatDateForMan, formatDocPageAsMan, formatMessageAsRoff, formatUsageTermAsRoff, generateManPage, generateManPageAsync, generateManPageSync };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { ManPageOptions, formatDateForMan, formatDocPageAsMan, formatUsageTermAsRoff } from "./man-CwjJZCko.js";
2
- import { GenerateManPageOptions, GenerateManPageProgramOptions, generateManPage, generateManPageAsync, generateManPageSync } from "./generator-l5JcmLW0.js";
1
+ import { ManPageOptions, formatDateForMan, formatDocPageAsMan, formatUsageTermAsRoff } from "./man-WqxcdyoU.js";
2
+ import { GenerateManPageOptions, GenerateManPageProgramOptions, generateManPage, generateManPageAsync, generateManPageSync } from "./generator-1fDy_sht.js";
3
3
  import { RoffFormatOptions, escapeHyphens, escapeQuotedValue, escapeRequestArg, escapeRoff, formatMessageAsRoff } from "./roff-DkJvVQ1o.js";
4
4
  export { type GenerateManPageOptions, type GenerateManPageProgramOptions, type ManPageOptions, type RoffFormatOptions, escapeHyphens, escapeQuotedValue, escapeRequestArg, escapeRoff, formatDateForMan, formatDocPageAsMan, formatMessageAsRoff, formatUsageTermAsRoff, generateManPage, generateManPageAsync, generateManPageSync };
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { escapeHyphens, escapeQuotedValue, escapeRequestArg, escapeRoff, formatMessageAsRoff } from "./roff-Bh9bsH6u.js";
2
- import { formatDateForMan, formatDocPageAsMan, formatUsageTermAsRoff } from "./man-BS0Yx0Li.js";
3
- import { generateManPage, generateManPageAsync, generateManPageSync } from "./generator-DQzLiBjq.js";
2
+ import { formatDateForMan, formatDocPageAsMan, formatUsageTermAsRoff } from "./man-CQXpql4K.js";
3
+ import { generateManPage, generateManPageAsync, generateManPageSync } from "./generator-B5yyN1Vt.js";
4
4
 
5
5
  export { escapeHyphens, escapeQuotedValue, escapeRequestArg, escapeRoff, formatDateForMan, formatDocPageAsMan, formatMessageAsRoff, formatUsageTermAsRoff, generateManPage, generateManPageAsync, generateManPageSync };
@@ -132,6 +132,8 @@ interface ManPageOptions {
132
132
  declare function formatDateForMan(date: string | Date | undefined): string | undefined;
133
133
  /**
134
134
  * Formats a single {@link UsageTerm} as roff markup for the SYNOPSIS section.
135
+ * Optionality follows the supplied usage wrappers. Usage describes display
136
+ * structure; empty-input acceptance depends on the parser's runtime behavior.
135
137
  *
136
138
  * @param term The usage term to format.
137
139
  * @returns The roff-formatted string.
@@ -42,6 +42,8 @@ function formatCommandNameAsRoff(name) {
42
42
  }
43
43
  /**
44
44
  * Formats a single {@link UsageTerm} as roff markup for the SYNOPSIS section.
45
+ * Optionality follows the supplied usage wrappers. Usage describes display
46
+ * structure; empty-input acceptance depends on the parser's runtime behavior.
45
47
  *
46
48
  * @param term The usage term to format.
47
49
  * @returns The roff-formatted string.
@@ -52,12 +54,12 @@ function formatUsageTermAsRoff(term) {
52
54
  return formatUsageTermAsRoffInternal(term, false);
53
55
  }
54
56
  /**
55
- * Returns whether a usage list contains exactly one visible term that
56
- * produces its own brackets. When true, a parent wrapper can safely elide
57
- * its own brackets to avoid redundant nesting. Multiple bracket-producing
58
- * siblings must keep their individual brackets for disambiguation.
57
+ * Returns whether a usage list contains exactly one visible term that can
58
+ * share enclosing brackets. Options need no brackets of their own, while
59
+ * optional and repeated terms can elide redundant brackets. Multiple
60
+ * visible siblings must retain their individual grouping boundaries.
59
61
  */
60
- function hasSingleBracketedTerm(terms) {
62
+ function hasSingleElidableTerm(terms) {
61
63
  const visible = terms.filter((t$1) => !("hidden" in t$1 && isUsageHidden(t$1.hidden)));
62
64
  if (visible.length !== 1) return false;
63
65
  const t = visible[0];
@@ -77,23 +79,23 @@ function formatUsageTermAsRoffInternal(term, insideBrackets) {
77
79
  case "option": {
78
80
  const names = term.names.map((name) => `\\fB${escapeHyphens(name)}\\fR`).join(" | ");
79
81
  const metavarPart = term.metavar ? ` \\fI${escapeRoff(term.metavar)}\\fR` : "";
80
- if (insideBrackets) return `${names}${metavarPart}`;
81
- return `[${names}${metavarPart}]`;
82
+ if (insideBrackets || term.names.length < 2) return `${names}${metavarPart}`;
83
+ return `(${names})${metavarPart}`;
82
84
  }
83
85
  case "command": return formatCommandNameAsRoff(term.name);
84
86
  case "optional": {
85
- const childrenBracketed = hasSingleBracketedTerm(term.terms);
86
- const childIsMultiple = childrenBracketed && hasSingleVisibleTermOfType(term.terms, "multiple");
87
- const inner = formatUsageAsRoffInternal(term.terms, childrenBracketed);
87
+ const childrenElidable = hasSingleElidableTerm(term.terms);
88
+ const childIsMultiple = childrenElidable && hasSingleVisibleTermOfType(term.terms, "multiple");
89
+ const inner = formatUsageAsRoffInternal(term.terms, childrenElidable);
88
90
  if (inner === "") return "";
89
- if (insideBrackets && childrenBracketed && !childIsMultiple) return inner;
91
+ if (insideBrackets && childrenElidable && !childIsMultiple) return inner;
90
92
  return `[${inner}]`;
91
93
  }
92
94
  case "multiple": {
93
95
  const wrapInBrackets = term.min < 1;
94
- const childrenBracketed = hasSingleBracketedTerm(term.terms);
95
- const childIsMultiple = childrenBracketed && hasSingleVisibleTermOfType(term.terms, "multiple");
96
- const passInsideBrackets = wrapInBrackets && childrenBracketed && !childIsMultiple;
96
+ const childrenElidable = hasSingleElidableTerm(term.terms);
97
+ const childIsMultiple = childrenElidable && hasSingleVisibleTermOfType(term.terms, "multiple");
98
+ const passInsideBrackets = wrapInBrackets && childrenElidable && !childIsMultiple;
97
99
  const inner = formatUsageAsRoffInternal(term.terms, passInsideBrackets);
98
100
  if (inner === "") return "";
99
101
  if (wrapInBrackets) {
@@ -65,6 +65,8 @@ function formatCommandNameAsRoff(name) {
65
65
  }
66
66
  /**
67
67
  * Formats a single {@link UsageTerm} as roff markup for the SYNOPSIS section.
68
+ * Optionality follows the supplied usage wrappers. Usage describes display
69
+ * structure; empty-input acceptance depends on the parser's runtime behavior.
68
70
  *
69
71
  * @param term The usage term to format.
70
72
  * @returns The roff-formatted string.
@@ -75,12 +77,12 @@ function formatUsageTermAsRoff(term) {
75
77
  return formatUsageTermAsRoffInternal(term, false);
76
78
  }
77
79
  /**
78
- * Returns whether a usage list contains exactly one visible term that
79
- * produces its own brackets. When true, a parent wrapper can safely elide
80
- * its own brackets to avoid redundant nesting. Multiple bracket-producing
81
- * siblings must keep their individual brackets for disambiguation.
80
+ * Returns whether a usage list contains exactly one visible term that can
81
+ * share enclosing brackets. Options need no brackets of their own, while
82
+ * optional and repeated terms can elide redundant brackets. Multiple
83
+ * visible siblings must retain their individual grouping boundaries.
82
84
  */
83
- function hasSingleBracketedTerm(terms) {
85
+ function hasSingleElidableTerm(terms) {
84
86
  const visible = terms.filter((t$1) => !("hidden" in t$1 && (0, __optique_core_usage.isUsageHidden)(t$1.hidden)));
85
87
  if (visible.length !== 1) return false;
86
88
  const t = visible[0];
@@ -100,23 +102,23 @@ function formatUsageTermAsRoffInternal(term, insideBrackets) {
100
102
  case "option": {
101
103
  const names = term.names.map((name) => `\\fB${require_roff.escapeHyphens(name)}\\fR`).join(" | ");
102
104
  const metavarPart = term.metavar ? ` \\fI${require_roff.escapeRoff(term.metavar)}\\fR` : "";
103
- if (insideBrackets) return `${names}${metavarPart}`;
104
- return `[${names}${metavarPart}]`;
105
+ if (insideBrackets || term.names.length < 2) return `${names}${metavarPart}`;
106
+ return `(${names})${metavarPart}`;
105
107
  }
106
108
  case "command": return formatCommandNameAsRoff(term.name);
107
109
  case "optional": {
108
- const childrenBracketed = hasSingleBracketedTerm(term.terms);
109
- const childIsMultiple = childrenBracketed && hasSingleVisibleTermOfType(term.terms, "multiple");
110
- const inner = formatUsageAsRoffInternal(term.terms, childrenBracketed);
110
+ const childrenElidable = hasSingleElidableTerm(term.terms);
111
+ const childIsMultiple = childrenElidable && hasSingleVisibleTermOfType(term.terms, "multiple");
112
+ const inner = formatUsageAsRoffInternal(term.terms, childrenElidable);
111
113
  if (inner === "") return "";
112
- if (insideBrackets && childrenBracketed && !childIsMultiple) return inner;
114
+ if (insideBrackets && childrenElidable && !childIsMultiple) return inner;
113
115
  return `[${inner}]`;
114
116
  }
115
117
  case "multiple": {
116
118
  const wrapInBrackets = term.min < 1;
117
- const childrenBracketed = hasSingleBracketedTerm(term.terms);
118
- const childIsMultiple = childrenBracketed && hasSingleVisibleTermOfType(term.terms, "multiple");
119
- const passInsideBrackets = wrapInBrackets && childrenBracketed && !childIsMultiple;
119
+ const childrenElidable = hasSingleElidableTerm(term.terms);
120
+ const childIsMultiple = childrenElidable && hasSingleVisibleTermOfType(term.terms, "multiple");
121
+ const passInsideBrackets = wrapInBrackets && childrenElidable && !childIsMultiple;
120
122
  const inner = formatUsageAsRoffInternal(term.terms, passInsideBrackets);
121
123
  if (inner === "") return "";
122
124
  if (wrapInBrackets) {
@@ -132,6 +132,8 @@ interface ManPageOptions {
132
132
  declare function formatDateForMan(date: string | Date | undefined): string | undefined;
133
133
  /**
134
134
  * Formats a single {@link UsageTerm} as roff markup for the SYNOPSIS section.
135
+ * Optionality follows the supplied usage wrappers. Usage describes display
136
+ * structure; empty-input acceptance depends on the parser's runtime behavior.
135
137
  *
136
138
  * @param term The usage term to format.
137
139
  * @returns The roff-formatted string.
package/dist/man.cjs CHANGED
@@ -1,4 +1,4 @@
1
- const require_man = require('./man-BmoPyf06.cjs');
1
+ const require_man = require('./man-CbkazOBJ.cjs');
2
2
  require('./roff-C8MvQ2tL.cjs');
3
3
 
4
4
  exports.formatDateForMan = require_man.formatDateForMan;
package/dist/man.d.cts CHANGED
@@ -1,2 +1,2 @@
1
- import { ManPageOptions, ManPageSection, formatDateForMan, formatDocPageAsMan, formatUsageTermAsRoff } from "./man-BON751gT.cjs";
1
+ import { ManPageOptions, ManPageSection, formatDateForMan, formatDocPageAsMan, formatUsageTermAsRoff } from "./man-BB48LlND.cjs";
2
2
  export { ManPageOptions, ManPageSection, formatDateForMan, formatDocPageAsMan, formatUsageTermAsRoff };
package/dist/man.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { ManPageOptions, ManPageSection, formatDateForMan, formatDocPageAsMan, formatUsageTermAsRoff } from "./man-CwjJZCko.js";
1
+ import { ManPageOptions, ManPageSection, formatDateForMan, formatDocPageAsMan, formatUsageTermAsRoff } from "./man-WqxcdyoU.js";
2
2
  export { ManPageOptions, ManPageSection, formatDateForMan, formatDocPageAsMan, formatUsageTermAsRoff };
package/dist/man.js CHANGED
@@ -1,4 +1,4 @@
1
1
  import "./roff-Bh9bsH6u.js";
2
- import { formatDateForMan, formatDocPageAsMan, formatUsageTermAsRoff } from "./man-BS0Yx0Li.js";
2
+ import { formatDateForMan, formatDocPageAsMan, formatUsageTermAsRoff } from "./man-CQXpql4K.js";
3
3
 
4
4
  export { formatDateForMan, formatDocPageAsMan, formatUsageTermAsRoff };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@optique/man",
3
- "version": "1.4.0-dev.2681",
3
+ "version": "1.4.0-dev.2708",
4
4
  "description": "Man page generator for Optique CLI parsers",
5
5
  "keywords": [
6
6
  "CLI",
@@ -90,11 +90,11 @@
90
90
  "optique-man": "./dist/cli.js"
91
91
  },
92
92
  "dependencies": {
93
- "@optique/core": "1.4.0-dev.2681+eaa9a981",
94
- "@optique/run": "1.4.0-dev.2681+eaa9a981"
93
+ "@optique/core": "1.4.0-dev.2708+0119545d",
94
+ "@optique/run": "1.4.0-dev.2708+0119545d"
95
95
  },
96
96
  "devDependencies": {
97
- "@optique/testing": "1.4.0-dev.2681+eaa9a981",
97
+ "@optique/testing": "1.4.0-dev.2708+0119545d",
98
98
  "@types/node": "^24.0.0",
99
99
  "tsdown": "^0.13.0",
100
100
  "tsx": "^4.21.0",