37 lines
		
	
	
		
			791 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			791 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| 
 | |
| var stream = require('stream');
 | |
| var util = require('util');
 | |
| var replace = require('./replace');
 | |
| 
 | |
| var jsonExtRe = /\.json$/;
 | |
| 
 | |
| module.exports = function(rootEnv) {
 | |
|   rootEnv = rootEnv || process.env;
 | |
|   return function (file, trOpts) {
 | |
|     if (jsonExtRe.test(file)) {
 | |
|       return stream.PassThrough();
 | |
|     }
 | |
|     var envs = trOpts ? [rootEnv, trOpts] : [rootEnv];
 | |
|     return new LooseEnvify(envs);
 | |
|   };
 | |
| };
 | |
| 
 | |
| function LooseEnvify(envs) {
 | |
|   stream.Transform.call(this);
 | |
|   this._data = '';
 | |
|   this._envs = envs;
 | |
| }
 | |
| util.inherits(LooseEnvify, stream.Transform);
 | |
| 
 | |
| LooseEnvify.prototype._transform = function(buf, enc, cb) {
 | |
|   this._data += buf;
 | |
|   cb();
 | |
| };
 | |
| 
 | |
| LooseEnvify.prototype._flush = function(cb) {
 | |
|   var replaced = replace(this._data, this._envs);
 | |
|   this.push(replaced);
 | |
|   cb();
 | |
| };
 |