blob: 090ee24316e5b41bab1e75972b43cc3b06734a4c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
'use strict'
const { posix: path } = require('path')
// TODO memoize
module.exports = (from, to) => {
if (!from || to.charAt() === '#') return to
let hash = ''
const hashIdx = to.indexOf('#')
if (~hashIdx) {
hash = to.substr(hashIdx)
to = to.substr(0, hashIdx)
}
if (from === to) {
return hash || (isDir(to) ? './' : path.basename(to))
} else {
return path.relative(path.dirname(from + '.'), to) + (isDir(to) ? '/' + hash : hash)
}
}
function isDir (str) {
return str.charAt(str.length - 1) === '/'
}
|