feat: add helper for disabled link, fixed #295 (#296)

This commit is contained in:
cinwell.li 2017-10-30 06:00:31 -05:00 committed by GitHub
parent 1f04912a8f
commit 4ad96f3d12
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 47 additions and 19 deletions

View File

@ -57,3 +57,8 @@ You will get `<a href="/demo/">link</a>`html. Do not worry, you can still set ti
[link](/demo2 ":target=_self")
```
## Disable link
```md
[link](/demo ":disabled")
```

View File

@ -25,9 +25,11 @@ export class Compiler {
if (isFn(mdConf)) {
compile = mdConf(marked, renderer)
} else {
marked.setOptions(merge(mdConf, {
renderer: merge(renderer, mdConf.renderer)
}))
marked.setOptions(
merge(mdConf, {
renderer: merge(renderer, mdConf.renderer)
})
)
compile = marked
}
@ -91,33 +93,49 @@ export class Compiler {
}
// highlight code
origin.code = renderer.code = function (code, lang = '') {
const hl = Prism.highlight(code, Prism.languages[lang] || Prism.languages.markup)
const hl = Prism.highlight(
code,
Prism.languages[lang] || Prism.languages.markup
)
return `<pre v-pre data-lang="${lang}"><code class="lang-${lang}">${hl}</code></pre>`
}
origin.link = renderer.link = function (href, title, text) {
let blank = ''
origin.link = renderer.link = function (href, title = '', text) {
let attrs = ''
const config = {}
if (!/:|(\/{2})/.test(href) &&
!_self.matchNotCompileLink(href) &&
!/(\s?:ignore)(\s\S+)?$/.test(title)) {
href = router.toURL(href, null, router.getCurrentPath())
} else {
blank = ` target="${linkTarget}"`
title = title && title.replace(/:ignore/g, '').trim()
if (title) {
title = title
.replace(/:(\w+)=?(\w+)?/g, (m, key, value) => {
config[key] = value || true
return ''
})
.trim()
}
let target = title && title.match(/:target=\w+/)
if (target) {
target = target[0]
title = title.replace(target, '')
blank = ' ' + target.slice(1)
if (
!/:|(\/{2})/.test(href) &&
!_self.matchNotCompileLink(href) &&
!config.ignore
) {
href = router.toURL(href, null, router.getCurrentPath())
} else {
attrs += ` target="${linkTarget}"`
}
if (config.target) {
attrs += ' target=' + config.target
}
if (config.disabled) {
attrs += ' disabled'
href = 'javascript:void(0)'
}
if (title) {
title = ` title="${title}"`
}
return `<a href="${href}"${title || ''}${blank}>${text}</a>`
return `<a href="${href}"${title || ''}${attrs}>${text}</a>`
}
origin.paragraph = renderer.paragraph = function (text) {
if (/^!&gt;/.test(text)) {

View File

@ -75,6 +75,11 @@ img {
max-width: 100%;
}
a[disabled] {
cursor: not-allowed;
opacity: 0.6;
}
kbd {
border: solid 1px #ccc;
border-radius: 3px;