|
|
@ -28,7 +28,7 @@ default_rules.code_block = function (tokens, idx /*, options, env */) { |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
default_rules.fence = function (tokens, idx, options, env, slf) { |
|
|
|
default_rules.fence = function (tokens, idx, options, env, self) { |
|
|
|
var token = tokens[idx], |
|
|
|
info = token.info ? unescapeAll(token.info).trim() : '', |
|
|
|
langName = '', |
|
|
@ -45,13 +45,13 @@ default_rules.fence = function (tokens, idx, options, env, slf) { |
|
|
|
highlighted = escapeHtml(token.content); |
|
|
|
} |
|
|
|
|
|
|
|
return '<pre><code' + slf.renderAttrs(token) + '>' |
|
|
|
return '<pre><code' + self.renderAttrs(token) + '>' |
|
|
|
+ highlighted |
|
|
|
+ '</code></pre>\n'; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
default_rules.image = function (tokens, idx, options, env, slf) { |
|
|
|
default_rules.image = function (tokens, idx, options, env, self) { |
|
|
|
var token = tokens[idx]; |
|
|
|
|
|
|
|
// "alt" attr MUST be set, even if empty. Because it's mandatory and
|
|
|
@ -60,9 +60,9 @@ default_rules.image = function (tokens, idx, options, env, slf) { |
|
|
|
// Replace content with actual value
|
|
|
|
|
|
|
|
token.attrs[token.attrIndex('alt')][1] = |
|
|
|
slf.renderInlineAsText(token.children, options, env); |
|
|
|
self.renderInlineAsText(token.children, options, env); |
|
|
|
|
|
|
|
return slf.renderToken(tokens, idx, options); |
|
|
|
return self.renderToken(tokens, idx, options); |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
@ -228,6 +228,16 @@ Renderer.prototype.renderInline = function (tokens, options, env) { |
|
|
|
var type, |
|
|
|
result = '', |
|
|
|
rules = this.rules; |
|
|
|
|
|
|
|
return tokens.map(function(token, i) { |
|
|
|
type = token.type; |
|
|
|
|
|
|
|
if (typeof rules[type] !== 'undefined') { |
|
|
|
return rules[type](tokens, i, options, env, this); |
|
|
|
} else { |
|
|
|
return this.renderToken(tokens, i, options); |
|
|
|
} |
|
|
|
}, this); |
|
|
|
|
|
|
|
for (var i = 0, len = tokens.length; i < len; i++) { |
|
|
|
type = tokens[i].type; |
|
|
@ -279,23 +289,30 @@ Renderer.prototype.renderInlineAsText = function (tokens, options, env) { |
|
|
|
* this method directly. |
|
|
|
**/ |
|
|
|
Renderer.prototype.render = function (tokens, options, env) { |
|
|
|
return this.renderTokens(tokens, options, env).reduce(function(collector, token) { |
|
|
|
return collector + token; |
|
|
|
}, ''); |
|
|
|
}; |
|
|
|
|
|
|
|
Renderer.prototype.renderTokens = function (tokens, options, env) { |
|
|
|
var i, len, type, |
|
|
|
result = '', |
|
|
|
rules = this.rules; |
|
|
|
|
|
|
|
for (i = 0, len = tokens.length; i < len; i++) { |
|
|
|
type = tokens[i].type; |
|
|
|
return tokens.reduce(function(collector, token, i) { |
|
|
|
type = token.type; |
|
|
|
|
|
|
|
if (type === 'inline') { |
|
|
|
result += this.renderInline(tokens[i].children, options, env); |
|
|
|
console.log('inline: ', this.renderInline(token.children, options, env)); |
|
|
|
return collector.concat(this.renderInline(token.children, options, env)); |
|
|
|
} else if (typeof rules[type] !== 'undefined') { |
|
|
|
result += rules[tokens[i].type](tokens, i, options, env, this); |
|
|
|
collector.push(rules[type](tokens, i, options, env, this)); |
|
|
|
return collector; |
|
|
|
} else { |
|
|
|
result += this.renderToken(tokens, i, options, env); |
|
|
|
collector.push(this.renderToken(tokens, i, options, env)); |
|
|
|
return collector; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return result; |
|
|
|
}.bind(this), []); |
|
|
|
}; |
|
|
|
|
|
|
|
module.exports = Renderer; |
|
|
|