very-small-parser
Version:
A very small Markdown, HTML, and CSS parser.
89 lines (88 loc) • 2.59 kB
TypeScript
import type { IElement } from '../../html/types';
import type { IToken } from '../../types';
export type TTokenTypeInline = 'inlineCode' | 'strong' | 'emphasis' | 'delete' | 'spoiler' | 'inlineMath' | 'footnoteReference' | 'linkReference' | 'imageReference' | 'inlineLink' | 'sup' | 'sub' | 'mark' | 'handle' | 'underline' | 'break' | 'icon' | 'link' | 'image' | 'whitespace' | 'text' | 'element';
export interface IInlineCode extends IToken {
type: 'inlineCode';
value: string;
wrap: string;
}
export interface IStrong extends IToken {
type: 'strong';
}
export interface IEmphasis extends IToken {
type: 'emphasis';
}
export interface IDelete extends IToken {
type: 'delete';
}
export interface ISpoiler extends IToken {
type: 'spoiler';
}
export interface IInlineMath extends IToken {
type: 'inlineMath';
}
export interface IFootnoteReference extends IToken {
type: 'footnoteReference';
identifier: string;
label: string;
}
export interface ILinkReference extends IToken {
type: 'linkReference';
identifier: string;
referenceType: 'shortcut' | 'collapsed' | 'full';
}
export interface IImageReference extends IToken {
type: 'imageReference';
identifier: string;
referenceType: 'shortcut' | 'collapsed' | 'full';
alt: string | null;
}
export interface IInlineLink extends IToken {
type: 'inlineLink';
value: string;
}
export interface ISup extends IToken {
type: 'sup';
}
export interface ISub extends IToken {
type: 'sub';
}
export interface IMark extends IToken {
type: 'mark';
children: TInlineToken[];
}
export interface IHandle extends IToken {
type: 'handle';
value: string;
prefix: '#' | '~' | '@';
}
export interface IUnderline extends IToken {
type: 'underline';
}
export interface IBreak extends IToken {
type: 'break';
}
export interface IIcon extends IToken {
type: 'icon';
emoji: string;
}
export interface ILink extends IToken {
type: 'link';
title: string;
url: string;
}
export interface IImage extends IToken {
type: 'image';
title: string;
alt: string;
url: string;
}
export interface IText extends IToken {
type: 'text';
value: string;
}
export interface IWhitespace extends IToken {
type: 'whitespace';
length: number;
}
export type TInlineToken = IInlineCode | IStrong | IEmphasis | IDelete | ISpoiler | IInlineMath | IFootnoteReference | ILinkReference | IImageReference | ILink | IImage | IInlineLink | ISup | ISub | IMark | IHandle | IUnderline | IBreak | IIcon | IElement | IText | IWhitespace;