alacritty-theme-switch
Version:
CLI utility for switching Alacritty color themes
93 lines • 3.85 kB
TypeScript
interface Success<T> {
ok: true;
body: T;
}
interface Failure {
ok: false;
}
type ParseResult<T> = Success<T> | Failure;
type ParserComponent<T = unknown> = (scanner: Scanner) => ParseResult<T>;
type Block = {
type: "Block";
value: Record<string, unknown>;
};
type Table = {
type: "Table";
keys: string[];
value: Record<string, unknown>;
};
type TableArray = {
type: "TableArray";
keys: string[];
value: Record<string, unknown>;
};
export declare class Scanner {
#private;
constructor(source: string);
get position(): number;
get source(): string;
/**
* Get current character
* @param index - relative index from current position
*/
char(index?: number): string;
/**
* Get sliced string
* @param start - start position relative from current position
* @param end - end position relative from current position
*/
slice(start: number, end: number): string;
/**
* Move position to next
*/
next(count?: number): void;
skipWhitespaces(): void;
nextUntilChar(options?: {
skipComments?: boolean;
}): void;
/**
* Position reached EOF or not
*/
eof(): boolean;
isCurrentCharEOL(): boolean;
startsWith(searchString: string): boolean;
match(regExp: RegExp): RegExpMatchArray | null;
}
/**
* Creates a nested object from the keys and values.
*
* e.g. `unflat(["a", "b", "c"], 1)` returns `{ a: { b: { c: 1 } } }`
*/
export declare function unflat(keys: string[], values?: unknown): Record<string, unknown>;
export declare function deepAssign(target: Record<string, unknown>, body: Block | Table | TableArray): Record<string, unknown>;
export declare function bareKey(scanner: Scanner): ParseResult<string>;
export declare function basicString(scanner: Scanner): ParseResult<string>;
export declare function literalString(scanner: Scanner): ParseResult<string>;
export declare function multilineBasicString(scanner: Scanner): ParseResult<string>;
export declare function multilineLiteralString(scanner: Scanner): ParseResult<string>;
export declare function boolean(scanner: Scanner): ParseResult<boolean>;
export declare function infinity(scanner: Scanner): ParseResult<number>;
export declare function nan(scanner: Scanner): ParseResult<number>;
export declare const dottedKey: ParserComponent<string[]>;
export declare function binary(scanner: Scanner): ParseResult<number | string>;
export declare function octal(scanner: Scanner): ParseResult<number | string>;
export declare function hex(scanner: Scanner): ParseResult<number | string>;
export declare function integer(scanner: Scanner): ParseResult<number | string>;
export declare function float(scanner: Scanner): ParseResult<number>;
export declare function dateTime(scanner: Scanner): ParseResult<Date>;
export declare function localTime(scanner: Scanner): ParseResult<string>;
export declare function arrayValue(scanner: Scanner): ParseResult<unknown[]>;
export declare function inlineTable(scanner: Scanner): ParseResult<Record<string, unknown>>;
export declare const value: ParserComponent<string | number | boolean | unknown[] | Record<string, unknown> | Date>;
export declare const pair: ParserComponent<{
[key: string]: unknown;
}>;
export declare function block(scanner: Scanner): ParseResult<Block>;
export declare const tableHeader: ParserComponent<string[]>;
export declare function table(scanner: Scanner): ParseResult<Table>;
export declare const tableArrayHeader: ParserComponent<string[]>;
export declare function tableArray(scanner: Scanner): ParseResult<TableArray>;
export declare function toml(scanner: Scanner): ParseResult<Record<string, unknown>>;
export declare function parserFactory<T>(parser: ParserComponent<T>): (tomlString: string) => T;
export {};
//# sourceMappingURL=_parser.d.ts.map