Browse Source
feat: underline markdown support (#2073)
* fix: no markdown support for underline #2072
pull/2086/head
Regev Brody
4 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with
39 additions and
1 deletions
-
client/components/editor/editor-markdown.vue
-
client/libs/markdown-it-underline/index.js
-
server/modules/rendering/markdown-core/definition.yml
-
server/modules/rendering/markdown-core/renderer.js
-
server/modules/rendering/markdown-core/underline.js
|
|
@ -220,6 +220,7 @@ import mdMark from 'markdown-it-mark' |
|
|
|
import mdFootnote from 'markdown-it-footnote' |
|
|
|
import mdImsize from 'markdown-it-imsize' |
|
|
|
import katex from 'katex' |
|
|
|
import underline from '../../libs/markdown-it-underline' |
|
|
|
import 'katex/dist/contrib/mhchem' |
|
|
|
import twemoji from 'twemoji' |
|
|
|
import plantuml from './markdown/plantuml' |
|
|
@ -268,6 +269,7 @@ const md = new MarkdownIt({ |
|
|
|
.use(mdAttrs, { |
|
|
|
allowedAttributes: ['id', 'class', 'target'] |
|
|
|
}) |
|
|
|
.use(underline) |
|
|
|
.use(mdEmoji) |
|
|
|
.use(mdTaskLists, {label: true, labelAfter: true}) |
|
|
|
.use(mdExpandTabs) |
|
|
|
|
|
@ -0,0 +1,12 @@ |
|
|
|
const renderEm = (tokens, idx, opts, env, slf) => { |
|
|
|
const token = tokens[idx]; |
|
|
|
if (token.markup === '_') { |
|
|
|
token.tag = 'u'; |
|
|
|
} |
|
|
|
return slf.renderToken(tokens, idx, opts); |
|
|
|
} |
|
|
|
|
|
|
|
module.exports = (md) => { |
|
|
|
md.renderer.rules.em_open = renderEm; |
|
|
|
md.renderer.rules.em_close = renderEm; |
|
|
|
} |
|
|
@ -34,12 +34,19 @@ props: |
|
|
|
hint: Enable some language-neutral replacement + quotes beautification |
|
|
|
order: 4 |
|
|
|
public: true |
|
|
|
underline: |
|
|
|
type: Boolean |
|
|
|
default: false |
|
|
|
title: Underline Support |
|
|
|
hint: Enable underline by using _underline_ |
|
|
|
order: 5 |
|
|
|
public: true |
|
|
|
quotes: |
|
|
|
type: String |
|
|
|
default: English |
|
|
|
title: Quotes style |
|
|
|
hint: When typographer is enabled. Double + single quotes replacement pairs. e.g. «»„“ for Russian, „“‚‘ for German, etc. |
|
|
|
order: 5 |
|
|
|
order: 6 |
|
|
|
enum: |
|
|
|
- Chinese |
|
|
|
- English |
|
|
|
|
|
@ -1,6 +1,7 @@ |
|
|
|
const md = require('markdown-it') |
|
|
|
const mdAttrs = require('markdown-it-attrs') |
|
|
|
const _ = require('lodash') |
|
|
|
const underline = require('./underline') |
|
|
|
|
|
|
|
const quoteStyles = { |
|
|
|
Chinese: '””‘’', |
|
|
@ -30,6 +31,10 @@ module.exports = { |
|
|
|
} |
|
|
|
}) |
|
|
|
|
|
|
|
if (this.config.underline) { |
|
|
|
mkdown.use(underline) |
|
|
|
} |
|
|
|
|
|
|
|
mkdown.use(mdAttrs, { |
|
|
|
allowedAttributes: ['id', 'class', 'target'] |
|
|
|
}) |
|
|
|
|
|
@ -0,0 +1,12 @@ |
|
|
|
const renderEm = (tokens, idx, opts, env, slf) => { |
|
|
|
const token = tokens[idx]; |
|
|
|
if (token.markup === '_') { |
|
|
|
token.tag = 'u'; |
|
|
|
} |
|
|
|
return slf.renderToken(tokens, idx, opts); |
|
|
|
} |
|
|
|
|
|
|
|
module.exports = (md) => { |
|
|
|
md.renderer.rules.em_open = renderEm; |
|
|
|
md.renderer.rules.em_close = renderEm; |
|
|
|
} |