lean4-code-actions
Version:
Refactorings and snippets for Lean 4
40 lines (31 loc) • 763 B
text/typescript
export const transformLinkUri = (protocols: string[]) => (uri: string) => {
const url = (uri || '').trim()
const first = url.charAt(0)
if (first === '#' || first === '/') {
return url
}
const colon = url.indexOf(':')
if (colon === -1) {
return url
}
let index = -1
while (++index < protocols.length) {
const protocol = protocols[index]!
if (
colon === protocol.length &&
url.slice(0, protocol.length).toLowerCase() === protocol
) {
return url
}
}
index = url.indexOf('?')
if (index !== -1 && colon > index) {
return url
}
index = url.indexOf('#')
if (index !== -1 && colon > index) {
return url
}
// eslint-disable-next-line no-script-url
return 'javascript:void(0)'
}