require 'execjs'
require 'sprockets'
require 'sandbox'

module Nodeify
  class JavaScript < Sprockets::Processor
    def render(context, options)
      source = ''
      Sandbox.play :path => 'tmp' do |path|
        js_file = File.join(path, 'nodeify.js')
        File.open(js_file, 'w') do |f|
          f.puts <<-JAVASCRIPT
var browserify = require('browserify');
var b = browserify({ entry: '#{file}', require: { http: 'http-browserify' } });
process.stdout.write(b.bundle());
          JAVASCRIPT
        end
        @source = `node #{js_file}` # TODO: ExecJS failed me here. Also, node can't seem to accept pipes
      end

      @source
    end
  end
end