'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();

};