Source
Source interface.
HTML source with file, line and column context.
Optional hooks can be attached. This is usually added by transformers to postprocess.
export interface Source {
data: string;
filename: string;
/**
* Line in the original data.
*
* Starts at 1 (first line).
*/
line: number;
/**
* Column in the original data.
*
* Starts at 1 (first column).
*/
column: number;
/**
* Offset in the original data.
*
* Starts at 0 (first character).
*/
offset: number;
/**
* Original data. When a transformer extracts a portion of the original source
* this must be set to the full original source.
*
* Since the transformer might be chained always test if the input source
* itself has `originalData` set, e.g.:
*
* `originalData = input.originalData || input.data`.
*/
originalData?: string;
/**
* Hooks for processing the source as it is being parsed.
*/
hooks?: SourceHooks;
/**
* Internal property to keep track of what transformers has run on this
* source. Entries are in reverse-order, e.g. the last applied transform is
* first.
*/
transformedBy?: string[];
}
SourceHooks
export interface SourceHooks {
/**
* Called for every attribute.
*
* The original attribute must be yielded as well or no attribute will be
* added.
*
* @returns Attribute data for an attribute to be added to the element.
*/
processAttribute?: ProcessAttributeCallback | null;
/**
* Called for every element after element is created but before any children.
*
* May modify the element.
*/
processElement?: ProcessElementCallback | null;
}