Home > @rushstack/terminal > TextRewriter
TextRewriter class
The abstract base class for operations that can be applied by TextRewriterTransform.
Signature:
export declare abstract class TextRewriter
Remarks
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.
Methods
Method | Modifiers | Description |
---|---|---|
close(state) | abstract | Close the TextRewriterState object and return any buffered output. |
initialize() | abstract | Create a new TextRewriterState object that can be used to process a stream of characters. |
process(state, input) | abstract | Rewrite the next sequence of characters from the input stream, returning the modified output. |