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.
		
		
		
		
		
			
		
			
				
					
					
						
							35 lines
						
					
					
						
							866 B
						
					
					
				
			
		
		
	
	
							35 lines
						
					
					
						
							866 B
						
					
					
				| 'use strict';
 | |
| 
 | |
| var Module = require('module');
 | |
| var path = require('path');
 | |
| 
 | |
| module.exports = function requireFromString(code, filename, opts) {
 | |
| 	if (typeof filename === 'object') {
 | |
| 		opts = filename;
 | |
| 		filename = undefined;
 | |
| 	}
 | |
| 
 | |
| 	opts = opts || {};
 | |
| 	filename = filename || '';
 | |
| 
 | |
| 	opts.appendPaths = opts.appendPaths || [];
 | |
| 	opts.prependPaths = opts.prependPaths || [];
 | |
| 
 | |
| 	if (typeof code !== 'string') {
 | |
| 		throw new Error('code must be a string, not ' + typeof code);
 | |
| 	}
 | |
| 
 | |
| 	var paths = Module._nodeModulePaths(path.dirname(filename));
 | |
| 
 | |
| 	var parent = module.parent;
 | |
| 	var m = new Module(filename, parent);
 | |
| 	m.filename = filename;
 | |
| 	m.paths = [].concat(opts.prependPaths).concat(paths).concat(opts.appendPaths);
 | |
| 	m._compile(code, filename);
 | |
| 
 | |
| 	var exports = m.exports;
 | |
| 	parent && parent.children && parent.children.splice(parent.children.indexOf(m), 1);
 | |
| 
 | |
| 	return exports;
 | |
| };
 |