UNPKG

codsen-tokenizer

Version:

HTML and CSS lexer aimed at code with fatal errors, accepts mixed coding languages

187 lines (183 loc) 4.3 kB
interface Selector { value: string; selectorStarts: number; selectorEnds: number; } type TokenType = "text" | "tag" | "rule" | "at" | "comment" | "esp"; type TokenKind = "simplet" | "not" | "doctype" | "cdata" | "xml" | "inline"; type CommentKind = "simple" | "only" | "not" | "block" | "line" | "simplet"; interface TextToken { type: "text"; start: number; end: number; value: string; } interface CommentToken { type: "comment"; start: number; end: number; value: string; closing: null | boolean; kind: CommentKind; language: "html" | "css"; } interface EspToken { type: "esp"; start: number; end: number; value: string; head: null | string; headStartsAt: null | number; headEndsAt: null | number; tail: null | string; tailStartsAt: null | number; tailEndsAt: null | number; } type PropertyValueWithinArray = TextToken | EspToken; interface Property { property: null | string; propertyStarts: null | number; propertyEnds: null | number; colon: null | number; value: string | PropertyValueWithinArray[]; valueStarts: null | number; valueEnds: null | number; importantStarts: null | number; importantEnds: null | number; important: null | string; semi: null | number; start: number; end: number; } interface Attrib { attribName: string; attribNameRecognised: boolean; attribNameStartsAt: number; attribNameEndsAt: number; attribOpeningQuoteAt: null | number; attribClosingQuoteAt: null | number; attribValueRaw: string; attribValue: (TextToken | Property | CommentToken | EspToken)[]; attribValueStartsAt: null | number; attribValueEndsAt: null | number; attribStarts: number; attribEnds: number; attribLeft: number; } interface RuleToken { type: "rule"; start: number; end: number; value: string; left: null | number; nested: null | boolean; openingCurlyAt: null | number; closingCurlyAt: null | number; selectorsStart: null | number; selectorsEnd: null | number; selectors: Selector[]; properties: (Property | TextToken)[]; } interface TagToken { type: "tag"; start: number; end: number; value: string; tagNameStartsAt: number; tagNameEndsAt: number; tagName: string; recognised: null | boolean; closing: null | boolean; void: null | boolean; pureHTML: null | boolean; kind: null | TokenKind; attribs: Attrib[]; } interface AtToken { type: "at"; start: number; end: number; value: string; left: null | number; nested: null | false; identifier: null | string; identifierStartsAt: null | number; identifierEndsAt: null | number; query: string; queryStartsAt: number; queryEndsAt: number; openingCurlyAt: null | number; closingCurlyAt: null | number; rules: (RuleToken | TextToken)[]; } type Token = | TextToken | TagToken | RuleToken | AtToken | CommentToken | EspToken; interface LayerKindAt { type: "at"; token: AtToken; } interface LayerSimple { type: "simple" | "block"; value: string; position: number; } interface LayerEsp { type: "esp"; openingLump: string; guessedClosingLump: string; position: number; } type Layer = LayerKindAt | LayerSimple | LayerEsp; interface CharacterToken { chr: string; i: number; type: TokenType; } type TokenCb = (token: Token, next: Token[]) => void; type CharCb = (token: CharacterToken, next: CharacterToken[]) => void; interface Opts { tagCb: null | TokenCb; tagCbLookahead: number; charCb: null | CharCb; charCbLookahead: number; reportProgressFunc: null | ((percDone: number) => void); reportProgressFuncFrom: number; reportProgressFuncTo: number; } declare function matchLayerLast( wholeEspTagLump: string, layers: Layer[], matchFirstInstead?: boolean, ): undefined | number; declare const version: string; declare const defaults: Opts; interface Res { timeTakenInMilliseconds: number; } /** * HTML and CSS lexer aimed at code with fatal errors, accepts mixed coding languages */ declare function tokenizer(str: string, opts?: Partial<Opts>): Res; declare const util: { matchLayerLast: typeof matchLayerLast; }; export { type AtToken, type CharCb, type CommentToken, type EspToken, type Opts, type Res, type RuleToken, type TagToken, type TextToken, defaults, tokenizer, util, version, };