Fork link-text module

This commit is contained in:
Daniel Gasienica 2018-04-10 13:33:46 -04:00
parent d9381c543e
commit f04c65088b
4 changed files with 57 additions and 7 deletions

9
js/modules/link_text.d.ts vendored Normal file
View 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
View file

@ -0,0 +1,47 @@
// Fork of https://github.com/uiureo/link-text with HTML escaping disabled as we leverage
// jQuerys 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('')
}

View file

@ -1,6 +0,0 @@
declare module 'link-text' {
type Attributes = {
[key: string]: string;
}
export default function (value: string, attributes: Attributes): string
}

View file

@ -1,4 +1,4 @@
import linkTextInternal from 'link-text';
import linkTextInternal from '../../js/modules/link_text';
export const linkText = (value: string): string =>