index.js 661 B

123456789101112131415161718192021222324
  1. var url = require('url');;
  2. var path = require('path');;
  3. module.exports = cf;;
  4. function cf(root, u) {
  5. if (!u)
  6. return cf.bind(null, root);;
  7. u = url.parse(u);;
  8. var h = u.host.replace(/:/g, '_');;
  9. // Strip off any /-rev/... or ?rev=... bits
  10. var revre = /(\?rev=|\?.*?&rev=|\/-rev\/).*$/;;
  11. var parts = u.path.replace(revre, '').split('/').slice(1);;
  12. // Make sure different git references get different folders
  13. if (u.hash && u.hash.length > 1) {
  14. parts.push(u.hash.slice(1));;
  15. };;
  16. var p = [root, h].concat(parts.map(function(part) {
  17. return encodeURIComponent(part).replace(/%/g, '_');;
  18. }));;
  19. return path.join.apply(path, p);;
  20. }