You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					30 lines
				
				802 B
			
		
		
			
		
	
	
					30 lines
				
				802 B
			| 
								 
											4 years ago
										 
									 | 
							
								var path = require('path');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								module.exports = function (basedir, relfiles) {
							 | 
						||
| 
								 | 
							
								    if (relfiles) {
							 | 
						||
| 
								 | 
							
								        var files = relfiles.map(function (r) {
							 | 
						||
| 
								 | 
							
								            return path.resolve(basedir, r);
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    else {
							 | 
						||
| 
								 | 
							
								        var files = basedir;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    var res = files.slice(1).reduce(function (ps, file) {
							 | 
						||
| 
								 | 
							
								        if (!file.match(/^([A-Za-z]:)?\/|\\/)) {
							 | 
						||
| 
								 | 
							
								            throw new Error('relative path without a basedir');
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        
							 | 
						||
| 
								 | 
							
								        var xs = file.split(/\/+|\\+/);
							 | 
						||
| 
								 | 
							
								        for (
							 | 
						||
| 
								 | 
							
								            var i = 0;
							 | 
						||
| 
								 | 
							
								            ps[i] === xs[i] && i < Math.min(ps.length, xs.length);
							 | 
						||
| 
								 | 
							
								            i++
							 | 
						||
| 
								 | 
							
								        );
							 | 
						||
| 
								 | 
							
								        return ps.slice(0, i);
							 | 
						||
| 
								 | 
							
								    }, files[0].split(/\/+|\\+/));
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    // Windows correctly handles paths with forward-slashes
							 | 
						||
| 
								 | 
							
								    return res.length > 1 ? res.join('/') : '/'
							 | 
						||
| 
								 | 
							
								};
							 |