// Copyright (c) 2015 Spinpunch, Inc. All Rights Reserved. // See License.txt for license information. const TextFormatting = require('./text_formatting.jsx'); const marked = require('marked'); export class MattermostMarkdownRenderer extends marked.Renderer { constructor(options, formattingOptions = {}) { super(options); this.heading = this.heading.bind(this); this.text = this.text.bind(this); this.formattingOptions = formattingOptions; } br() { if (this.formattingOptions.singleline) { return ' '; } return super.br(); } heading(text, level, raw) { const id = `${this.options.headerPrefix}${raw.toLowerCase().replace(/[^\w]+/g, '-')}`; return `${text}`; } link(href, title, text) { let outHref = href; if (outHref.lastIndexOf('http', 0) !== 0) { outHref = `http://${outHref}`; } let output = ''; return output; } paragraph(text) { if (this.formattingOptions.singleline) { return `

${text}

`; } return super.paragraph(text); } table(header, body) { return `${header}${body}
`; } text(text) { return TextFormatting.doFormatText(text, this.formattingOptions); } }