Skip to content

Commit 84d5b45

Browse files
authored
Merge pull request #1 from basic-examples/codex/add-tsdoc-comments-and-readme.md-for-subpackages
Improve docs
2 parents 672c839 + 9a361eb commit 84d5b45

6 files changed

Lines changed: 69 additions & 0 deletions

File tree

packages/parser/README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# `@ansi-escape-code/parser`
2+
3+
Utilities for parsing strings that contain ANSI escape sequences.

packages/parser/src/index.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
import { AnsiColor, AnsiString } from "@ansi-escape-code/type";
22

3+
/** Options controlling how ANSI strings are parsed. */
34
export interface ParseAnsiStringOptions {
45
flags?: number;
56
underlineColor?: AnsiColor;
67
foregroundColor?: AnsiColor;
78
backgroundColor?: AnsiColor;
89
}
910

11+
/** Successful result returned from {@link parseAnsiString}. */
1012
export interface ParseAnsiStringResultOk {
1113
success: true;
1214
ansiString: AnsiString[];
@@ -16,6 +18,7 @@ export interface ParseAnsiStringResultOk {
1618
remainBackgroundColor: AnsiColor;
1719
}
1820

21+
/** Error result returned from {@link parseAnsiString}. */
1922
export interface ParseAnsiStringResultError {
2023
success: false;
2124
error: "unclosed-escape-sequence" | ParseAnsiStringFlagsResultError["error"];
@@ -25,6 +28,9 @@ export type ParseAnsiStringResult =
2528
| ParseAnsiStringResultOk
2629
| ParseAnsiStringResultError;
2730

31+
/**
32+
* Parses a string containing ANSI escape sequences.
33+
*/
2834
export function parseAnsiString(
2935
input: string,
3036
{
@@ -100,6 +106,7 @@ export function parseAnsiString(
100106
};
101107
}
102108

109+
/** Successful result returned from {@link parseAnsiStringFlags}. */
103110
export interface ParseAnsiStringFlagsResultOk {
104111
success: true;
105112
flags: number;
@@ -108,6 +115,7 @@ export interface ParseAnsiStringFlagsResultOk {
108115
backgroundColor: AnsiColor;
109116
}
110117

118+
/** Error result returned from {@link parseAnsiStringFlags}. */
111119
export interface ParseAnsiStringFlagsResultError {
112120
success: false;
113121
error: "invalid-flags";
@@ -117,6 +125,9 @@ export type ParseAnsiStringFlagsResult =
117125
| ParseAnsiStringFlagsResultOk
118126
| ParseAnsiStringFlagsResultError;
119127

128+
/**
129+
* Parses an array of numeric SGR codes.
130+
*/
120131
export function parseAnsiStringFlags(
121132
input: number[],
122133
{

packages/type/README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# `@ansi-escape-code/type`
2+
3+
Type definitions used across the ansi-escape-code packages.

packages/type/src/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ export class AnsiString {
4343

4444
static readonly UNKNOWN_BIT = 16384; // 1 << 14
4545

46+
/**
47+
* Creates a new {@link AnsiString} instance.
48+
*/
4649
constructor(
4750
public readonly content: string,
4851
public readonly attributeFlags: number,

src/NoopAnsi.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,20 @@
11
import { AnsiOptions, AnsiPart, Ansi as DefaultAnsi } from ".";
2+
/**
3+
* Variant of {@link DefaultAnsi} that ignores all styling and simply
4+
* concatenates the contained parts.
5+
*/
26

37
export class NoopAnsi extends DefaultAnsi {
8+
/**
9+
* @param _unusedOptions - Ignored styling options.
10+
* @param parts - Content parts to combine.
11+
*/
412
constructor(_unusedOptions: Partial<AnsiOptions>, ...parts: AnsiPart[]) {
513
super({}, ...parts);
614
}
15+
/**
16+
* Renders contained parts without escape sequences.
17+
*/
718

819
public toString(_unusedResolvedOuterOptions?: AnsiOptions): string {
920
return NoopAnsi.toStringInternal(this.parts);

src/index.ts

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
import type { AnsiColor } from "@ansi-escape-code/type";
22

3+
/**
4+
* Union of parts that can make up an ANSI string. A part can be another
5+
* {@link Ansi} instance or any object with a `toString()` method.
6+
*/
37
export type AnsiPart = Ansi | { toString(): string };
48

9+
/** Options describing how text should be styled. */
510
export interface AnsiOptions {
611
weight: "normal" | "bold" | "dim";
712
italic: boolean;
@@ -15,11 +20,20 @@ export interface AnsiOptions {
1520
backgroundColor: AnsiColor;
1621
}
1722

23+
/**
24+
* Template tag used to produce nested {@link Ansi} instances.
25+
*
26+
* @param strings - Raw template string segments.
27+
* @param values - Interpolated values to embed.
28+
*/
1829
export type AnsiTemplateTag = (
1930
strings: TemplateStringsArray,
2031
...values: readonly AnsiPart[]
2132
) => Ansi;
2233

34+
/**
35+
* Represents a styled string that can contain nested {@link Ansi} parts.
36+
*/
2337
export class Ansi {
2438
public static readonly defaultOptions: AnsiOptions = {
2539
weight: "normal",
@@ -36,13 +50,24 @@ export class Ansi {
3650

3751
public readonly parts: AnsiPart[];
3852

53+
/**
54+
* Creates a new instance.
55+
*
56+
* @param options - Styling options to apply to the contents.
57+
* @param parts - Parts that make up the styled output.
58+
*/
3959
constructor(
4060
public readonly options: Partial<AnsiOptions>,
4161
...parts: AnsiPart[]
4262
) {
4363
this.parts = parts;
4464
}
4565

66+
/**
67+
* Renders this instance and all nested parts to a string.
68+
*
69+
* @param resolvedOuterOptions - Active options of the parent context.
70+
*/
4671
public toString(
4772
resolvedOuterOptions: AnsiOptions = Ansi.defaultOptions
4873
): string {
@@ -236,10 +261,20 @@ export class Ansi {
236261
return [5, 16 + r * 36 + g * 6 + b];
237262
}
238263

264+
/**
265+
* Creates a 24 bit true color value.
266+
*
267+
* @param r - Red component (0-255)
268+
* @param g - Green component (0-255)
269+
* @param b - Blue component (0-255)
270+
*/
239271
public static TRUE_COLOR(r: number, g: number, b: number): AnsiColor {
240272
return [2, r, g, b];
241273
}
242274

275+
/**
276+
* Returns a template tag preconfigured with the provided options.
277+
*/
243278
public static tt(oprions: Partial<AnsiOptions>): AnsiTemplateTag {
244279
const options = (oprions ?? {}) as Partial<AnsiOptions>;
245280
return (strings: TemplateStringsArray, ...values: AnsiPart[]) => {
@@ -249,6 +284,9 @@ export class Ansi {
249284
}
250285
}
251286

287+
/**
288+
* Interleaves template string segments with their interpolated values.
289+
*/
252290
function interleave(
253291
strings: TemplateStringsArray,
254292
values: readonly AnsiPart[]

0 commit comments

Comments
 (0)