diff --git a/browser/components/MarkdownPreview.js b/browser/components/MarkdownPreview.js index 0bd2e397..b90bbfa1 100644 --- a/browser/components/MarkdownPreview.js +++ b/browser/components/MarkdownPreview.js @@ -140,7 +140,7 @@ export default class MarkdownPreview extends React.Component { ` this.refs.root.contentWindow.document.body.setAttribute('data-theme', theme) - this.refs.root.contentWindow.document.body.innerHTML = markdown(value) + this.refs.root.contentWindow.document.body.innerHTML = markdown.render(value) Array.prototype.forEach.call(this.refs.root.contentWindow.document.querySelectorAll('a'), (el) => { el.addEventListener('click', this.anchorClickHandler) diff --git a/browser/lib/markdown.js b/browser/lib/markdown.js index 54ef51c8..8a1c9a99 100644 --- a/browser/lib/markdown.js +++ b/browser/lib/markdown.js @@ -129,8 +129,40 @@ md.renderer.render = function render (tokens, options, env) { } window.md = md -export default function markdown (content) { - if (!_.isString(content)) content = '' - - return md.render(content) +function strip (input) { + var output = input + try { + output = output + .replace(/^([\s\t]*)([\*\-\+]|\d\.)\s+/gm, '$1') + .replace(/\n={2,}/g, '\n') + .replace(/~~/g, '') + .replace(/`{3}.*\n/g, '') + .replace(/<(.*?)>/g, '$1') + .replace(/^[=\-]{2,}\s*$/g, '') + .replace(/\[\^.+?\](\: .*?$)?/g, '') + .replace(/\s{0,2}\[.*?\]: .*?$/g, '') + .replace(/\!\[.*?\][\[\(].*?[\]\)]/g, '') + .replace(/\[(.*?)\][\[\(].*?[\]\)]/g, '$1') + .replace(/>/g, '') + .replace(/^\s{1,2}\[(.*?)\]: (\S+)( ".*?")?\s*$/g, '') + .replace(/^\#{1,6}\s*([^#]*)\s*(\#{1,6})?/gm, '$1') + .replace(/([\*_]{1,3})(\S.*?\S)\1/g, '$2') + .replace(/(`{3,})(.*?)\1/gm, '$2') + .replace(/^-{3,}\s*$/g, '') + .replace(/`(.+?)`/g, '$1') + .replace(/\n{2,}/g, '\n\n') + } catch (e) { + console.error(e) + return input + } + return output } + +const markdown = { + render: function markdown (content) { + if (!_.isString(content)) content = '' + return md.render(content) + }, + strip +} +export default markdown diff --git a/browser/main/Detail/MarkdownNoteDetail.js b/browser/main/Detail/MarkdownNoteDetail.js index 93b3a40a..43b129ec 100644 --- a/browser/main/Detail/MarkdownNoteDetail.js +++ b/browser/main/Detail/MarkdownNoteDetail.js @@ -8,6 +8,7 @@ import FolderSelect from './FolderSelect' import dataApi from 'browser/main/lib/dataApi' import { hashHistory } from 'react-router' import ee from 'browser/main/lib/eventEmitter' +import markdown from 'browser/lib/markdown' const electron = require('electron') const { remote } = electron @@ -72,6 +73,8 @@ class MarkdownNoteDetail extends React.Component { } } + title = markdown.strip(title) + return title }