react / react-0.13.3 / examples / basic-commonjs / node_modules / browserify / node_modules / module-deps / node_modules / parents / index.js
80742 viewsvar pathPlatform = require('path-platform');12module.exports = function (cwd, opts) {3if (cwd === undefined) cwd = process.cwd();4if (!opts) opts = {};5var platform = opts.platform || process.platform;67var isWindows = /^win/.test(platform);8var path = isWindows ? pathPlatform.win32 : pathPlatform;9var normalize = !isWindows ? path.normalize :10path.normalize('c:') === 'c:.' ? fixNormalize(path.normalize) :11path.normalize;12var sep = isWindows ? /[\\\/]/ : '/';13var init = isWindows ? '' : '/';1415var join = function (x, y) {16var ps = [ x, y ].filter(function (p) {17return p && typeof p === 'string'18});1920return normalize(ps.join(isWindows ? '\\' : '/'));21};2223var res = normalize(cwd)24.split(sep)25.reduce(function (acc,dir,ix) {26return acc.concat(join(acc[ix], dir))27}, [init])28.slice(1)29.reverse()30;31if (res[0] === res[1]) return [ res[0] ];32if (isWindows && /^\\/.test(cwd)) {33return res.slice(0,-1).map(function (d) {34var ch = d.charAt(0)35return ch === '\\' ? d :36ch === '.' ? '\\' + d.slice(1) :37'\\' + d38});39}40return res;4142function fixNormalize(fn) {43return function(p) {44return fn(p).replace(/:\.$/, ':')45}46}47}484950