276 lines
9.2 KiB
TypeScript
276 lines
9.2 KiB
TypeScript
/**
|
|
* Options for the writer.
|
|
*/
|
|
export interface Options {
|
|
/**
|
|
* Newline character.
|
|
* @remarks Defaults to \n.
|
|
*/
|
|
newLine: "\n" | "\r\n";
|
|
/**
|
|
* Number of spaces to indent when `useTabs` is false.
|
|
* @remarks Defaults to 4.
|
|
*/
|
|
indentNumberOfSpaces: number;
|
|
/**
|
|
* Whether to use tabs (true) or spaces (false).
|
|
* @remarks Defaults to false.
|
|
*/
|
|
useTabs: boolean;
|
|
/**
|
|
* Whether to use a single quote (true) or double quote (false).
|
|
* @remarks Defaults to false.
|
|
*/
|
|
useSingleQuote: boolean;
|
|
}
|
|
/**
|
|
* Code writer that assists with formatting and visualizing blocks of JavaScript or TypeScript code.
|
|
*/
|
|
export default class CodeBlockWriter {
|
|
/**
|
|
* Constructor.
|
|
* @param opts - Options for the writer.
|
|
*/
|
|
constructor(opts?: Partial<Options>);
|
|
/**
|
|
* Gets the options.
|
|
*/
|
|
getOptions(): Options;
|
|
/**
|
|
* Queues the indentation level for the next lines written.
|
|
* @param indentationLevel - Indentation level to queue.
|
|
*/
|
|
queueIndentationLevel(indentationLevel: number): this;
|
|
/**
|
|
* Queues the indentation level for the next lines written using the provided indentation text.
|
|
* @param whitespaceText - Gets the indentation level from the indentation text.
|
|
*/
|
|
queueIndentationLevel(whitespaceText: string): this;
|
|
/**
|
|
* Writes the text within the provided action with hanging indentation.
|
|
* @param action - Action to perform with hanging indentation.
|
|
*/
|
|
hangingIndent(action: () => void): this;
|
|
/**
|
|
* Writes the text within the provided action with hanging indentation unless writing a block.
|
|
* @param action - Action to perform with hanging indentation unless a block is written.
|
|
*/
|
|
hangingIndentUnlessBlock(action: () => void): this;
|
|
/**
|
|
* Sets the current indentation level.
|
|
* @param indentationLevel - Indentation level to be at.
|
|
*/
|
|
setIndentationLevel(indentationLevel: number): this;
|
|
/**
|
|
* Sets the current indentation using the provided indentation text.
|
|
* @param whitespaceText - Gets the indentation level from the indentation text.
|
|
*/
|
|
setIndentationLevel(whitespaceText: string): this;
|
|
/**
|
|
* Sets the indentation level within the provided action and restores the writer's indentation
|
|
* state afterwards.
|
|
* @remarks Restores the writer's state after the action.
|
|
* @param indentationLevel - Indentation level to set.
|
|
* @param action - Action to perform with the indentation.
|
|
*/
|
|
withIndentationLevel(indentationLevel: number, action: () => void): this;
|
|
/**
|
|
* Sets the indentation level with the provided indentation text within the provided action
|
|
* and restores the writer's indentation state afterwards.
|
|
* @param whitespaceText - Gets the indentation level from the indentation text.
|
|
* @param action - Action to perform with the indentation.
|
|
*/
|
|
withIndentationLevel(whitespaceText: string, action: () => void): this;
|
|
/**
|
|
* Gets the current indentation level.
|
|
*/
|
|
getIndentationLevel(): number;
|
|
/**
|
|
* Writes a block using braces.
|
|
* @param block - Write using the writer within this block.
|
|
*/
|
|
block(block?: () => void): this;
|
|
/**
|
|
* Writes an inline block with braces.
|
|
* @param block - Write using the writer within this block.
|
|
*/
|
|
inlineBlock(block?: () => void): this;
|
|
/**
|
|
* Indents the code one level for the current line.
|
|
*/
|
|
indent(times?: number): this;
|
|
/**
|
|
* Indents a block of code.
|
|
* @param block - Block to indent.
|
|
*/
|
|
indent(block: () => void): this;
|
|
/**
|
|
* Conditionally writes a line of text.
|
|
* @param condition - Condition to evaluate.
|
|
* @param textFunc - A function that returns a string to write if the condition is true.
|
|
*/
|
|
conditionalWriteLine(condition: boolean | undefined, textFunc: () => string): this;
|
|
/**
|
|
* Conditionally writes a line of text.
|
|
* @param condition - Condition to evaluate.
|
|
* @param text - Text to write if the condition is true.
|
|
*/
|
|
conditionalWriteLine(condition: boolean | undefined, text: string): this;
|
|
/**
|
|
* Writes a line of text.
|
|
* @param text - String to write.
|
|
*/
|
|
writeLine(text: string): this;
|
|
/**
|
|
* Writes a newline if the last line was not a newline.
|
|
*/
|
|
newLineIfLastNot(): this;
|
|
/**
|
|
* Writes a blank line if the last written text was not a blank line.
|
|
*/
|
|
blankLineIfLastNot(): this;
|
|
/**
|
|
* Writes a blank line if the condition is true.
|
|
* @param condition - Condition to evaluate.
|
|
*/
|
|
conditionalBlankLine(condition: boolean | undefined): this;
|
|
/**
|
|
* Writes a blank line.
|
|
*/
|
|
blankLine(): this;
|
|
/**
|
|
* Writes a newline if the condition is true.
|
|
* @param condition - Condition to evaluate.
|
|
*/
|
|
conditionalNewLine(condition: boolean | undefined): this;
|
|
/**
|
|
* Writes a newline.
|
|
*/
|
|
newLine(): this;
|
|
/**
|
|
* Writes a quote character.
|
|
*/
|
|
quote(): this;
|
|
/**
|
|
* Writes text surrounded in quotes.
|
|
* @param text - Text to write.
|
|
*/
|
|
quote(text: string): this;
|
|
/**
|
|
* Writes a space if the last character was not a space.
|
|
*/
|
|
spaceIfLastNot(): this;
|
|
/**
|
|
* Writes a space.
|
|
* @param times - Number of times to write a space.
|
|
*/
|
|
space(times?: number): this;
|
|
/**
|
|
* Writes a tab if the last character was not a tab.
|
|
*/
|
|
tabIfLastNot(): this;
|
|
/**
|
|
* Writes a tab.
|
|
* @param times - Number of times to write a tab.
|
|
*/
|
|
tab(times?: number): this;
|
|
/**
|
|
* Conditionally writes text.
|
|
* @param condition - Condition to evaluate.
|
|
* @param textFunc - A function that returns a string to write if the condition is true.
|
|
*/
|
|
conditionalWrite(condition: boolean | undefined, textFunc: () => string): this;
|
|
/**
|
|
* Conditionally writes text.
|
|
* @param condition - Condition to evaluate.
|
|
* @param text - Text to write if the condition is true.
|
|
*/
|
|
conditionalWrite(condition: boolean | undefined, text: string): this;
|
|
/**
|
|
* Writes the provided text.
|
|
* @param text - Text to write.
|
|
*/
|
|
write(text: string): this;
|
|
/**
|
|
* Writes text to exit a comment if in a comment.
|
|
*/
|
|
closeComment(): this;
|
|
/**
|
|
* Inserts text at the provided position.
|
|
*
|
|
* This method is "unsafe" because it won't update the state of the writer unless
|
|
* inserting at the end position. It is biased towards being fast at inserting closer
|
|
* to the start or end, but slower to insert in the middle. Only use this if
|
|
* absolutely necessary.
|
|
* @param pos - Position to insert at.
|
|
* @param text - Text to insert.
|
|
*/
|
|
unsafeInsert(pos: number, text: string): this;
|
|
/**
|
|
* Gets the length of the string in the writer.
|
|
*/
|
|
getLength(): number;
|
|
/**
|
|
* Gets if the writer is currently in a comment.
|
|
*/
|
|
isInComment(): boolean;
|
|
/**
|
|
* Gets if the writer is currently at the start of the first line of the text, block, or indentation block.
|
|
*/
|
|
isAtStartOfFirstLineOfBlock(): boolean;
|
|
/**
|
|
* Gets if the writer is currently on the first line of the text, block, or indentation block.
|
|
*/
|
|
isOnFirstLineOfBlock(): boolean;
|
|
/**
|
|
* Gets if the writer is currently in a string.
|
|
*/
|
|
isInString(): boolean;
|
|
/**
|
|
* Gets if the last chars written were for a newline.
|
|
*/
|
|
isLastNewLine(): boolean;
|
|
/**
|
|
* Gets if the last chars written were for a blank line.
|
|
*/
|
|
isLastBlankLine(): boolean;
|
|
/**
|
|
* Gets if the last char written was a space.
|
|
*/
|
|
isLastSpace(): boolean;
|
|
/**
|
|
* Gets if the last char written was a tab.
|
|
*/
|
|
isLastTab(): boolean;
|
|
/**
|
|
* Gets the last char written.
|
|
*/
|
|
getLastChar(): string | undefined;
|
|
/**
|
|
* Gets if the writer ends with the provided text.
|
|
* @param text - Text to check if the writer ends with the provided text.
|
|
*/
|
|
endsWith(text: string): boolean;
|
|
/**
|
|
* Iterates over the writer characters in reverse order. The iteration stops when a non-null or
|
|
* undefined value is returned from the action. The returned value is then returned by the method.
|
|
*
|
|
* @remarks It is much more efficient to use this method rather than `#toString()` since `#toString()`
|
|
* will combine the internal array into a string.
|
|
*/
|
|
iterateLastChars<T>(action: (char: string, index: number) => T | undefined): T | undefined;
|
|
/**
|
|
* Iterates over the writer character char codes in reverse order. The iteration stops when a non-null or
|
|
* undefined value is returned from the action. The returned value is then returned by the method.
|
|
*
|
|
* @remarks It is much more efficient to use this method rather than `#toString()` since `#toString()`
|
|
* will combine the internal array into a string. Additionally, this is slightly more efficient that
|
|
* `iterateLastChars` as this won't allocate a string per character.
|
|
*/
|
|
iterateLastCharCodes<T>(action: (charCode: number, index: number) => T | undefined): T | undefined;
|
|
/**
|
|
* Gets the writer's text.
|
|
*/
|
|
toString(): string;
|
|
}
|
|
//# sourceMappingURL=mod.d.ts.map
|