|
|
@ -3,50 +3,105 @@ |
|
|
|
'use strict'; |
|
|
|
|
|
|
|
|
|
|
|
// Create a token
|
|
|
|
//
|
|
|
|
/** |
|
|
|
* class Token |
|
|
|
**/ |
|
|
|
|
|
|
|
/** |
|
|
|
* new Token(type, tag, nesting) |
|
|
|
* |
|
|
|
* Create new token and fill passed properties. |
|
|
|
**/ |
|
|
|
function Token(type, tag, nesting) { |
|
|
|
// type of the token (string, e.g. "paragraph_open")
|
|
|
|
/** |
|
|
|
* Token#type -> String |
|
|
|
* |
|
|
|
* Type of the token (string, e.g. "paragraph_open") |
|
|
|
**/ |
|
|
|
this.type = type; |
|
|
|
|
|
|
|
// html tag name, e.g. "p"
|
|
|
|
/** |
|
|
|
* Token#tag -> String |
|
|
|
* |
|
|
|
* html tag name, e.g. "p" |
|
|
|
**/ |
|
|
|
this.tag = tag; |
|
|
|
|
|
|
|
// html attributes, format:
|
|
|
|
// [ [ name1, value1 ], [ name2, value2 ] ]
|
|
|
|
/** |
|
|
|
* Token#attrs -> Array |
|
|
|
* |
|
|
|
* Html attributes. Format: `[ [ name1, value1 ], [ name2, value2 ] ]` |
|
|
|
**/ |
|
|
|
this.attrs = null; |
|
|
|
|
|
|
|
// source map info, format:
|
|
|
|
// [ line_begin, line_end ]
|
|
|
|
/** |
|
|
|
* Token#map -> Array |
|
|
|
* |
|
|
|
* Source map info. Format: `[ line_begin, line_end ]` |
|
|
|
**/ |
|
|
|
this.map = null; |
|
|
|
|
|
|
|
// level change (number in {-1, 0, 1} set), where:
|
|
|
|
// - `1` means the tag is opening
|
|
|
|
// - `0` means the tag is self-closing
|
|
|
|
// - `-1` means the tag is closing
|
|
|
|
/** |
|
|
|
* Token#nesting -> Number |
|
|
|
* |
|
|
|
* Level change (number in {-1, 0, 1} set), where: |
|
|
|
* |
|
|
|
* - `1` means the tag is opening |
|
|
|
* - `0` means the tag is self-closing |
|
|
|
* - `-1` means the tag is closing |
|
|
|
**/ |
|
|
|
this.nesting = nesting; |
|
|
|
|
|
|
|
// nesting level, same as `state.level`
|
|
|
|
/** |
|
|
|
* Token#level -> Number |
|
|
|
* |
|
|
|
* nesting level, the same as `state.level` |
|
|
|
**/ |
|
|
|
this.level = 0; |
|
|
|
|
|
|
|
// an array of child nodes (inline and img tokens)
|
|
|
|
/** |
|
|
|
* Token#children -> Array |
|
|
|
* |
|
|
|
* An array of child nodes (inline and img tokens) |
|
|
|
**/ |
|
|
|
this.children = null; |
|
|
|
|
|
|
|
// in a case of self-closing tag (code, html, fence, etc.),
|
|
|
|
// it has contents of this tag
|
|
|
|
/** |
|
|
|
* Token#content -> String |
|
|
|
* |
|
|
|
* In a case of self-closing tag (code, html, fence, etc.), |
|
|
|
* it has contents of this tag. |
|
|
|
**/ |
|
|
|
this.content = null; |
|
|
|
|
|
|
|
// '*' or '_' for emphasis, fence string for fence, etc.
|
|
|
|
/** |
|
|
|
* Token#markup -> String |
|
|
|
* |
|
|
|
* '*' or '_' for emphasis, fence string for fence, etc. |
|
|
|
**/ |
|
|
|
this.markup = ''; |
|
|
|
|
|
|
|
// fence infostring
|
|
|
|
/** |
|
|
|
* Token#info -> String |
|
|
|
* |
|
|
|
* fence infostring |
|
|
|
**/ |
|
|
|
this.info = null; |
|
|
|
|
|
|
|
// block or inline-level token,
|
|
|
|
// used in renderer to calculate line breaks
|
|
|
|
/** |
|
|
|
* Token#block -> Boolean |
|
|
|
* |
|
|
|
* True for block-level tokens, false for inline tokens. |
|
|
|
* Used in renderer to calculate line breaks |
|
|
|
**/ |
|
|
|
this.block = false; |
|
|
|
|
|
|
|
// if it's true, ignore this element when rendering
|
|
|
|
/** |
|
|
|
* Token#hidden -> Boolean |
|
|
|
* |
|
|
|
* If it's true, ignore this element when rendering. Used for tight lists |
|
|
|
* to hide paragraphs. |
|
|
|
**/ |
|
|
|
this.hidden = false; |
|
|
|
} |
|
|
|
|
|
|
|