Carsten Daurehøj 724ac024dd
feat: added capability to add css class and id to images + links + refactoring (#820)
* method extraction

* support for CSS class and id

* Update package.json

* Added tests for refactored render-methods

* minor refactoring
2020-02-08 21:54:18 +05:30

43 lines
1.0 KiB
JavaScript

import { getAndRemoveConfig } from '../compiler'
import { isAbsolutePath } from '../../router/util'
export const linkCompiler = ({ renderer, router, linkTarget, compilerClass }) => renderer.link = (href, title = '', text) => {
let attrs = []
const { str, config } = getAndRemoveConfig(title)
title = str
if (!isAbsolutePath(href) && !compilerClass._matchNotCompileLink(href) && !config.ignore) {
if (href === compilerClass.config.homepage) {
href = 'README'
}
href = router.toURL(href, null, router.getCurrentPath())
} else {
attrs.push(href.indexOf('mailto:') === 0 ? '' : `target="${linkTarget}"`)
}
if (config.target) {
attrs.push(`target="${config.target}"`)
}
if (config.disabled) {
attrs.push('disabled')
href = 'javascript:void(0)'
}
if (config.class) {
attrs.push(`class="${config.class}"`)
}
if (config.id) {
attrs.push(`id="${config.id}"`)
}
if (title) {
attrs.push(`title="${title}"`)
}
return `<a href="${href}" ${attrs.join(' ')}>${text}</a>`
}