blessed-contrib
Version:
Build dashboards (or any other application) using ascii/ansi art and javascript.
65 lines (48 loc) • 1.4 kB
JavaScript
var blessed = require('blessed')
, Box = blessed.Box
, marked = require('marked')
, TerminalRenderer = require('marked-terminal')
, chalk = require('chalk');
function Markdown(options) {
if (!(this instanceof Box)) {
return new Markdown(options);
}
options = options || {};
const markdownOptions = {
style: options.markdownStyle
};
this.evalStyles(markdownOptions);
this.setOptions(markdownOptions.style);
this.options = options;
Box.call(this, options);
if (options.markdown) this.setMarkdown(options.markdown);
}
Markdown.prototype = Object.create(Box.prototype);
Markdown.prototype.setMarkdown = function(str) {
this.setContent(marked.parse(str));
};
Markdown.prototype.setOptions = function(style) {
marked.setOptions({
renderer: new TerminalRenderer(style)
});
};
Markdown.prototype.evalStyles = function(options) {
if (!options.style) return;
for (var st in options.style) {
if (typeof(options.style[st])!='string') continue;
var tokens = options.style[st].split('.');
options.style[st] = chalk;
for (var j=1; j<tokens.length; j++) {
options.style[st] = options.style[st][tokens[j]];
}
}
};
Markdown.prototype.getOptionsPrototype = function() {
return {
markdown: 'string',
markdownStyle: 'object'
};
};
Markdown.prototype.type = 'markdown';
module.exports = Markdown;
;