summaryrefslogtreecommitdiff
path: root/packages/markdown-it-14.1.0/lib/token.mjs
diff options
context:
space:
mode:
Diffstat (limited to 'packages/markdown-it-14.1.0/lib/token.mjs')
-rw-r--r--packages/markdown-it-14.1.0/lib/token.mjs191
1 files changed, 191 insertions, 0 deletions
diff --git a/packages/markdown-it-14.1.0/lib/token.mjs b/packages/markdown-it-14.1.0/lib/token.mjs
new file mode 100644
index 0000000..706ae1d
--- /dev/null
+++ b/packages/markdown-it-14.1.0/lib/token.mjs
@@ -0,0 +1,191 @@
+// Token class
+
+/**
+ * class Token
+ **/
+
+/**
+ * new Token(type, tag, nesting)
+ *
+ * Create new token and fill passed properties.
+ **/
+function Token (type, tag, nesting) {
+ /**
+ * Token#type -> String
+ *
+ * Type of the token (string, e.g. "paragraph_open")
+ **/
+ this.type = type
+
+ /**
+ * Token#tag -> String
+ *
+ * html tag name, e.g. "p"
+ **/
+ this.tag = tag
+
+ /**
+ * Token#attrs -> Array
+ *
+ * Html attributes. Format: `[ [ name1, value1 ], [ name2, value2 ] ]`
+ **/
+ this.attrs = null
+
+ /**
+ * Token#map -> Array
+ *
+ * Source map info. Format: `[ line_begin, line_end ]`
+ **/
+ this.map = null
+
+ /**
+ * 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
+
+ /**
+ * Token#level -> Number
+ *
+ * nesting level, the same as `state.level`
+ **/
+ this.level = 0
+
+ /**
+ * Token#children -> Array
+ *
+ * An array of child nodes (inline and img tokens)
+ **/
+ this.children = null
+
+ /**
+ * Token#content -> String
+ *
+ * In a case of self-closing tag (code, html, fence, etc.),
+ * it has contents of this tag.
+ **/
+ this.content = ''
+
+ /**
+ * Token#markup -> String
+ *
+ * '*' or '_' for emphasis, fence string for fence, etc.
+ **/
+ this.markup = ''
+
+ /**
+ * Token#info -> String
+ *
+ * Additional information:
+ *
+ * - Info string for "fence" tokens
+ * - The value "auto" for autolink "link_open" and "link_close" tokens
+ * - The string value of the item marker for ordered-list "list_item_open" tokens
+ **/
+ this.info = ''
+
+ /**
+ * Token#meta -> Object
+ *
+ * A place for plugins to store an arbitrary data
+ **/
+ this.meta = null
+
+ /**
+ * Token#block -> Boolean
+ *
+ * True for block-level tokens, false for inline tokens.
+ * Used in renderer to calculate line breaks
+ **/
+ this.block = false
+
+ /**
+ * Token#hidden -> Boolean
+ *
+ * If it's true, ignore this element when rendering. Used for tight lists
+ * to hide paragraphs.
+ **/
+ this.hidden = false
+}
+
+/**
+ * Token.attrIndex(name) -> Number
+ *
+ * Search attribute index by name.
+ **/
+Token.prototype.attrIndex = function attrIndex (name) {
+ if (!this.attrs) { return -1 }
+
+ const attrs = this.attrs
+
+ for (let i = 0, len = attrs.length; i < len; i++) {
+ if (attrs[i][0] === name) { return i }
+ }
+ return -1
+}
+
+/**
+ * Token.attrPush(attrData)
+ *
+ * Add `[ name, value ]` attribute to list. Init attrs if necessary
+ **/
+Token.prototype.attrPush = function attrPush (attrData) {
+ if (this.attrs) {
+ this.attrs.push(attrData)
+ } else {
+ this.attrs = [attrData]
+ }
+}
+
+/**
+ * Token.attrSet(name, value)
+ *
+ * Set `name` attribute to `value`. Override old value if exists.
+ **/
+Token.prototype.attrSet = function attrSet (name, value) {
+ const idx = this.attrIndex(name)
+ const attrData = [name, value]
+
+ if (idx < 0) {
+ this.attrPush(attrData)
+ } else {
+ this.attrs[idx] = attrData
+ }
+}
+
+/**
+ * Token.attrGet(name)
+ *
+ * Get the value of attribute `name`, or null if it does not exist.
+ **/
+Token.prototype.attrGet = function attrGet (name) {
+ const idx = this.attrIndex(name)
+ let value = null
+ if (idx >= 0) {
+ value = this.attrs[idx][1]
+ }
+ return value
+}
+
+/**
+ * Token.attrJoin(name, value)
+ *
+ * Join value to existing attribute via space. Or create new attribute if not
+ * exists. Useful to operate with token classes.
+ **/
+Token.prototype.attrJoin = function attrJoin (name, value) {
+ const idx = this.attrIndex(name)
+
+ if (idx < 0) {
+ this.attrPush([name, value])
+ } else {
+ this.attrs[idx][1] = this.attrs[idx][1] + ' ' + value
+ }
+}
+
+export default Token