Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | 17x 17x 11x 11x 17x 22x 17x 10x 20x 13x 10x 10x 10x 10x 10x 9x 9x 3x 6x 10x 10x 3x 10x 10x 1x 10x 17x | import Crowi from 'server/crowi'
import { decodeSpace } from './path'
export default (crowi: Crowi) => {
// const debug = Debug('crowi:lib:url')
const linkDetector: any = {}
linkDetector.getLinkRegexp = () => {
const appUrl = crowi.getBaseUrl()
return new RegExp(appUrl + '(/[^\\s"?)#]*)?', 'g')
}
linkDetector.getObjectIdRegexp = () => new RegExp('/([0-9a-fA-F]{24})')
linkDetector.getPathRegexps = () => [new RegExp('<(/[^>]+)>', 'g'), /\[(\/[^\]]+)\](?!\()/g]
linkDetector.search = function(text) {
var unique = function(array) {
return array.filter(function(x, i, self) {
return self.indexOf(x) === i
})
}
const objectIds: any = []
const paths: any = []
const linkRegexp = linkDetector.getLinkRegexp()
const objectIdRegexp = linkDetector.getObjectIdRegexp()
while (linkRegexp.exec(text)) {
const path = decodeSpace(decodeURIComponent(RegExp.$1))
if (objectIdRegexp.test(path)) {
objectIds.push(RegExp.$1)
} else {
paths.push(path)
}
}
const pathRegexp = linkDetector.getPathRegexps()[0]
while (pathRegexp.exec(text)) {
paths.push(RegExp.$1)
}
const pathRegexp2 = linkDetector.getPathRegexps()[1]
while (pathRegexp2.exec(text)) {
paths.push(RegExp.$1)
}
return {
objectIds: unique(objectIds),
paths: unique(paths),
}
}
return linkDetector
}
|