loomio/loomio

View on GitHub
vue/src/shared/helpers/marked.js

Summary

Maintainability
A
0 mins
Test Coverage
import { marked } from 'marked';
import { clone } from 'lodash-es';
import { colonsToUnicode } from '@/shared/helpers/emojis';
import parameterize from '@/shared/helpers/parameterize';

// _parse = marked.parse
// marked.parse = (src, opt, callback) ->
//   src = src.replace(/<img[^>]+\>/ig, "")
//   src = src.replace(/<script[^>]+\>/ig, "")
//   return _parse(src, opt, callback)
//
// export marked = marked


export var customRenderer = function(opts) {
  const _super   = new marked.Renderer(opts);
  const renderer = clone(_super);

  renderer.paragraph = text => _super.paragraph(colonsToUnicode(text));
  renderer.listitem  = text => _super.listitem(colonsToUnicode(text));
  renderer.tablecell = (text, flags) => _super.tablecell(colonsToUnicode(text), flags);

  renderer.heading   = (text, level) => _super.heading(colonsToUnicode(text), level, text, {slug: parameterize});

  renderer.link      = (href, title, text) => _super.link(href, title, text).replace('<a ', '<a rel="ugc noreferrer" target="_blank" ');

  return renderer;
};
export var options = {gfm: true, breaks: true, smartypants: false, tables: true};