Skip to content

Commit dc16b1c

Browse files
committed
📝 Add documentation comments on argument
1 parent 5ecff18 commit dc16b1c

File tree

4 files changed

+198
-127
lines changed

4 files changed

+198
-127
lines changed

denops_std/argument/README.md

Lines changed: 0 additions & 127 deletions
This file was deleted.

denops_std/argument/flags.ts

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,31 @@ const shortPattern = /^-([a-zA-Z0-9])(.*)/;
77

88
/**
99
* Parse string array to extract flags (-f/--flag).
10+
*
11+
* ```typescript
12+
* import { Denops } from "../mod.ts";
13+
* import { parseFlags } from "./mod.ts";
14+
*
15+
* export async function main(denops: Denops): Promise<void> {
16+
* const args = [
17+
* "++enc=sjis",
18+
* "++ff=dos",
19+
* "-f",
20+
* "--foo=foo",
21+
* "--bar=bar",
22+
* "--bar=baz",
23+
* "hello",
24+
* "world",
25+
* ];
26+
* const [flags, residues] = parseFlags(args);
27+
*
28+
* console.log(flags);
29+
* // { "f": "", "foo": "foo", "bar": ["bar", "baz"] }
30+
*
31+
* console.log(residues);
32+
* // ["++enc=sjis", "++ff=dos", "hello", "world"]
33+
* }
34+
* ```
1035
*/
1136
export function parseFlags(args: string[]): [Flags, string[]] {
1237
const patterns = [longPattern, shortPattern];
@@ -39,6 +64,27 @@ export function parseFlags(args: string[]): [Flags, string[]] {
3964

4065
/**
4166
* Validate if `flags` has unknown attributes.
67+
*
68+
* ```typescript
69+
* import { Denops } from "../mod.ts";
70+
* import { parse, validateFlags } from "./mod.ts";
71+
*
72+
* export async function main(denops: Denops): Promise<void> {
73+
* const args = [
74+
* "++enc=sjis",
75+
* "++ff=dos",
76+
* "-f",
77+
* "--foo=foo",
78+
* "--bar=bar",
79+
* "--bar=baz",
80+
* "hello",
81+
* "world",
82+
* ];
83+
* const [_opts, flags, _residues] = parse(args);
84+
*
85+
* validateFlags(flags, ["f", "foo", "bar"]);
86+
* }
87+
* ```
4288
*/
4389
export function validateFlags(flags: Flags, knownAttributes: string[]): void {
4490
Object.keys(flags).forEach((v) => {
@@ -54,6 +100,19 @@ export function validateFlags(flags: Flags, knownAttributes: string[]): void {
54100

55101
/**
56102
* Format `key` and `value` to construct string array.
103+
*
104+
* ```typescript
105+
* import { Denops } from "../mod.ts";
106+
* import { formatFlag } from "./mod.ts";
107+
*
108+
* export async function main(denops: Denops): Promise<void> {
109+
* console.log(formatFlag("f", ""));
110+
* // "-f"
111+
*
112+
* console.log(formatFlag("foo", "value"));
113+
* // "--foo=value"
114+
* }
115+
* ```
57116
*/
58117
export function formatFlag(
59118
key: string,
@@ -72,6 +131,28 @@ export function formatFlag(
72131

73132
/**
74133
* Format `flags` to construct string array.
134+
*
135+
* ```typescript
136+
* import { Denops } from "../mod.ts";
137+
* import { formatFlags, parse } from "./mod.ts";
138+
*
139+
* export async function main(denops: Denops): Promise<void> {
140+
* const args = [
141+
* "++enc=sjis",
142+
* "++ff=dos",
143+
* "-f",
144+
* "--foo=foo",
145+
* "--bar=bar",
146+
* "--bar=baz",
147+
* "hello",
148+
* "world",
149+
* ];
150+
* const [_opts, flags, _residues] = parse(args);
151+
*
152+
* console.log(formatFlags(flags));
153+
* // "-f --foo=foo --bar=bar --bar=baz"
154+
* }
155+
* ```
75156
*/
76157
export function formatFlags(flags: Flags, includes?: string[]): string[] {
77158
let entries = Object.entries(flags);

denops_std/argument/mod.ts

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,42 @@
1+
/**
2+
* A module to handle Vim's command arguments.
3+
*
4+
* @module
5+
*/
16
import { Opts, parseOpts } from "./opts.ts";
27
import { Flags, parseFlags } from "./flags.ts";
38

9+
/**
10+
* Parse string array to extract opts, flags.
11+
*
12+
* ```typescript
13+
* import { Denops } from "../mod.ts";
14+
* import { parse } from "./mod.ts";
15+
*
16+
* export async function main(denops: Denops): Promise<void> {
17+
* const args = [
18+
* "++enc=sjis",
19+
* "++ff=dos",
20+
* "-f",
21+
* "--foo=foo",
22+
* "--bar=bar",
23+
* "--bar=baz",
24+
* "hello",
25+
* "world",
26+
* ];
27+
* const [opts, flags, residues] = parse(args);
28+
*
29+
* console.log(opts);
30+
* // { "enc": "sjis", "ff": "dos" }
31+
*
32+
* console.log(flags);
33+
* // { "f": "", "foo": "foo", "bar": ["bar", "baz"] }
34+
*
35+
* console.log(residues);
36+
* // ["hello", "world"]
37+
* }
38+
* ```
39+
*/
440
export function parse(args: string[]): [Opts, Flags, string[]] {
541
const [opts, intermediate] = parseOpts(args);
642
const [flags, residue] = parseFlags(intermediate);

denops_std/argument/opts.ts

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,31 @@ const optPattern = /^\+\+([a-zA-Z0-9-]+)(?:=(.*))?/;
2222

2323
/**
2424
* Parse string array to extract opts (++opt).
25+
*
26+
* ```typescript
27+
* import { Denops } from "../mod.ts";
28+
* import { parseOpts } from "./mod.ts";
29+
*
30+
* export async function main(denops: Denops): Promise<void> {
31+
* const args = [
32+
* "++enc=sjis",
33+
* "++ff=dos",
34+
* "-f",
35+
* "--foo=foo",
36+
* "--bar=bar",
37+
* "--bar=baz",
38+
* "hello",
39+
* "world",
40+
* ];
41+
* const [opts, residues] = parseOpts(args);
42+
*
43+
* console.log(opts);
44+
* // { "enc": "sjis", "ff": "dos" }
45+
*
46+
* console.log(residues);
47+
* // ["-f", "--foo=foo", "--bar=bar", "--bar=baz", "hello", "world"]
48+
* }
49+
* ```
2550
*/
2651
export function parseOpts(args: string[]): [Opts, string[]] {
2752
const opts: Opts = {};
@@ -50,6 +75,30 @@ export function parseOpts(args: string[]): [Opts, string[]] {
5075

5176
/**
5277
* Validate if `opts` has unknown attributes.
78+
*
79+
* ```typescript
80+
* import { Denops } from "../mod.ts";
81+
* import { builtinOpts, parse, validateOpts } from "./mod.ts";
82+
*
83+
* export async function main(denops: Denops): Promise<void> {
84+
* const args = [
85+
* "++enc=sjis",
86+
* "++ff=dos",
87+
* "-f",
88+
* "--foo=foo",
89+
* "--bar=bar",
90+
* "--bar=baz",
91+
* "hello",
92+
* "world",
93+
* ];
94+
* const [opts, _flags, residues] = parse(args);
95+
*
96+
* validateOpts(opts, ["enc", "ff"]);
97+
*
98+
* // Or use `builtinOpts` to validate Vim's builtin `++opts`
99+
* validateOpts(opts, builtinOpts);
100+
* }
101+
* ```
53102
*/
54103
export function validateOpts(opts: Opts, knownAttributes: string[]): void {
55104
Object.keys(opts).forEach((v) => {
@@ -61,6 +110,16 @@ export function validateOpts(opts: Opts, knownAttributes: string[]): void {
61110

62111
/**
63112
* Format `key` and `value` to construct string array.
113+
*
114+
* ```typescript
115+
* import { Denops } from "../mod.ts";
116+
* import { formatOpt } from "./mod.ts";
117+
*
118+
* export async function main(denops: Denops): Promise<void> {
119+
* console.log(formatOpt("enc", "sjis"));
120+
* // "++enc=sjis"
121+
* }
122+
* ```
64123
*/
65124
export function formatOpt(key: string, value: string | undefined): string[] {
66125
if (value == undefined) {
@@ -71,6 +130,28 @@ export function formatOpt(key: string, value: string | undefined): string[] {
71130

72131
/**
73132
* Format `opts` to construct string array.
133+
*
134+
* ```typescript
135+
* import { Denops } from "../mod.ts";
136+
* import { formatOpts, parse } from "../argument/mod.ts";
137+
*
138+
* export async function main(denops: Denops): Promise<void> {
139+
* const args = [
140+
* "++enc=sjis",
141+
* "++ff=dos",
142+
* "-f",
143+
* "--foo=foo",
144+
* "--bar=bar",
145+
* "--bar=baz",
146+
* "hello",
147+
* "world",
148+
* ];
149+
* const [opts, _flags, _residues] = parse(args);
150+
*
151+
* console.log(formatOpts(opts));
152+
* // "++enc=sjis ++ff=dos"
153+
* }
154+
* ```
74155
*/
75156
export function formatOpts(opts: Opts, includes?: string[]): string[] {
76157
let entries = Object.entries(opts);

0 commit comments

Comments
 (0)