31 lines
1.3 KiB
TypeScript
31 lines
1.3 KiB
TypeScript
import type { NameToken, ValueToken, Repeater, AllTokens, BracketType, Bracket, Operator, OperatorType, Quote } from '../tokenizer/index.js';
|
|
import type { ParserOptions } from '../types.js';
|
|
export type TokenStatement = TokenElement | TokenGroup;
|
|
export interface TokenAttribute {
|
|
name?: ValueToken[];
|
|
value?: ValueToken[];
|
|
expression?: boolean;
|
|
/**
|
|
* Indicates that current attribute was repeated multiple times in a row.
|
|
* Used to alter output of multiple shorthand attributes like `..` (double class)
|
|
*/
|
|
multiple?: boolean;
|
|
}
|
|
export interface TokenElement {
|
|
type: 'TokenElement';
|
|
name?: NameToken[];
|
|
attributes?: TokenAttribute[];
|
|
value?: ValueToken[];
|
|
repeat?: Repeater;
|
|
selfClose: boolean;
|
|
elements: TokenStatement[];
|
|
}
|
|
export interface TokenGroup {
|
|
type: 'TokenGroup';
|
|
elements: TokenStatement[];
|
|
repeat?: Repeater;
|
|
}
|
|
export default function abbreviation(abbr: AllTokens[], options?: ParserOptions): TokenGroup;
|
|
export declare function isBracket(token: AllTokens | undefined, context?: BracketType, isOpen?: boolean): token is Bracket;
|
|
export declare function isOperator(token: AllTokens | undefined, type?: OperatorType): token is Operator;
|
|
export declare function isQuote(token: AllTokens | undefined, isSingle?: boolean): token is Quote;
|