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 =>
|
||||
|
|
Loading…
Add table
Reference in a new issue