@podlite/schema
Version:
AST tools for Podlite markup language
48 lines (46 loc) • 1.22 kB
TypeScript
import Writer from '../writer';
/**
sample | type | name
----------------------------------
'C<>',
'C:fcode' fcode C
'<>' fcode any name, or /.+/
'name' block 'name'
':blankline' blankline any name, or /.+/
'C:fcode' fcode C
'*:*', '*' any type any name
*/
export interface RuleHandler<T = any> {
(writer: Writer, processor: any): (node: T, ctx: any, interator: any) => void;
}
export declare type RuleObject = {
[name: string]: RuleHandler;
};
export declare type Filter = {
name: string;
type?: string;
} | {
name?: any;
type: 'block' | any;
} | {};
export interface GetQuery {
(k: string): Filter;
}
export declare const makePlug: (k: string) => {};
export declare function is(query: any, node: any): boolean;
export interface Rule {
(): {};
isFor(): void;
fn(): void;
}
export declare const makeRule: (query: any, fn: any) => {
(): void;
rule: any;
isFor: (node: any) => boolean;
fn: any;
};
interface MakeRulesArray {
(key: RuleObject | Array<RuleObject>, fn?: Function): Array<any>;
}
export declare const makeRulesArray: MakeRulesArray;
export {};