Skip to main content

Home > @rushstack/terminal > TextRewriter

TextRewriter class

The abstract base class for operations that can be applied by TextRewriterTransform.


export declare abstract class TextRewriter 


The TextRewriterTransform applies one or more character rewriting operations to its chunk stream. Since these operations are applied separately to stderr and stdout, the state is stored in an opaque TextRewriterState object.

Conceptually, a TextRewriter subclass is very similar to a regular expression, with the difference that RegExp operates on a text string, whereas TextRewriter operates on a stream of characters.

The two most common subclasses are NormalizeNewlinesTextRewriter and RemoveColorsTextRewriter.

A rewriting operation starts with initialize(), followed by any number of process() calls, and then finishes with close(). For example:

const rewriter: NormalizeNewlinesTextRewriter = new NormalizeNewlinesTextRewriter(NewlineKind.Lf);
const state: TextRewriterState = rewriter.initialize();
let output: string = rewriter.process(state, 'line 1\r');
output += rewriter.process(state, '\nline 2\r\n');
output += rewriter.close(state);

// The final "output" value is: "line 1\nline 2\n"

After close() has been called, the TextRewriterState state should not be reused.


close(state)abstractClose the TextRewriterState object and return any buffered output.
initialize()abstractCreate a new TextRewriterState object that can be used to process a stream of characters.
process(state, input)abstractRewrite the next sequence of characters from the input stream, returning the modified output.