Fork link-text
module
This commit is contained in:
parent
d9381c543e
commit
f04c65088b
4 changed files with 57 additions and 7 deletions
9
js/modules/link_text.d.ts
vendored
Normal file
9
js/modules/link_text.d.ts
vendored
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
declare namespace LinkText {
|
||||||
|
type Attributes = {
|
||||||
|
[key: string]: string;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
declare function linkText(value: string, attributes: LinkText.Attributes): string;
|
||||||
|
|
||||||
|
export = linkText;
|
47
js/modules/link_text.js
Normal file
47
js/modules/link_text.js
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
// Fork of https://github.com/uiureo/link-text with HTML escaping disabled as we leverage
|
||||||
|
// jQuery’s escaping mechanism:
|
||||||
|
|
||||||
|
var linkify = require('linkify-it')()
|
||||||
|
var escape = require('escape-html')
|
||||||
|
|
||||||
|
function createLink (url, text, attrs) {
|
||||||
|
attrs = attrs || {}
|
||||||
|
|
||||||
|
var html = []
|
||||||
|
html.push('<a ')
|
||||||
|
html.push('href="' + url + '"')
|
||||||
|
Object.keys(attrs).forEach(function (key) {
|
||||||
|
html.push(' ' + key + '="' + attrs[key] + '"')
|
||||||
|
})
|
||||||
|
html.push('>')
|
||||||
|
html.push(decodeURIComponent(text))
|
||||||
|
html.push('</a>')
|
||||||
|
|
||||||
|
return html.join('')
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = function (text, attrs) {
|
||||||
|
attrs = attrs || {}
|
||||||
|
text = escape(text)
|
||||||
|
|
||||||
|
var matchData = linkify.match(text) || []
|
||||||
|
|
||||||
|
var result = []
|
||||||
|
var last = 0
|
||||||
|
|
||||||
|
matchData.forEach(function (match) {
|
||||||
|
if (last < match.index) {
|
||||||
|
result.push(text.slice(last, match.index))
|
||||||
|
}
|
||||||
|
|
||||||
|
result.push(
|
||||||
|
createLink(match.url, match.text, attrs)
|
||||||
|
)
|
||||||
|
|
||||||
|
last = match.lastIndex
|
||||||
|
})
|
||||||
|
|
||||||
|
result.push(text.slice(last))
|
||||||
|
|
||||||
|
return result.join('')
|
||||||
|
}
|
6
ts/@types/link-text/index.d.ts
vendored
6
ts/@types/link-text/index.d.ts
vendored
|
@ -1,6 +0,0 @@
|
||||||
declare module 'link-text' {
|
|
||||||
type Attributes = {
|
|
||||||
[key: string]: string;
|
|
||||||
}
|
|
||||||
export default function (value: string, attributes: Attributes): string
|
|
||||||
}
|
|
|
@ -1,4 +1,4 @@
|
||||||
import linkTextInternal from 'link-text';
|
import linkTextInternal from '../../js/modules/link_text';
|
||||||
|
|
||||||
|
|
||||||
export const linkText = (value: string): string =>
|
export const linkText = (value: string): string =>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue