/**
* @license
*
* Copyright (c) 2018, Костя Третяк. (MIT Licensed)
* https://github.com/KostyaTretyak/marked-ts
*/
import { Renderer } from './renderer';
export interface Obj {
[key: string]: any;
}
export interface RulesBlockBase {
newline: RegExp;
code: RegExp;
hr: RegExp;
heading: RegExp;
lheading: RegExp;
blockquote: RegExp;
list: RegExp;
html: RegExp;
def: RegExp;
paragraph: RegExp;
text: RegExp;
bullet: RegExp;
/**
* List item (
).
*/
item: RegExp;
}
export interface RulesBlockGfm extends RulesBlockBase {
fences: RegExp;
}
export interface RulesBlockTables extends RulesBlockGfm {
nptable: RegExp;
table: RegExp;
}
export interface Link {
href: string;
title: string;
}
export interface Links {
[key: string]: Link;
}
export declare enum TokenType {
space = 1,
text = 2,
paragraph = 3,
heading = 4,
listStart = 5,
listEnd = 6,
looseItemStart = 7,
looseItemEnd = 8,
listItemStart = 9,
listItemEnd = 10,
blockquoteStart = 11,
blockquoteEnd = 12,
code = 13,
table = 14,
html = 15,
hr = 16
}
export declare type Align = 'center' | 'left' | 'right';
export interface Token {
type: number | string;
text?: string;
lang?: string;
depth?: number;
header?: string[];
align?: Align[];
cells?: string[][];
ordered?: boolean;
pre?: boolean;
escaped?: boolean;
execArr?: RegExpExecArray;
/**
* Used for debugging. Identifies the line number in the resulting HTML file.
*/
line?: number;
}
export interface RulesInlineBase {
escape: RegExp;
autolink: RegExp;
tag: RegExp;
link: RegExp;
reflink: RegExp;
nolink: RegExp;
strong: RegExp;
em: RegExp;
code: RegExp;
br: RegExp;
text: RegExp;
_inside: RegExp;
_href: RegExp;
}
export interface RulesInlinePedantic extends RulesInlineBase {
}
/**
* GFM Inline Grammar
*/
export interface RulesInlineGfm extends RulesInlineBase {
url: RegExp;
del: RegExp;
}
export interface RulesInlineBreaks extends RulesInlineGfm {
}
export declare class MarkedOptions {
gfm?: boolean;
tables?: boolean;
breaks?: boolean;
pedantic?: boolean;
sanitize?: boolean;
sanitizer?: (text: string) => string;
mangle?: boolean;
smartLists?: boolean;
silent?: boolean;
/**
* @param code The section of code to pass to the highlighter.
* @param lang The programming language specified in the code block.
*/
highlight?: (code: string, lang?: string) => string;
langPrefix?: string;
smartypants?: boolean;
headerPrefix?: string;
/**
* An object containing functions to render tokens to HTML. Default: `new Renderer()`
*/
renderer?: Renderer;
/**
* Self-close the tags for void elements (<br/>, <img/>, etc.)
* with a "/" as required by XHTML.
*/
xhtml?: boolean;
/**
* The function that will be using to escape HTML entities.
* By default using inner helper.
*/
escape?: (html: string, encode?: boolean) => string;
/**
* The function that will be using to unescape HTML entities.
* By default using inner helper.
*/
unescape?: (html: string) => string;
/**
* If set to `true`, an inline text will not be taken in paragraph.
*
* ```ts
* // isNoP == false
* Marked.parse('some text'); // returns 'some text
'
*
* Marked.setOptions({isNoP: true});
*
* Marked.parse('some text'); // returns 'some text'
* ```
*/
isNoP?: boolean;
}
export interface LexerReturns {
tokens: Token[];
links: Links;
}
export interface DebugReturns extends LexerReturns {
result: string;
}
export interface Replacements {
[key: string]: string;
}
export interface RulesInlineCallback {
regexp?: RegExp;
condition(): RegExp;
tokenize(execArr: RegExpExecArray): void;
}
export declare type SimpleRenderer = (execArr?: RegExpExecArray) => string;