Prompt:
Convert this CoffeeScript to JavaScript.
```coffeescript
sammy: (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      @enable 'serve sammy'

    c = t.client(zapp.app)
    c.get '/zappa/sammy.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '16854'

  zappa: (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      @enable 'serve zappa'

    c = t.client(zapp.app)
    c.get '/zappa/zappa.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '4685'

  'zappa (automatic)': (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      @client '/index.js': ->

    c = t.client(zapp.app)
    c.get '/zappa/zappa.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '4685'

  minify: (t) ->
    t.expect 'zappa', 'client', 'shared', 'coffee', 'js'
    t.wait 3000

    zapp = zappa port++, ->
      @enable 'serve zappa', 'minify'
      @client '/client.js': -> alert 'foo'
      @shared '/shared.js': -> alert 'foo' if window?
      @coffee '/coffee.js': -> alert 'foo'
      @js '/js.js': "alert('foo');"

    c = t.client(zapp.app)
    c.get '/zappa/zappa.js', (err, res) ->
      t.equal 'zappa', res.headers['content-length'], '2492'
```

Response:
({
  sammy: function(t) {
    var c, zapp;
    t.expect('content-type', 'length');
    t.wait(3000);
    zapp = zappa(port++, function() {
      return this.enable('serve sammy');
    });
    c = t.client(zapp.app);
    return c.get('/zappa/sammy.js', function(err, res) {
      t.equal('content-type', res.headers['content-type'], 'application/javascript');
      return t.equal('length', res.headers['content-length'], '16854');
    });
  },
  zappa: function(t) {
    var c, zapp;
    t.expect('content-type', 'length');
    t.wait(3000);
    zapp = zappa(port++, function() {
      return this.enable('serve zappa');
    });
    c = t.client(zapp.app);
    return c.get('/zappa/zappa.js', function(err, res) {
      t.equal('content-type', res.headers['content-type'], 'application/javascript');
      return t.equal('length', res.headers['content-length'], '4685');
    });
  },
  'zappa (automatic)': function(t) {
    var c, zapp;
    t.expect('content-type', 'length');
    t.wait(3000);
    zapp = zappa(port++, function() {
      return this.client({
        '/index.js': function() {}
      });
    });
    c = t.client(zapp.app);
    return c.get('/zappa/zappa.js', function(err, res) {
      t.equal('content-type', res.headers['content-type'], 'application/javascript');
      return t.equal('length', res.headers['content-length'], '4685');
    });
  },
  minify: function(t) {
    var c, zapp;
    t.expect('zappa', 'client', 'shared', 'coffee', 'js');
    t.wait(3000);
    zapp = zappa(port++, function() {
      this.enable('serve zappa', 'minify');
      this.client({
        '/client.js': function() {
          return alert('foo');
        }
      });
      this.shared({
        '/shared.js': function() {
          if (typeof window !== "undefined" && window !== null) {
            return alert('foo');
          }
        }
      });
      this.coffee({
        '/coffee.js': function() {
          return alert('foo');
        }
      });
      return this.js({
        '/js.js': "alert('foo');"
      });
    });
    c = t.client(zapp.app);
    return c.get('/zappa/zappa.js', function(err, res) {
      return t.equal('zappa', res.headers['content-length'], '2492');
    });
  }
});


Prompt:
Convert this JavaScript to CoffeeScript.
```javascript
({
  sammy: function(t) {
    var c, zapp;
    t.expect('content-type', 'length');
    t.wait(3000);
    zapp = zappa(port++, function() {
      return this.enable('serve sammy');
    });
    c = t.client(zapp.app);
    return c.get('/zappa/sammy.js', function(err, res) {
      t.equal('content-type', res.headers['content-type'], 'application/javascript');
      return t.equal('length', res.headers['content-length'], '16854');
    });
  },
  zappa: function(t) {
    var c, zapp;
    t.expect('content-type', 'length');
    t.wait(3000);
    zapp = zappa(port++, function() {
      return this.enable('serve zappa');
    });
    c = t.client(zapp.app);
    return c.get('/zappa/zappa.js', function(err, res) {
      t.equal('content-type', res.headers['content-type'], 'application/javascript');
      return t.equal('length', res.headers['content-length'], '4685');
    });
  },
  'zappa (automatic)': function(t) {
    var c, zapp;
    t.expect('content-type', 'length');
    t.wait(3000);
    zapp = zappa(port++, function() {
      return this.client({
        '/index.js': function() {}
      });
    });
    c = t.client(zapp.app);
    return c.get('/zappa/zappa.js', function(err, res) {
      t.equal('content-type', res.headers['content-type'], 'application/javascript');
      return t.equal('length', res.headers['content-length'], '4685');
    });
  },
  minify: function(t) {
    var c, zapp;
    t.expect('zappa', 'client', 'shared', 'coffee', 'js');
    t.wait(3000);
    zapp = zappa(port++, function() {
      this.enable('serve zappa', 'minify');
      this.client({
        '/client.js': function() {
          return alert('foo');
        }
      });
      this.shared({
        '/shared.js': function() {
          if (typeof window !== "undefined" && window !== null) {
            return alert('foo');
          }
        }
      });
      this.coffee({
        '/coffee.js': function() {
          return alert('foo');
        }
      });
      return this.js({
        '/js.js': "alert('foo');"
      });
    });
    c = t.client(zapp.app);
    return c.get('/zappa/zappa.js', function(err, res) {
      return t.equal('zappa', res.headers['content-length'], '2492');
    });
  }
});
```

Response:
sammy: (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      @enable 'serve sammy'

    c = t.client(zapp.app)
    c.get '/zappa/sammy.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '16854'

  zappa: (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      @enable 'serve zappa'

    c = t.client(zapp.app)
    c.get '/zappa/zappa.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '4685'

  'zappa (automatic)': (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      @client '/index.js': ->

    c = t.client(zapp.app)
    c.get '/zappa/zappa.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '4685'

  minify: (t) ->
    t.expect 'zappa', 'client', 'shared', 'coffee', 'js'
    t.wait 3000

    zapp = zappa port++, ->
      @enable 'serve zappa', 'minify'
      @client '/client.js': -> alert 'foo'
      @shared '/shared.js': -> alert 'foo' if window?
      @coffee '/coffee.js': -> alert 'foo'
      @js '/js.js': "alert('foo');"

    c = t.client(zapp.app)
    c.get '/zappa/zappa.js', (err, res) ->
      t.equal 'zappa', res.headers['content-length'], '2492'


Prompt:
sammy: (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      @enable 'serve sammy'

    c = t.client(zapp.app)
    c.get '/zappa/sammy.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '16854'

  zappa: (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      @enable 'serve zappa'

    c = t.client(zapp.app)
    c.get '/zappa/zappa.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '4685'

  'zappa (automatic)': (t) ->

Response:
t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      @client '/index.js': ->

    c = t.client(zapp.app)
    c.get '/zappa/zappa.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '4685'

  minify: (t) ->
    t.expect 'zappa', 'client', 'shared', 'coffee', 'js'
    t.wait 3000

    zapp = zappa port++, ->
      @enable 'serve zappa', 'minify'
      @client '/client.js': -> alert 'foo'
      @shared '/shared.js': -> alert 'foo' if window?
      @coffee '/coffee.js': -> alert 'foo'
      @js '/js.js': "alert('foo');"

    c = t.client(zapp.app)
    c.get '/zappa/zappa.js', (err, res) ->
      t.equal 'zappa', res.headers['content-length'], '2492'


Response:
sammy: (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      @enable 'serve sammy'

    c = t.client(zapp.app)
    c.get '/zappa/sammy.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '16854'

  zappa: (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      @enable 'serve zappa'

    c = t.client(zapp.app)
    c.get '/zappa/zappa.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '4685'

  'zappa (automatic)': (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      @client '/index.js': ->

    c = t.client(zapp.app)
    c.get '/zappa/zappa.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '4685'


Prompt:
Convert this CoffeeScript to JavaScript.
```coffeescript
sammy: (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      @enable 'serve sammy'

    c = t.client(zapp.app)
    c.get '/zappa/sammy.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '16854'

  zappa: (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      @enable 'serve zappa'

    c = t.client(zapp.app)
    c.get '/zappa/zappa.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '4685'

  'zappa (automatic)': (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      @client '/index.js': ->

    c = t.client(zapp.app)
    c.get '/zappa/zappa.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '4685'
```

Response:
({
  sammy: function(t) {
    var c, zapp;
    t.expect('content-type', 'length');
    t.wait(3000);
    zapp = zappa(port++, function() {
      return this.enable('serve sammy');
    });
    c = t.client(zapp.app);
    return c.get('/zappa/sammy.js', function(err, res) {
      t.equal('content-type', res.headers['content-type'], 'application/javascript');
      return t.equal('length', res.headers['content-length'], '16854');
    });
  },
  zappa: function(t) {
    var c, zapp;
    t.expect('content-type', 'length');
    t.wait(3000);
    zapp = zappa(port++, function() {
      return this.enable('serve zappa');
    });
    c = t.client(zapp.app);
    return c.get('/zappa/zappa.js', function(err, res) {
      t.equal('content-type', res.headers['content-type'], 'application/javascript');
      return t.equal('length', res.headers['content-length'], '4685');
    });
  },
  'zappa (automatic)': function(t) {
    var c, zapp;
    t.expect('content-type', 'length');
    t.wait(3000);
    zapp = zappa(port++, function() {
      return this.client({
        '/index.js': function() {}
      });
    });
    c = t.client(zapp.app);
    return c.get('/zappa/zappa.js', function(err, res) {
      t.equal('content-type', res.headers['content-type'], 'application/javascript');
      return t.equal('length', res.headers['content-length'], '4685');
    });
  }
});


Prompt:
Convert this JavaScript to CoffeeScript.
```javascript
({
  sammy: function(t) {
    var c, zapp;
    t.expect('content-type', 'length');
    t.wait(3000);
    zapp = zappa(port++, function() {
      return this.enable('serve sammy');
    });
    c = t.client(zapp.app);
    return c.get('/zappa/sammy.js', function(err, res) {
      t.equal('content-type', res.headers['content-type'], 'application/javascript');
      return t.equal('length', res.headers['content-length'], '16854');
    });
  },
  zappa: function(t) {
    var c, zapp;
    t.expect('content-type', 'length');
    t.wait(3000);
    zapp = zappa(port++, function() {
      return this.enable('serve zappa');
    });
    c = t.client(zapp.app);
    return c.get('/zappa/zappa.js', function(err, res) {
      t.equal('content-type', res.headers['content-type'], 'application/javascript');
      return t.equal('length', res.headers['content-length'], '4685');
    });
  },
  'zappa (automatic)': function(t) {
    var c, zapp;
    t.expect('content-type', 'length');
    t.wait(3000);
    zapp = zappa(port++, function() {
      return this.client({
        '/index.js': function() {}
      });
    });
    c = t.client(zapp.app);
    return c.get('/zappa/zappa.js', function(err, res) {
      t.equal('content-type', res.headers['content-type'], 'application/javascript');
      return t.equal('length', res.headers['content-length'], '4685');
    });
  }
});
```

Response:
sammy: (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      @enable 'serve sammy'

    c = t.client(zapp.app)
    c.get '/zappa/sammy.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '16854'

  zappa: (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      @enable 'serve zappa'

    c = t.client(zapp.app)
    c.get '/zappa/zappa.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '4685'

  'zappa (automatic)': (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      @client '/index.js': ->

    c = t.client(zapp.app)
    c.get '/zappa/zappa.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '4685'


Prompt:
sammy: (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      @enable 'serve sammy'

    c = t.client(zapp.app)
    c.get '/zappa/sammy.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '16854'

  zappa: (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->

Response:
@enable 'serve zappa'

    c = t.client(zapp.app)
    c.get '/zappa/zappa.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '4685'

  'zappa (automatic)': (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      @client '/index.js': ->

    c = t.client(zapp.app)
    c.get '/zappa/zappa.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '4685'


Response:
@tests =
  client: (t) ->
    t.expect 1, 2
    t.wait 3000

    zapp = zappa port++, ->
      client '/index.js': ->
        get '#/': -> alert 'hi'

    c = t.client(zapp.app)
    c.get '/index.js', (err, res) ->
      t.equal 1, res.body, ';zappa.run(function () {\n            return get({\n              \'#/\': function() {\n                return alert(\'hi\');\n              }\n            });\n          });'
      t.equal 2, res.headers['content-type'], 'application/javascript'

  coffee: (t) ->
    t.expect 1, 2
    t.wait 3000

    zapp = zappa port++, ->
      coffee '/coffee.js': ->
        alert 'hi'

    c = t.client(zapp.app)
    c.get '/coffee.js', (err, res) ->
      t.equal 1, res.body, ';var __slice = Array.prototype.slice;var __hasProp = Object.prototype.hasOwnProperty;var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };var __extends = function(child, parent) {  for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; }  function ctor() { this.constructor = child; }  ctor.prototype = parent.prototype; child.prototype = new ctor; child.__super__ = parent.prototype;  return child; };var __indexOf = Array.prototype.indexOf || function(item) {  for (var i = 0, l = this.length; i < l; i++) {    if (this[i] === item) return i;  } return -1; };(function () {\n            return alert(\'hi\');\n          })();'
      t.equal 2, res.headers['content-type'], 'application/javascript'

  js: (t) ->
    t.expect 1, 2
    t.wait 3000

    zapp = zappa port++, ->
      js '/js.js': '''
        alert('hi');
      '''

    c = t.client(zapp.app)
    c.get '/js.js', (err, res) ->
      t.equal 1, res.body, "alert('hi');"
      t.equal 2, res.headers['content-type'], 'application/javascript'

  css: (t) ->
    t.expect 1, 2
    t.wait 3000

    zapp = zappa port++, ->
      css '/index.css': '''
        font-family: sans-serif;
      '''


Prompt:
Convert this CoffeeScript to JavaScript.
```coffeescript
@tests =
  client: (t) ->
    t.expect 1, 2
    t.wait 3000

    zapp = zappa port++, ->
      client '/index.js': ->
        get '#/': -> alert 'hi'

    c = t.client(zapp.app)
    c.get '/index.js', (err, res) ->
      t.equal 1, res.body, ';zappa.run(function () {\n            return get({\n              \'#/\': function() {\n                return alert(\'hi\');\n              }\n            });\n          });'
      t.equal 2, res.headers['content-type'], 'application/javascript'

  coffee: (t) ->
    t.expect 1, 2
    t.wait 3000

    zapp = zappa port++, ->
      coffee '/coffee.js': ->
        alert 'hi'

    c = t.client(zapp.app)
    c.get '/coffee.js', (err, res) ->
      t.equal 1, res.body, ';var __slice = Array.prototype.slice;var __hasProp = Object.prototype.hasOwnProperty;var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };var __extends = function(child, parent) {  for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; }  function ctor() { this.constructor = child; }  ctor.prototype = parent.prototype; child.prototype = new ctor; child.__super__ = parent.prototype;  return child; };var __indexOf = Array.prototype.indexOf || function(item) {  for (var i = 0, l = this.length; i < l; i++) {    if (this[i] === item) return i;  } return -1; };(function () {\n            return alert(\'hi\');\n          })();'
      t.equal 2, res.headers['content-type'], 'application/javascript'

  js: (t) ->
    t.expect 1, 2
    t.wait 3000

    zapp = zappa port++, ->
      js '/js.js': '''
        alert('hi');
      '''

    c = t.client(zapp.app)
    c.get '/js.js', (err, res) ->
      t.equal 1, res.body, "alert('hi');"
      t.equal 2, res.headers['content-type'], 'application/javascript'

  css: (t) ->
    t.expect 1, 2
    t.wait 3000

    zapp = zappa port++, ->
      css '/index.css': '''
        font-family: sans-serif;
      '''
```

Response:
this.tests = {
  client: function(t) {
    var c, zapp;
    t.expect(1, 2);
    t.wait(3000);
    zapp = zappa(port++, function() {
      return client({
        '/index.js': function() {
          return get({
            '#/': function() {
              return alert('hi');
            }
          });
        }
      });
    });
    c = t.client(zapp.app);
    return c.get('/index.js', function(err, res) {
      t.equal(1, res.body, ';zappa.run(function () {\n            return get({\n              \'#/\': function() {\n                return alert(\'hi\');\n              }\n            });\n          });');
      return t.equal(2, res.headers['content-type'], 'application/javascript');
    });
  },
  coffee: function(t) {
    var c, zapp;
    t.expect(1, 2);
    t.wait(3000);
    zapp = zappa(port++, function() {
      return coffee({
        '/coffee.js': function() {
          return alert('hi');
        }
      });
    });
    c = t.client(zapp.app);
    return c.get('/coffee.js', function(err, res) {
      t.equal(1, res.body, ';var __slice = Array.prototype.slice;var __hasProp = Object.prototype.hasOwnProperty;var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };var __extends = function(child, parent) {  for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; }  function ctor() { this.constructor = child; }  ctor.prototype = parent.prototype; child.prototype = new ctor; child.__super__ = parent.prototype;  return child; };var __indexOf = Array.prototype.indexOf || function(item) {  for (var i = 0, l = this.length; i < l; i++) {    if (this[i] === item) return i;  } return -1; };(function () {\n            return alert(\'hi\');\n          })();');
      return t.equal(2, res.headers['content-type'], 'application/javascript');
    });
  },
  js: function(t) {
    var c, zapp;
    t.expect(1, 2);
    t.wait(3000);
    zapp = zappa(port++, function() {
      return js({
        '/js.js': `alert('hi');`
      });
    });
    c = t.client(zapp.app);
    return c.get('/js.js', function(err, res) {
      t.equal(1, res.body, "alert('hi');");
      return t.equal(2, res.headers['content-type'], 'application/javascript');
    });
  },
  css: function(t) {
    var zapp;
    t.expect(1, 2);
    t.wait(3000);
    return zapp = zappa(port++, function() {
      return css({
        '/index.css': `font-family: sans-serif;`
      });
    });
  }
};


Prompt:
Convert this JavaScript to CoffeeScript.
```javascript
this.tests = {
  client: function(t) {
    var c, zapp;
    t.expect(1, 2);
    t.wait(3000);
    zapp = zappa(port++, function() {
      return client({
        '/index.js': function() {
          return get({
            '#/': function() {
              return alert('hi');
            }
          });
        }
      });
    });
    c = t.client(zapp.app);
    return c.get('/index.js', function(err, res) {
      t.equal(1, res.body, ';zappa.run(function () {\n            return get({\n              \'#/\': function() {\n                return alert(\'hi\');\n              }\n            });\n          });');
      return t.equal(2, res.headers['content-type'], 'application/javascript');
    });
  },
  coffee: function(t) {
    var c, zapp;
    t.expect(1, 2);
    t.wait(3000);
    zapp = zappa(port++, function() {
      return coffee({
        '/coffee.js': function() {
          return alert('hi');
        }
      });
    });
    c = t.client(zapp.app);
    return c.get('/coffee.js', function(err, res) {
      t.equal(1, res.body, ';var __slice = Array.prototype.slice;var __hasProp = Object.prototype.hasOwnProperty;var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };var __extends = function(child, parent) {  for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; }  function ctor() { this.constructor = child; }  ctor.prototype = parent.prototype; child.prototype = new ctor; child.__super__ = parent.prototype;  return child; };var __indexOf = Array.prototype.indexOf || function(item) {  for (var i = 0, l = this.length; i < l; i++) {    if (this[i] === item) return i;  } return -1; };(function () {\n            return alert(\'hi\');\n          })();');
      return t.equal(2, res.headers['content-type'], 'application/javascript');
    });
  },
  js: function(t) {
    var c, zapp;
    t.expect(1, 2);
    t.wait(3000);
    zapp = zappa(port++, function() {
      return js({
        '/js.js': `alert('hi');`
      });
    });
    c = t.client(zapp.app);
    return c.get('/js.js', function(err, res) {
      t.equal(1, res.body, "alert('hi');");
      return t.equal(2, res.headers['content-type'], 'application/javascript');
    });
  },
  css: function(t) {
    var zapp;
    t.expect(1, 2);
    t.wait(3000);
    return zapp = zappa(port++, function() {
      return css({
        '/index.css': `font-family: sans-serif;`
      });
    });
  }
};
```

Response:
@tests =
  client: (t) ->
    t.expect 1, 2
    t.wait 3000

    zapp = zappa port++, ->
      client '/index.js': ->
        get '#/': -> alert 'hi'

    c = t.client(zapp.app)
    c.get '/index.js', (err, res) ->
      t.equal 1, res.body, ';zappa.run(function () {\n            return get({\n              \'#/\': function() {\n                return alert(\'hi\');\n              }\n            });\n          });'
      t.equal 2, res.headers['content-type'], 'application/javascript'

  coffee: (t) ->
    t.expect 1, 2
    t.wait 3000

    zapp = zappa port++, ->
      coffee '/coffee.js': ->
        alert 'hi'

    c = t.client(zapp.app)
    c.get '/coffee.js', (err, res) ->
      t.equal 1, res.body, ';var __slice = Array.prototype.slice;var __hasProp = Object.prototype.hasOwnProperty;var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };var __extends = function(child, parent) {  for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; }  function ctor() { this.constructor = child; }  ctor.prototype = parent.prototype; child.prototype = new ctor; child.__super__ = parent.prototype;  return child; };var __indexOf = Array.prototype.indexOf || function(item) {  for (var i = 0, l = this.length; i < l; i++) {    if (this[i] === item) return i;  } return -1; };(function () {\n            return alert(\'hi\');\n          })();'
      t.equal 2, res.headers['content-type'], 'application/javascript'

  js: (t) ->
    t.expect 1, 2
    t.wait 3000

    zapp = zappa port++, ->
      js '/js.js': '''
        alert('hi');
      '''

    c = t.client(zapp.app)
    c.get '/js.js', (err, res) ->
      t.equal 1, res.body, "alert('hi');"
      t.equal 2, res.headers['content-type'], 'application/javascript'

  css: (t) ->
    t.expect 1, 2
    t.wait 3000

    zapp = zappa port++, ->
      css '/index.css': '''
        font-family: sans-serif;
      '''


Prompt:
@tests =
  client: (t) ->
    t.expect 1, 2
    t.wait 3000

    zapp = zappa port++, ->
      client '/index.js': ->
        get '#/': -> alert 'hi'

    c = t.client(zapp.app)
    c.get '/index.js', (err, res) ->
      t.equal 1, res.body, ';zappa.run(function () {\n            return get({\n              \'#/\': function() {\n                return alert(\'hi\');\n              }\n            });\n          });'
      t.equal 2, res.headers['content-type'], 'application/javascript'

  coffee: (t) ->
    t.expect 1, 2
    t.wait 3000

    zapp = zappa port++, ->
      coffee '/coffee.js': ->
        alert 'hi'

    c = t.client(zapp.app)
    c.get '/coffee.js', (err, res) ->

Response:
t.equal 1, res.body, ';var __slice = Array.prototype.slice;var __hasProp = Object.prototype.hasOwnProperty;var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };var __extends = function(child, parent) {  for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; }  function ctor() { this.constructor = child; }  ctor.prototype = parent.prototype; child.prototype = new ctor; child.__super__ = parent.prototype;  return child; };var __indexOf = Array.prototype.indexOf || function(item) {  for (var i = 0, l = this.length; i < l; i++) {    if (this[i] === item) return i;  } return -1; };(function () {\n            return alert(\'hi\');\n          })();'
      t.equal 2, res.headers['content-type'], 'application/javascript'

  js: (t) ->
    t.expect 1, 2
    t.wait 3000

    zapp = zappa port++, ->
      js '/js.js': '''
        alert('hi');
      '''

    c = t.client(zapp.app)
    c.get '/js.js', (err, res) ->
      t.equal 1, res.body, "alert('hi');"
      t.equal 2, res.headers['content-type'], 'application/javascript'

  css: (t) ->
    t.expect 1, 2
    t.wait 3000

    zapp = zappa port++, ->
      css '/index.css': '''
        font-family: sans-serif;
      '''


Response:
c = t.client(zapp.app)
    c.get '/index.css', (err, res) ->
      t.equal 1, res.body, 'font-family: sans-serif;'
      t.equal 2, res.headers['content-type'], 'text/css'

  stylus: (t) ->
    t.expect 'header', 'body'
    t.wait 3000

    zapp = zappa port++, ->
      stylus '/index.css': '''
        border-radius()
          -webkit-border-radius arguments
          -moz-border-radius arguments
          border-radius arguments

        body
          font 12px Helvetica, Arial, sans-serif

        a.button
          border-radius 5px
      '''

    c = t.client(zapp.app)
    c.get '/index.css', (err, res) ->
      t.equal 'header', res.headers['content-type'], 'text/css'
      t.equal 'body', res.body, '''
        body {
          font: 12px Helvetica, Arial, sans-serif;
        }
        a.button {
          -webkit-border-radius: 5px;
          -moz-border-radius: 5px;
          border-radius: 5px;
        }

      '''

  jquery: (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      enable 'serve jquery'

    c = t.client(zapp.app)
    c.get '/zappa/jquery.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '92334'


Prompt:
c = t.client(zapp.app)
    c.get '/index.css', (err, res) ->
      t.equal 1, res.body, 'font-family: sans-serif;'
      t.equal 2, res.headers['content-type'], 'text/css'

  stylus: (t) ->
    t.expect 'header', 'body'
    t.wait 3000

    zapp = zappa port++, ->
      stylus '/index.css': '''
        border-radius()
          -webkit-border-radius arguments
          -moz-border-radius arguments
          border-radius arguments

        body
          font 12px Helvetica, Arial, sans-serif

        a.button
          border-radius 5px
      '''

    c = t.client(zapp.app)

Response:
c.get '/index.css', (err, res) ->
      t.equal 'header', res.headers['content-type'], 'text/css'
      t.equal 'body', res.body, '''
        body {
          font: 12px Helvetica, Arial, sans-serif;
        }
        a.button {
          -webkit-border-radius: 5px;
          -moz-border-radius: 5px;
          border-radius: 5px;
        }

      '''

  jquery: (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      enable 'serve jquery'

    c = t.client(zapp.app)
    c.get '/zappa/jquery.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '92334'


Response:
sammy: (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      enable 'serve sammy'

    c = t.client(zapp.app)
    c.get '/zappa/sammy.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '16854'

  zappa: (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      enable 'serve zappa'

    c = t.client(zapp.app)
    c.get '/zappa/zappa.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '7037'

  'zappa (automatic)': (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      client '/index.js': ->

    c = t.client(zapp.app)
    c.get '/zappa/zappa.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '7037'


Prompt:
Convert this CoffeeScript to JavaScript.
```coffeescript
sammy: (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      enable 'serve sammy'

    c = t.client(zapp.app)
    c.get '/zappa/sammy.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '16854'

  zappa: (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      enable 'serve zappa'

    c = t.client(zapp.app)
    c.get '/zappa/zappa.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '7037'

  'zappa (automatic)': (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      client '/index.js': ->

    c = t.client(zapp.app)
    c.get '/zappa/zappa.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '7037'
```

Response:
({
  sammy: function(t) {
    var c, zapp;
    t.expect('content-type', 'length');
    t.wait(3000);
    zapp = zappa(port++, function() {
      return enable('serve sammy');
    });
    c = t.client(zapp.app);
    return c.get('/zappa/sammy.js', function(err, res) {
      t.equal('content-type', res.headers['content-type'], 'application/javascript');
      return t.equal('length', res.headers['content-length'], '16854');
    });
  },
  zappa: function(t) {
    var c, zapp;
    t.expect('content-type', 'length');
    t.wait(3000);
    zapp = zappa(port++, function() {
      return enable('serve zappa');
    });
    c = t.client(zapp.app);
    return c.get('/zappa/zappa.js', function(err, res) {
      t.equal('content-type', res.headers['content-type'], 'application/javascript');
      return t.equal('length', res.headers['content-length'], '7037');
    });
  },
  'zappa (automatic)': function(t) {
    var c, zapp;
    t.expect('content-type', 'length');
    t.wait(3000);
    zapp = zappa(port++, function() {
      return client({
        '/index.js': function() {}
      });
    });
    c = t.client(zapp.app);
    return c.get('/zappa/zappa.js', function(err, res) {
      t.equal('content-type', res.headers['content-type'], 'application/javascript');
      return t.equal('length', res.headers['content-length'], '7037');
    });
  }
});


Prompt:
Convert this JavaScript to CoffeeScript.
```javascript
({
  sammy: function(t) {
    var c, zapp;
    t.expect('content-type', 'length');
    t.wait(3000);
    zapp = zappa(port++, function() {
      return enable('serve sammy');
    });
    c = t.client(zapp.app);
    return c.get('/zappa/sammy.js', function(err, res) {
      t.equal('content-type', res.headers['content-type'], 'application/javascript');
      return t.equal('length', res.headers['content-length'], '16854');
    });
  },
  zappa: function(t) {
    var c, zapp;
    t.expect('content-type', 'length');
    t.wait(3000);
    zapp = zappa(port++, function() {
      return enable('serve zappa');
    });
    c = t.client(zapp.app);
    return c.get('/zappa/zappa.js', function(err, res) {
      t.equal('content-type', res.headers['content-type'], 'application/javascript');
      return t.equal('length', res.headers['content-length'], '7037');
    });
  },
  'zappa (automatic)': function(t) {
    var c, zapp;
    t.expect('content-type', 'length');
    t.wait(3000);
    zapp = zappa(port++, function() {
      return client({
        '/index.js': function() {}
      });
    });
    c = t.client(zapp.app);
    return c.get('/zappa/zappa.js', function(err, res) {
      t.equal('content-type', res.headers['content-type'], 'application/javascript');
      return t.equal('length', res.headers['content-length'], '7037');
    });
  }
});
```

Response:
sammy: (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      enable 'serve sammy'

    c = t.client(zapp.app)
    c.get '/zappa/sammy.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '16854'

  zappa: (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      enable 'serve zappa'

    c = t.client(zapp.app)
    c.get '/zappa/zappa.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '7037'

  'zappa (automatic)': (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      client '/index.js': ->

    c = t.client(zapp.app)
    c.get '/zappa/zappa.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '7037'


Prompt:
sammy: (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      enable 'serve sammy'

    c = t.client(zapp.app)
    c.get '/zappa/sammy.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '16854'

  zappa: (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->

Response:
enable 'serve zappa'

    c = t.client(zapp.app)
    c.get '/zappa/zappa.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '7037'

  'zappa (automatic)': (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      client '/index.js': ->

    c = t.client(zapp.app)
    c.get '/zappa/zappa.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '7037'


Response:
sammy: (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      enable 'serve sammy'

    c = t.client(zapp.app)
    c.get '/zappa/sammy.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '16854'

  zappa: (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      enable 'serve zappa'

    c = t.client(zapp.app)
    c.get '/zappa/zappa.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '6865'

  'zappa (automatic)': (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      client '/index.js': ->

    c = t.client(zapp.app)
    c.get '/zappa/zappa.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '6865'


Prompt:
Convert this CoffeeScript to JavaScript.
```coffeescript
sammy: (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      enable 'serve sammy'

    c = t.client(zapp.app)
    c.get '/zappa/sammy.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '16854'

  zappa: (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      enable 'serve zappa'

    c = t.client(zapp.app)
    c.get '/zappa/zappa.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '6865'

  'zappa (automatic)': (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      client '/index.js': ->

    c = t.client(zapp.app)
    c.get '/zappa/zappa.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '6865'
```

Response:
({
  sammy: function(t) {
    var c, zapp;
    t.expect('content-type', 'length');
    t.wait(3000);
    zapp = zappa(port++, function() {
      return enable('serve sammy');
    });
    c = t.client(zapp.app);
    return c.get('/zappa/sammy.js', function(err, res) {
      t.equal('content-type', res.headers['content-type'], 'application/javascript');
      return t.equal('length', res.headers['content-length'], '16854');
    });
  },
  zappa: function(t) {
    var c, zapp;
    t.expect('content-type', 'length');
    t.wait(3000);
    zapp = zappa(port++, function() {
      return enable('serve zappa');
    });
    c = t.client(zapp.app);
    return c.get('/zappa/zappa.js', function(err, res) {
      t.equal('content-type', res.headers['content-type'], 'application/javascript');
      return t.equal('length', res.headers['content-length'], '6865');
    });
  },
  'zappa (automatic)': function(t) {
    var c, zapp;
    t.expect('content-type', 'length');
    t.wait(3000);
    zapp = zappa(port++, function() {
      return client({
        '/index.js': function() {}
      });
    });
    c = t.client(zapp.app);
    return c.get('/zappa/zappa.js', function(err, res) {
      t.equal('content-type', res.headers['content-type'], 'application/javascript');
      return t.equal('length', res.headers['content-length'], '6865');
    });
  }
});


Prompt:
Convert this JavaScript to CoffeeScript.
```javascript
({
  sammy: function(t) {
    var c, zapp;
    t.expect('content-type', 'length');
    t.wait(3000);
    zapp = zappa(port++, function() {
      return enable('serve sammy');
    });
    c = t.client(zapp.app);
    return c.get('/zappa/sammy.js', function(err, res) {
      t.equal('content-type', res.headers['content-type'], 'application/javascript');
      return t.equal('length', res.headers['content-length'], '16854');
    });
  },
  zappa: function(t) {
    var c, zapp;
    t.expect('content-type', 'length');
    t.wait(3000);
    zapp = zappa(port++, function() {
      return enable('serve zappa');
    });
    c = t.client(zapp.app);
    return c.get('/zappa/zappa.js', function(err, res) {
      t.equal('content-type', res.headers['content-type'], 'application/javascript');
      return t.equal('length', res.headers['content-length'], '6865');
    });
  },
  'zappa (automatic)': function(t) {
    var c, zapp;
    t.expect('content-type', 'length');
    t.wait(3000);
    zapp = zappa(port++, function() {
      return client({
        '/index.js': function() {}
      });
    });
    c = t.client(zapp.app);
    return c.get('/zappa/zappa.js', function(err, res) {
      t.equal('content-type', res.headers['content-type'], 'application/javascript');
      return t.equal('length', res.headers['content-length'], '6865');
    });
  }
});
```

Response:
sammy: (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      enable 'serve sammy'

    c = t.client(zapp.app)
    c.get '/zappa/sammy.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '16854'

  zappa: (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      enable 'serve zappa'

    c = t.client(zapp.app)
    c.get '/zappa/zappa.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '6865'

  'zappa (automatic)': (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      client '/index.js': ->

    c = t.client(zapp.app)
    c.get '/zappa/zappa.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '6865'


Prompt:
sammy: (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      enable 'serve sammy'

    c = t.client(zapp.app)
    c.get '/zappa/sammy.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '16854'

  zappa: (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->

Response:
enable 'serve zappa'

    c = t.client(zapp.app)
    c.get '/zappa/zappa.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '6865'

  'zappa (automatic)': (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      client '/index.js': ->

    c = t.client(zapp.app)
    c.get '/zappa/zappa.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '6865'


Response:
sammy: (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      enable 'serve sammy'

    c = t.client(zapp.app)
    c.get '/zappa/sammy.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '16854'

  zappa: (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      enable 'serve zappa'

    c = t.client(zapp.app)
    c.get '/zappa/zappa.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '6864'

  'zappa (automatic)': (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      client '/index.js': ->

    c = t.client(zapp.app)
    c.get '/zappa/zappa.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '6864'


Prompt:
Convert this CoffeeScript to JavaScript.
```coffeescript
sammy: (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      enable 'serve sammy'

    c = t.client(zapp.app)
    c.get '/zappa/sammy.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '16854'

  zappa: (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      enable 'serve zappa'

    c = t.client(zapp.app)
    c.get '/zappa/zappa.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '6864'

  'zappa (automatic)': (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      client '/index.js': ->

    c = t.client(zapp.app)
    c.get '/zappa/zappa.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '6864'
```

Response:
({
  sammy: function(t) {
    var c, zapp;
    t.expect('content-type', 'length');
    t.wait(3000);
    zapp = zappa(port++, function() {
      return enable('serve sammy');
    });
    c = t.client(zapp.app);
    return c.get('/zappa/sammy.js', function(err, res) {
      t.equal('content-type', res.headers['content-type'], 'application/javascript');
      return t.equal('length', res.headers['content-length'], '16854');
    });
  },
  zappa: function(t) {
    var c, zapp;
    t.expect('content-type', 'length');
    t.wait(3000);
    zapp = zappa(port++, function() {
      return enable('serve zappa');
    });
    c = t.client(zapp.app);
    return c.get('/zappa/zappa.js', function(err, res) {
      t.equal('content-type', res.headers['content-type'], 'application/javascript');
      return t.equal('length', res.headers['content-length'], '6864');
    });
  },
  'zappa (automatic)': function(t) {
    var c, zapp;
    t.expect('content-type', 'length');
    t.wait(3000);
    zapp = zappa(port++, function() {
      return client({
        '/index.js': function() {}
      });
    });
    c = t.client(zapp.app);
    return c.get('/zappa/zappa.js', function(err, res) {
      t.equal('content-type', res.headers['content-type'], 'application/javascript');
      return t.equal('length', res.headers['content-length'], '6864');
    });
  }
});


Prompt:
Convert this JavaScript to CoffeeScript.
```javascript
({
  sammy: function(t) {
    var c, zapp;
    t.expect('content-type', 'length');
    t.wait(3000);
    zapp = zappa(port++, function() {
      return enable('serve sammy');
    });
    c = t.client(zapp.app);
    return c.get('/zappa/sammy.js', function(err, res) {
      t.equal('content-type', res.headers['content-type'], 'application/javascript');
      return t.equal('length', res.headers['content-length'], '16854');
    });
  },
  zappa: function(t) {
    var c, zapp;
    t.expect('content-type', 'length');
    t.wait(3000);
    zapp = zappa(port++, function() {
      return enable('serve zappa');
    });
    c = t.client(zapp.app);
    return c.get('/zappa/zappa.js', function(err, res) {
      t.equal('content-type', res.headers['content-type'], 'application/javascript');
      return t.equal('length', res.headers['content-length'], '6864');
    });
  },
  'zappa (automatic)': function(t) {
    var c, zapp;
    t.expect('content-type', 'length');
    t.wait(3000);
    zapp = zappa(port++, function() {
      return client({
        '/index.js': function() {}
      });
    });
    c = t.client(zapp.app);
    return c.get('/zappa/zappa.js', function(err, res) {
      t.equal('content-type', res.headers['content-type'], 'application/javascript');
      return t.equal('length', res.headers['content-length'], '6864');
    });
  }
});
```

Response:
sammy: (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      enable 'serve sammy'

    c = t.client(zapp.app)
    c.get '/zappa/sammy.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '16854'

  zappa: (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      enable 'serve zappa'

    c = t.client(zapp.app)
    c.get '/zappa/zappa.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '6864'

  'zappa (automatic)': (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      client '/index.js': ->

    c = t.client(zapp.app)
    c.get '/zappa/zappa.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '6864'


Prompt:
sammy: (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      enable 'serve sammy'

    c = t.client(zapp.app)
    c.get '/zappa/sammy.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '16854'

  zappa: (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->

Response:
enable 'serve zappa'

    c = t.client(zapp.app)
    c.get '/zappa/zappa.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '6864'

  'zappa (automatic)': (t) ->
    t.expect 'content-type', 'length'
    t.wait 3000

    zapp = zappa port++, ->
      client '/index.js': ->

    c = t.client(zapp.app)
    c.get '/zappa/zappa.js', (err, res) ->
      t.equal 'content-type', res.headers['content-type'], 'application/javascript'
      t.equal 'length', res.headers['content-length'], '6864'


Response:
module.exports =
  client: ->
    t = zappa ->
      client '/index.js': ->
        get '#/': -> alert 'hi'
    headers = 'Content-Type': 'application/javascript'
    body = ';zappa.run(function () {\n            return get({\n              \'#/\': function() {\n                return alert(\'hi\');\n              }\n            });\n          });'
    t.response {url: '/index.js'}, {headers, body}

  coffee: ->
    t = zappa ->
      coffee '/coffee.js': ->
        alert 'hi'
    headers = 'Content-Type': 'application/javascript'
    body = ';var __slice = Array.prototype.slice;var __hasProp = Object.prototype.hasOwnProperty;var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };var __extends = function(child, parent) {  for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; }  function ctor() { this.constructor = child; }  ctor.prototype = parent.prototype; child.prototype = new ctor; child.__super__ = parent.prototype;  return child; };var __indexOf = Array.prototype.indexOf || function(item) {  for (var i = 0, l = this.length; i < l; i++) {    if (this[i] === item) return i;  } return -1; };(function () {\n            return alert(\'hi\');\n          })();'
    t.response {url: '/coffee.js'}, {headers, body}

  js: ->
    t = zappa ->
      js '/js.js': '''
        alert('hi');
      '''
    headers = 'Content-Type': 'application/javascript'
    body = "alert('hi');"
    t.response {url: '/js.js'}, {headers, body}

  css: ->
    t = zappa ->
      css '/index.css': '''
        font-family: sans-serif;
      '''
    headers = 'Content-Type': 'text/css'
    body = 'font-family: sans-serif;'
    t.response {url: '/index.css'}, {headers, body}

  stylus: ->
    t = zappa ->
      stylus '/index.css': '''
        border-radius()
          -webkit-border-radius arguments
          -moz-border-radius arguments
          border-radius arguments

        body
          font 12px Helvetica, Arial, sans-serif

        a.button
          border-radius 5px
      '''
    headers = 'Content-Type': 'text/css'


Prompt:
Convert this CoffeeScript to JavaScript.
```coffeescript
module.exports =
  client: ->
    t = zappa ->
      client '/index.js': ->
        get '#/': -> alert 'hi'
    headers = 'Content-Type': 'application/javascript'
    body = ';zappa.run(function () {\n            return get({\n              \'#/\': function() {\n                return alert(\'hi\');\n              }\n            });\n          });'
    t.response {url: '/index.js'}, {headers, body}

  coffee: ->
    t = zappa ->
      coffee '/coffee.js': ->
        alert 'hi'
    headers = 'Content-Type': 'application/javascript'
    body = ';var __slice = Array.prototype.slice;var __hasProp = Object.prototype.hasOwnProperty;var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };var __extends = function(child, parent) {  for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; }  function ctor() { this.constructor = child; }  ctor.prototype = parent.prototype; child.prototype = new ctor; child.__super__ = parent.prototype;  return child; };var __indexOf = Array.prototype.indexOf || function(item) {  for (var i = 0, l = this.length; i < l; i++) {    if (this[i] === item) return i;  } return -1; };(function () {\n            return alert(\'hi\');\n          })();'
    t.response {url: '/coffee.js'}, {headers, body}

  js: ->
    t = zappa ->
      js '/js.js': '''
        alert('hi');
      '''
    headers = 'Content-Type': 'application/javascript'
    body = "alert('hi');"
    t.response {url: '/js.js'}, {headers, body}

  css: ->
    t = zappa ->
      css '/index.css': '''
        font-family: sans-serif;
      '''
    headers = 'Content-Type': 'text/css'
    body = 'font-family: sans-serif;'
    t.response {url: '/index.css'}, {headers, body}

  stylus: ->
    t = zappa ->
      stylus '/index.css': '''
        border-radius()
          -webkit-border-radius arguments
          -moz-border-radius arguments
          border-radius arguments

        body
          font 12px Helvetica, Arial, sans-serif

        a.button
          border-radius 5px
      '''
    headers = 'Content-Type': 'text/css'
```

Response:
module.exports = {
  client: function() {
    var body, headers, t;
    t = zappa(function() {
      return client({
        '/index.js': function() {
          return get({
            '#/': function() {
              return alert('hi');
            }
          });
        }
      });
    });
    headers = {
      'Content-Type': 'application/javascript'
    };
    body = ';zappa.run(function () {\n            return get({\n              \'#/\': function() {\n                return alert(\'hi\');\n              }\n            });\n          });';
    return t.response({
      url: '/index.js'
    }, {headers, body});
  },
  coffee: function() {
    var body, headers, t;
    t = zappa(function() {
      return coffee({
        '/coffee.js': function() {
          return alert('hi');
        }
      });
    });
    headers = {
      'Content-Type': 'application/javascript'
    };
    body = ';var __slice = Array.prototype.slice;var __hasProp = Object.prototype.hasOwnProperty;var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };var __extends = function(child, parent) {  for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; }  function ctor() { this.constructor = child; }  ctor.prototype = parent.prototype; child.prototype = new ctor; child.__super__ = parent.prototype;  return child; };var __indexOf = Array.prototype.indexOf || function(item) {  for (var i = 0, l = this.length; i < l; i++) {    if (this[i] === item) return i;  } return -1; };(function () {\n            return alert(\'hi\');\n          })();';
    return t.response({
      url: '/coffee.js'
    }, {headers, body});
  },
  js: function() {
    var body, headers, t;
    t = zappa(function() {
      return js({
        '/js.js': `alert('hi');`
      });
    });
    headers = {
      'Content-Type': 'application/javascript'
    };
    body = "alert('hi');";
    return t.response({
      url: '/js.js'
    }, {headers, body});
  },
  css: function() {
    var body, headers, t;
    t = zappa(function() {
      return css({
        '/index.css': `font-family: sans-serif;`
      });
    });
    headers = {
      'Content-Type': 'text/css'
    };
    body = 'font-family: sans-serif;';
    return t.response({
      url: '/index.css'
    }, {headers, body});
  },
  stylus: function() {
    var headers, t;
    t = zappa(function() {
      return stylus({
        '/index.css': `border-radius()
  -webkit-border-radius arguments
  -moz-border-radius arguments
  border-radius arguments

body
  font 12px Helvetica, Arial, sans-serif

a.button
  border-radius 5px`
      });
    });
    return headers = {
      'Content-Type': 'text/css'
    };
  }
};


Prompt:
Convert this JavaScript to CoffeeScript.
```javascript
module.exports = {
  client: function() {
    var body, headers, t;
    t = zappa(function() {
      return client({
        '/index.js': function() {
          return get({
            '#/': function() {
              return alert('hi');
            }
          });
        }
      });
    });
    headers = {
      'Content-Type': 'application/javascript'
    };
    body = ';zappa.run(function () {\n            return get({\n              \'#/\': function() {\n                return alert(\'hi\');\n              }\n            });\n          });';
    return t.response({
      url: '/index.js'
    }, {headers, body});
  },
  coffee: function() {
    var body, headers, t;
    t = zappa(function() {
      return coffee({
        '/coffee.js': function() {
          return alert('hi');
        }
      });
    });
    headers = {
      'Content-Type': 'application/javascript'
    };
    body = ';var __slice = Array.prototype.slice;var __hasProp = Object.prototype.hasOwnProperty;var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };var __extends = function(child, parent) {  for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; }  function ctor() { this.constructor = child; }  ctor.prototype = parent.prototype; child.prototype = new ctor; child.__super__ = parent.prototype;  return child; };var __indexOf = Array.prototype.indexOf || function(item) {  for (var i = 0, l = this.length; i < l; i++) {    if (this[i] === item) return i;  } return -1; };(function () {\n            return alert(\'hi\');\n          })();';
    return t.response({
      url: '/coffee.js'
    }, {headers, body});
  },
  js: function() {
    var body, headers, t;
    t = zappa(function() {
      return js({
        '/js.js': `alert('hi');`
      });
    });
    headers = {
      'Content-Type': 'application/javascript'
    };
    body = "alert('hi');";
    return t.response({
      url: '/js.js'
    }, {headers, body});
  },
  css: function() {
    var body, headers, t;
    t = zappa(function() {
      return css({
        '/index.css': `font-family: sans-serif;`
      });
    });
    headers = {
      'Content-Type': 'text/css'
    };
    body = 'font-family: sans-serif;';
    return t.response({
      url: '/index.css'
    }, {headers, body});
  },
  stylus: function() {
    var headers, t;
    t = zappa(function() {
      return stylus({
        '/index.css': `border-radius()
  -webkit-border-radius arguments
  -moz-border-radius arguments
  border-radius arguments

body
  font 12px Helvetica, Arial, sans-serif

a.button
  border-radius 5px`
      });
    });
    return headers = {
      'Content-Type': 'text/css'
    };
  }
};
```

Response:
module.exports =
  client: ->
    t = zappa ->
      client '/index.js': ->
        get '#/': -> alert 'hi'
    headers = 'Content-Type': 'application/javascript'
    body = ';zappa.run(function () {\n            return get({\n              \'#/\': function() {\n                return alert(\'hi\');\n              }\n            });\n          });'
    t.response {url: '/index.js'}, {headers, body}

  coffee: ->
    t = zappa ->
      coffee '/coffee.js': ->
        alert 'hi'
    headers = 'Content-Type': 'application/javascript'
    body = ';var __slice = Array.prototype.slice;var __hasProp = Object.prototype.hasOwnProperty;var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };var __extends = function(child, parent) {  for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; }  function ctor() { this.constructor = child; }  ctor.prototype = parent.prototype; child.prototype = new ctor; child.__super__ = parent.prototype;  return child; };var __indexOf = Array.prototype.indexOf || function(item) {  for (var i = 0, l = this.length; i < l; i++) {    if (this[i] === item) return i;  } return -1; };(function () {\n            return alert(\'hi\');\n          })();'
    t.response {url: '/coffee.js'}, {headers, body}

  js: ->
    t = zappa ->
      js '/js.js': '''
        alert('hi');
      '''
    headers = 'Content-Type': 'application/javascript'
    body = "alert('hi');"
    t.response {url: '/js.js'}, {headers, body}

  css: ->
    t = zappa ->
      css '/index.css': '''
        font-family: sans-serif;
      '''
    headers = 'Content-Type': 'text/css'
    body = 'font-family: sans-serif;'
    t.response {url: '/index.css'}, {headers, body}

  stylus: ->
    t = zappa ->
      stylus '/index.css': '''
        border-radius()
          -webkit-border-radius arguments
          -moz-border-radius arguments
          border-radius arguments

        body
          font 12px Helvetica, Arial, sans-serif

        a.button
          border-radius 5px
      '''
    headers = 'Content-Type': 'text/css'


Prompt:
module.exports =
  client: ->
    t = zappa ->
      client '/index.js': ->
        get '#/': -> alert 'hi'
    headers = 'Content-Type': 'application/javascript'
    body = ';zappa.run(function () {\n            return get({\n              \'#/\': function() {\n                return alert(\'hi\');\n              }\n            });\n          });'
    t.response {url: '/index.js'}, {headers, body}

  coffee: ->
    t = zappa ->
      coffee '/coffee.js': ->
        alert 'hi'
    headers = 'Content-Type': 'application/javascript'
    body = ';var __slice = Array.prototype.slice;var __hasProp = Object.prototype.hasOwnProperty;var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };var __extends = function(child, parent) {  for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; }  function ctor() { this.constructor = child; }  ctor.prototype = parent.prototype; child.prototype = new ctor; child.__super__ = parent.prototype;  return child; };var __indexOf = Array.prototype.indexOf || function(item) {  for (var i = 0, l = this.length; i < l; i++) {    if (this[i] === item) return i;  } return -1; };(function () {\n            return alert(\'hi\');\n          })();'
    t.response {url: '/coffee.js'}, {headers, body}

  js: ->
    t = zappa ->
      js '/js.js': '''
        alert('hi');
      '''
    headers = 'Content-Type': 'application/javascript'
    body = "alert('hi');"
    t.response {url: '/js.js'}, {headers, body}

Response:
css: ->
    t = zappa ->
      css '/index.css': '''
        font-family: sans-serif;
      '''
    headers = 'Content-Type': 'text/css'
    body = 'font-family: sans-serif;'
    t.response {url: '/index.css'}, {headers, body}

  stylus: ->
    t = zappa ->
      stylus '/index.css': '''
        border-radius()
          -webkit-border-radius arguments
          -moz-border-radius arguments
          border-radius arguments

        body
          font 12px Helvetica, Arial, sans-serif

        a.button
          border-radius 5px
      '''
    headers = 'Content-Type': 'text/css'


Response:
body = '''
      body {
        font: 12px Helvetica, Arial, sans-serif;
      }
      a.button {
        -webkit-border-radius: 5px;
        -moz-border-radius: 5px;
        border-radius: 5px;
      }

    '''
    t.response {url: '/index.css'}, {headers, body}

  jquery: ->
    t = zappa ->
      enable 'serve jquery'
    status = 200
    headers =
      'Content-Type': 'application/javascript'
      'Content-Length': '92334'
    t.response {url: '/zappa/jquery.js'}, {status, headers}

  sammy: ->
    t = zappa ->
      enable 'serve sammy'
    status = 200
    headers =
      'Content-Type': 'application/javascript'
      'Content-Length': '16854'
    t.response {url: '/zappa/sammy.js'}, {status, headers}

  zappa: ->
    t = zappa ->
      enable 'serve zappa'
    status = 200
    headers =
      'Content-Type': 'application/javascript'
      'Content-Length': '6864'
    t.response {url: '/zappa/zappa.js'}, {status, headers}

  'zappa (automatic)': ->
    t = zappa ->
      client '/index.js': ->
    status = 200
    headers =
      'Content-Type': 'application/javascript'
      'Content-Length': '6864'
    t.response {url: '/zappa/zappa.js'}, {status, headers}


Prompt:
body = '''
      body {
        font: 12px Helvetica, Arial, sans-serif;
      }
      a.button {
        -webkit-border-radius: 5px;
        -moz-border-radius: 5px;
        border-radius: 5px;
      }

    '''
    t.response {url: '/index.css'}, {headers, body}

  jquery: ->
    t = zappa ->
      enable 'serve jquery'
    status = 200
    headers =
      'Content-Type': 'application/javascript'
      'Content-Length': '92334'
    t.response {url: '/zappa/jquery.js'}, {status, headers}

  sammy: ->
    t = zappa ->

Response:
enable 'serve sammy'
    status = 200
    headers =
      'Content-Type': 'application/javascript'
      'Content-Length': '16854'
    t.response {url: '/zappa/sammy.js'}, {status, headers}

  zappa: ->
    t = zappa ->
      enable 'serve zappa'
    status = 200
    headers =
      'Content-Type': 'application/javascript'
      'Content-Length': '6864'
    t.response {url: '/zappa/zappa.js'}, {status, headers}

  'zappa (automatic)': ->
    t = zappa ->
      client '/index.js': ->
    status = 200
    headers =
      'Content-Type': 'application/javascript'
      'Content-Length': '6864'
    t.response {url: '/zappa/zappa.js'}, {status, headers}


Response:
zappa = require('./support/tester') require('../src/zappa')

module.exports =
  coffee: ->
    t = zappa ->
      coffee '/coffee.js': ->
        alert 'hi'
    headers = 'Content-Type': 'application/javascript'
    body = ';var __slice = Array.prototype.slice;var __hasProp = Object.prototype.hasOwnProperty;var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };var __extends = function(child, parent) {  for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; }  function ctor() { this.constructor = child; }  ctor.prototype = parent.prototype; child.prototype = new ctor; child.__super__ = parent.prototype;  return child; };var __indexOf = Array.prototype.indexOf || function(item) {  for (var i = 0, l = this.length; i < l; i++) {    if (this[i] === item) return i;  } return -1; };(function () {\n            return alert(\'hi\');\n          })();'
    t.response {url: '/coffee.js'}, {headers, body}

  js: ->
    t = zappa ->
      js '/js.js': '''
        alert('hi');
      '''
    headers = 'Content-Type': 'application/javascript'
    body = "alert('hi');"
    t.response {url: '/js.js'}, {headers, body}

  css: ->
    t = zappa ->
      css '/index.css': '''
        font-family: sans-serif;
      '''
    headers = 'Content-Type': 'text/css'
    body = 'font-family: sans-serif;'
    t.response {url: '/index.css'}, {headers, body}

  stylus: ->
    t = zappa ->
      stylus '/index.css': '''
        border-radius()
          -webkit-border-radius arguments
          -moz-border-radius arguments
          border-radius arguments

        body
          font 12px Helvetica, Arial, sans-serif

        a.button
          border-radius 5px
      '''
    headers = 'Content-Type': 'text/css'
    body = '''
      body {
        font: 12px Helvetica, Arial, sans-serif;
      }
      a.button {
        -webkit-border-radius: 5px;


Prompt:
zappa = require('./support/tester') require('../src/zappa')

module.exports =
  coffee: ->
    t = zappa ->
      coffee '/coffee.js': ->
        alert 'hi'
    headers = 'Content-Type': 'application/javascript'
    body = ';var __slice = Array.prototype.slice;var __hasProp = Object.prototype.hasOwnProperty;var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };var __extends = function(child, parent) {  for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; }  function ctor() { this.constructor = child; }  ctor.prototype = parent.prototype; child.prototype = new ctor; child.__super__ = parent.prototype;  return child; };var __indexOf = Array.prototype.indexOf || function(item) {  for (var i = 0, l = this.length; i < l; i++) {    if (this[i] === item) return i;  } return -1; };(function () {\n            return alert(\'hi\');\n          })();'
    t.response {url: '/coffee.js'}, {headers, body}

  js: ->
    t = zappa ->
      js '/js.js': '''
        alert('hi');
      '''
    headers = 'Content-Type': 'application/javascript'
    body = "alert('hi');"
    t.response {url: '/js.js'}, {headers, body}

  css: ->
    t = zappa ->
      css '/index.css': '''
        font-family: sans-serif;
      '''

Response:
headers = 'Content-Type': 'text/css'
    body = 'font-family: sans-serif;'
    t.response {url: '/index.css'}, {headers, body}

  stylus: ->
    t = zappa ->
      stylus '/index.css': '''
        border-radius()
          -webkit-border-radius arguments
          -moz-border-radius arguments
          border-radius arguments

        body
          font 12px Helvetica, Arial, sans-serif

        a.button
          border-radius 5px
      '''
    headers = 'Content-Type': 'text/css'
    body = '''
      body {
        font: 12px Helvetica, Arial, sans-serif;
      }
      a.button {
        -webkit-border-radius: 5px;


Response:
detect = require './detect'

exports.issueUrl = 'http://tburl.in/3e8ad2b0'
exports.feedbackUrl = 'https://jianliao.com/page/invite/e840f0402t'
exports.xiaoaiAvatar = 'https://dn-talk.oss.aliyuncs.com/images/icons/talkai@2x.png'
exports.emailIcon = 'https://dn-talk.oss.aliyuncs.com/icons/email@2x.png'

exports.iosAppUrl = 'https://itunes.apple.com/cn/app/talk-by-teambition/id922425179?mt=8'
exports.macAppUrl = 'https://dn-talk.oss.aliyuncs.com/app-downloads/talk.dmg'
exports.androidAppUrl  = 'https://dn-talk.oss.aliyuncs.com/downloads/talk-teambition-release.apk'
exports.windows32AppUrl = 'https://dn-talk.oss.aliyuncs.com/app-downloads/talk-win32-ia32.zip'
exports.windows64AppUrl = 'https://dn-talk.oss.aliyuncs.com/app-downloads/talk-win32-x64.zip'
exports.linux32AppUrl = 'https://dn-talk.oss.aliyuncs.com/app-downloads/talk-linux-ia32.tar.gz'
exports.linux64AppUrl = 'https://dn-talk.oss.aliyuncs.com/app-downloads/talk-linux-x64.tar.gz'

jianliaoPages = [
  /^\/site/
  /^\/blog/
  /^\/doc/
  /^\/page/
  /^\/v\d/
  /^\/t\//
]

exports.isInRoutes = (locationOrigin, href) ->
  isOrigin = href.indexOf(locationOrigin) is 0

  routePath = href.substr(locationOrigin.length)
  isException = jianliaoPages.some (route) ->
    routePath.match(route)?

  isOrigin and not isException


Prompt:
Convert this CoffeeScript to JavaScript.
```coffeescript
detect = require './detect'

exports.issueUrl = 'http://tburl.in/3e8ad2b0'
exports.feedbackUrl = 'https://jianliao.com/page/invite/e840f0402t'
exports.xiaoaiAvatar = 'https://dn-talk.oss.aliyuncs.com/images/icons/talkai@2x.png'
exports.emailIcon = 'https://dn-talk.oss.aliyuncs.com/icons/email@2x.png'

exports.iosAppUrl = 'https://itunes.apple.com/cn/app/talk-by-teambition/id922425179?mt=8'
exports.macAppUrl = 'https://dn-talk.oss.aliyuncs.com/app-downloads/talk.dmg'
exports.androidAppUrl  = 'https://dn-talk.oss.aliyuncs.com/downloads/talk-teambition-release.apk'
exports.windows32AppUrl = 'https://dn-talk.oss.aliyuncs.com/app-downloads/talk-win32-ia32.zip'
exports.windows64AppUrl = 'https://dn-talk.oss.aliyuncs.com/app-downloads/talk-win32-x64.zip'
exports.linux32AppUrl = 'https://dn-talk.oss.aliyuncs.com/app-downloads/talk-linux-ia32.tar.gz'
exports.linux64AppUrl = 'https://dn-talk.oss.aliyuncs.com/app-downloads/talk-linux-x64.tar.gz'

jianliaoPages = [
  /^\/site/
  /^\/blog/
  /^\/doc/
  /^\/page/
  /^\/v\d/
  /^\/t\//
]

exports.isInRoutes = (locationOrigin, href) ->
  isOrigin = href.indexOf(locationOrigin) is 0

  routePath = href.substr(locationOrigin.length)
  isException = jianliaoPages.some (route) ->
    routePath.match(route)?

  isOrigin and not isException
```

Response:
var detect, jianliaoPages;

detect = require('./detect');

exports.issueUrl = 'http://tburl.in/3e8ad2b0';

exports.feedbackUrl = 'https://jianliao.com/page/invite/e840f0402t';

exports.xiaoaiAvatar = 'https://dn-talk.oss.aliyuncs.com/images/icons/talkai@2x.png';

exports.emailIcon = 'https://dn-talk.oss.aliyuncs.com/icons/email@2x.png';

exports.iosAppUrl = 'https://itunes.apple.com/cn/app/talk-by-teambition/id922425179?mt=8';

exports.macAppUrl = 'https://dn-talk.oss.aliyuncs.com/app-downloads/talk.dmg';

exports.androidAppUrl = 'https://dn-talk.oss.aliyuncs.com/downloads/talk-teambition-release.apk';

exports.windows32AppUrl = 'https://dn-talk.oss.aliyuncs.com/app-downloads/talk-win32-ia32.zip';

exports.windows64AppUrl = 'https://dn-talk.oss.aliyuncs.com/app-downloads/talk-win32-x64.zip';

exports.linux32AppUrl = 'https://dn-talk.oss.aliyuncs.com/app-downloads/talk-linux-ia32.tar.gz';

exports.linux64AppUrl = 'https://dn-talk.oss.aliyuncs.com/app-downloads/talk-linux-x64.tar.gz';

jianliaoPages = [/^\/site/, /^\/blog/, /^\/doc/, /^\/page/, /^\/v\d/, /^\/t\//];

exports.isInRoutes = function(locationOrigin, href) {
  var isException, isOrigin, routePath;
  isOrigin = href.indexOf(locationOrigin) === 0;
  routePath = href.substr(locationOrigin.length);
  isException = jianliaoPages.some(function(route) {
    return routePath.match(route) != null;
  });
  return isOrigin && !isException;
};


Prompt:
Convert this JavaScript to CoffeeScript.
```javascript
var detect, jianliaoPages;

detect = require('./detect');

exports.issueUrl = 'http://tburl.in/3e8ad2b0';

exports.feedbackUrl = 'https://jianliao.com/page/invite/e840f0402t';

exports.xiaoaiAvatar = 'https://dn-talk.oss.aliyuncs.com/images/icons/talkai@2x.png';

exports.emailIcon = 'https://dn-talk.oss.aliyuncs.com/icons/email@2x.png';

exports.iosAppUrl = 'https://itunes.apple.com/cn/app/talk-by-teambition/id922425179?mt=8';

exports.macAppUrl = 'https://dn-talk.oss.aliyuncs.com/app-downloads/talk.dmg';

exports.androidAppUrl = 'https://dn-talk.oss.aliyuncs.com/downloads/talk-teambition-release.apk';

exports.windows32AppUrl = 'https://dn-talk.oss.aliyuncs.com/app-downloads/talk-win32-ia32.zip';

exports.windows64AppUrl = 'https://dn-talk.oss.aliyuncs.com/app-downloads/talk-win32-x64.zip';

exports.linux32AppUrl = 'https://dn-talk.oss.aliyuncs.com/app-downloads/talk-linux-ia32.tar.gz';

exports.linux64AppUrl = 'https://dn-talk.oss.aliyuncs.com/app-downloads/talk-linux-x64.tar.gz';

jianliaoPages = [/^\/site/, /^\/blog/, /^\/doc/, /^\/page/, /^\/v\d/, /^\/t\//];

exports.isInRoutes = function(locationOrigin, href) {
  var isException, isOrigin, routePath;
  isOrigin = href.indexOf(locationOrigin) === 0;
  routePath = href.substr(locationOrigin.length);
  isException = jianliaoPages.some(function(route) {
    return routePath.match(route) != null;
  });
  return isOrigin && !isException;
};
```

Response:
detect = require './detect'

exports.issueUrl = 'http://tburl.in/3e8ad2b0'
exports.feedbackUrl = 'https://jianliao.com/page/invite/e840f0402t'
exports.xiaoaiAvatar = 'https://dn-talk.oss.aliyuncs.com/images/icons/talkai@2x.png'
exports.emailIcon = 'https://dn-talk.oss.aliyuncs.com/icons/email@2x.png'

exports.iosAppUrl = 'https://itunes.apple.com/cn/app/talk-by-teambition/id922425179?mt=8'
exports.macAppUrl = 'https://dn-talk.oss.aliyuncs.com/app-downloads/talk.dmg'
exports.androidAppUrl  = 'https://dn-talk.oss.aliyuncs.com/downloads/talk-teambition-release.apk'
exports.windows32AppUrl = 'https://dn-talk.oss.aliyuncs.com/app-downloads/talk-win32-ia32.zip'
exports.windows64AppUrl = 'https://dn-talk.oss.aliyuncs.com/app-downloads/talk-win32-x64.zip'
exports.linux32AppUrl = 'https://dn-talk.oss.aliyuncs.com/app-downloads/talk-linux-ia32.tar.gz'
exports.linux64AppUrl = 'https://dn-talk.oss.aliyuncs.com/app-downloads/talk-linux-x64.tar.gz'

jianliaoPages = [
  /^\/site/
  /^\/blog/
  /^\/doc/
  /^\/page/
  /^\/v\d/
  /^\/t\//
]

exports.isInRoutes = (locationOrigin, href) ->
  isOrigin = href.indexOf(locationOrigin) is 0

  routePath = href.substr(locationOrigin.length)
  isException = jianliaoPages.some (route) ->
    routePath.match(route)?

  isOrigin and not isException


Prompt:
detect = require './detect'

exports.issueUrl = 'http://tburl.in/3e8ad2b0'
exports.feedbackUrl = 'https://jianliao.com/page/invite/e840f0402t'
exports.xiaoaiAvatar = 'https://dn-talk.oss.aliyuncs.com/images/icons/talkai@2x.png'
exports.emailIcon = 'https://dn-talk.oss.aliyuncs.com/icons/email@2x.png'

exports.iosAppUrl = 'https://itunes.apple.com/cn/app/talk-by-teambition/id922425179?mt=8'
exports.macAppUrl = 'https://dn-talk.oss.aliyuncs.com/app-downloads/talk.dmg'
exports.androidAppUrl  = 'https://dn-talk.oss.aliyuncs.com/downloads/talk-teambition-release.apk'
exports.windows32AppUrl = 'https://dn-talk.oss.aliyuncs.com/app-downloads/talk-win32-ia32.zip'
exports.windows64AppUrl = 'https://dn-talk.oss.aliyuncs.com/app-downloads/talk-win32-x64.zip'
exports.linux32AppUrl = 'https://dn-talk.oss.aliyuncs.com/app-downloads/talk-linux-ia32.tar.gz'
exports.linux64AppUrl = 'https://dn-talk.oss.aliyuncs.com/app-downloads/talk-linux-x64.tar.gz'

jianliaoPages = [

Response:
/^\/site/
  /^\/blog/
  /^\/doc/
  /^\/page/
  /^\/v\d/
  /^\/t\//
]

exports.isInRoutes = (locationOrigin, href) ->
  isOrigin = href.indexOf(locationOrigin) is 0

  routePath = href.substr(locationOrigin.length)
  isException = jianliaoPages.some (route) ->
    routePath.match(route)?

  isOrigin and not isException


Response:
module.exports = class Editor
  constructor: ->
    @_setupLayout()
    @_setupSerializer()
    @_setupProject()
    @_setupRevision()
    @_parseQueryString()

  _setupLayout: ->
    @layout = new Model.Layout()

  _setupProject: ->
    @loadFromLocalStorage()
    if !@project
      @createNewProject()

  _setupSerializer: ->
    builtInObjects = []
    for own name, object of @_builtIn()
      if _.isFunction(object)
        object = object.prototype
      Util.assignId(object, name)
      builtInObjects.push(object)
    @serializer = new Storage.Serializer(builtInObjects)

  # Checks if we should load an external JSON file based on the query string
  # (the ?stuff at the end of the URL).
  _parseQueryString: ->
    parsed = queryString.parse(location.search)
    if parsed.experimental == '1'
      @experimental = true
    if parsed.load
      @loadFromURL(parsed.load)

  # builtIn returns all of the built in classes and objects that are used as
  # the "anchors" for serialization and deserialization. That is, all of the
  # objects and classes which should not themselves be serialized but instead
  # be *referenced* from a serialization. When deserialized, these references
  # are then bound appropriately.
  _builtIn: ->
    builtIn = _.clone(Model)
    builtIn["SpreadEnv"] = Dataflow.SpreadEnv
    builtIn["Matrix"] = Util.Matrix
    return builtIn

  # TODO: get version via build process / ENV variable?
  version: "0.4.1"

  loadJsonStringIntoProject: (jsonString) ->
    json = JSON.parse(jsonString)


Prompt:
Convert this CoffeeScript to JavaScript.
```coffeescript
module.exports = class Editor
  constructor: ->
    @_setupLayout()
    @_setupSerializer()
    @_setupProject()
    @_setupRevision()
    @_parseQueryString()

  _setupLayout: ->
    @layout = new Model.Layout()

  _setupProject: ->
    @loadFromLocalStorage()
    if !@project
      @createNewProject()

  _setupSerializer: ->
    builtInObjects = []
    for own name, object of @_builtIn()
      if _.isFunction(object)
        object = object.prototype
      Util.assignId(object, name)
      builtInObjects.push(object)
    @serializer = new Storage.Serializer(builtInObjects)

  # Checks if we should load an external JSON file based on the query string
  # (the ?stuff at the end of the URL).
  _parseQueryString: ->
    parsed = queryString.parse(location.search)
    if parsed.experimental == '1'
      @experimental = true
    if parsed.load
      @loadFromURL(parsed.load)

  # builtIn returns all of the built in classes and objects that are used as
  # the "anchors" for serialization and deserialization. That is, all of the
  # objects and classes which should not themselves be serialized but instead
  # be *referenced* from a serialization. When deserialized, these references
  # are then bound appropriately.
  _builtIn: ->
    builtIn = _.clone(Model)
    builtIn["SpreadEnv"] = Dataflow.SpreadEnv
    builtIn["Matrix"] = Util.Matrix
    return builtIn

  # TODO: get version via build process / ENV variable?
  version: "0.4.1"

  loadJsonStringIntoProject: (jsonString) ->
    json = JSON.parse(jsonString)
```

Response:
var Editor,
  hasProp = {}.hasOwnProperty;

module.exports = Editor = (function() {
  class Editor {
    constructor() {
      this._setupLayout();
      this._setupSerializer();
      this._setupProject();
      this._setupRevision();
      this._parseQueryString();
    }

    _setupLayout() {
      return this.layout = new Model.Layout();
    }

    _setupProject() {
      this.loadFromLocalStorage();
      if (!this.project) {
        return this.createNewProject();
      }
    }

    _setupSerializer() {
      var builtInObjects, name, object, ref;
      builtInObjects = [];
      ref = this._builtIn();
      for (name in ref) {
        if (!hasProp.call(ref, name)) continue;
        object = ref[name];
        if (_.isFunction(object)) {
          object = object.prototype;
        }
        Util.assignId(object, name);
        builtInObjects.push(object);
      }
      return this.serializer = new Storage.Serializer(builtInObjects);
    }

    // Checks if we should load an external JSON file based on the query string
    // (the ?stuff at the end of the URL).
    _parseQueryString() {
      var parsed;
      parsed = queryString.parse(location.search);
      if (parsed.experimental === '1') {
        this.experimental = true;
      }
      if (parsed.load) {
        return this.loadFromURL(parsed.load);
      }
    }

    // builtIn returns all of the built in classes and objects that are used as
    // the "anchors" for serialization and deserialization. That is, all of the
    // objects and classes which should not themselves be serialized but instead
    // be *referenced* from a serialization. When deserialized, these references
    // are then bound appropriately.
    _builtIn() {
      var builtIn;
      builtIn = _.clone(Model);
      builtIn["SpreadEnv"] = Dataflow.SpreadEnv;
      builtIn["Matrix"] = Util.Matrix;
      return builtIn;
    }

    loadJsonStringIntoProject(jsonString) {
      var json;
      return json = JSON.parse(jsonString);
    }

  };

  // TODO: get version via build process / ENV variable?
  Editor.prototype.version = "0.4.1";

  return Editor;

}).call(this);


Prompt:
Convert this JavaScript to CoffeeScript.
```javascript
var Editor,
  hasProp = {}.hasOwnProperty;

module.exports = Editor = (function() {
  class Editor {
    constructor() {
      this._setupLayout();
      this._setupSerializer();
      this._setupProject();
      this._setupRevision();
      this._parseQueryString();
    }

    _setupLayout() {
      return this.layout = new Model.Layout();
    }

    _setupProject() {
      this.loadFromLocalStorage();
      if (!this.project) {
        return this.createNewProject();
      }
    }

    _setupSerializer() {
      var builtInObjects, name, object, ref;
      builtInObjects = [];
      ref = this._builtIn();
      for (name in ref) {
        if (!hasProp.call(ref, name)) continue;
        object = ref[name];
        if (_.isFunction(object)) {
          object = object.prototype;
        }
        Util.assignId(object, name);
        builtInObjects.push(object);
      }
      return this.serializer = new Storage.Serializer(builtInObjects);
    }

    // Checks if we should load an external JSON file based on the query string
    // (the ?stuff at the end of the URL).
    _parseQueryString() {
      var parsed;
      parsed = queryString.parse(location.search);
      if (parsed.experimental === '1') {
        this.experimental = true;
      }
      if (parsed.load) {
        return this.loadFromURL(parsed.load);
      }
    }

    // builtIn returns all of the built in classes and objects that are used as
    // the "anchors" for serialization and deserialization. That is, all of the
    // objects and classes which should not themselves be serialized but instead
    // be *referenced* from a serialization. When deserialized, these references
    // are then bound appropriately.
    _builtIn() {
      var builtIn;
      builtIn = _.clone(Model);
      builtIn["SpreadEnv"] = Dataflow.SpreadEnv;
      builtIn["Matrix"] = Util.Matrix;
      return builtIn;
    }

    loadJsonStringIntoProject(jsonString) {
      var json;
      return json = JSON.parse(jsonString);
    }

  };

  // TODO: get version via build process / ENV variable?
  Editor.prototype.version = "0.4.1";

  return Editor;

}).call(this);
```

Response:
module.exports = class Editor
  constructor: ->
    @_setupLayout()
    @_setupSerializer()
    @_setupProject()
    @_setupRevision()
    @_parseQueryString()

  _setupLayout: ->
    @layout = new Model.Layout()

  _setupProject: ->
    @loadFromLocalStorage()
    if !@project
      @createNewProject()

  _setupSerializer: ->
    builtInObjects = []
    for own name, object of @_builtIn()
      if _.isFunction(object)
        object = object.prototype
      Util.assignId(object, name)
      builtInObjects.push(object)
    @serializer = new Storage.Serializer(builtInObjects)

  # Checks if we should load an external JSON file based on the query string
  # (the ?stuff at the end of the URL).
  _parseQueryString: ->
    parsed = queryString.parse(location.search)
    if parsed.experimental == '1'
      @experimental = true
    if parsed.load
      @loadFromURL(parsed.load)

  # builtIn returns all of the built in classes and objects that are used as
  # the "anchors" for serialization and deserialization. That is, all of the
  # objects and classes which should not themselves be serialized but instead
  # be *referenced* from a serialization. When deserialized, these references
  # are then bound appropriately.
  _builtIn: ->
    builtIn = _.clone(Model)
    builtIn["SpreadEnv"] = Dataflow.SpreadEnv
    builtIn["Matrix"] = Util.Matrix
    return builtIn

  # TODO: get version via build process / ENV variable?
  version: "0.4.1"

  loadJsonStringIntoProject: (jsonString) ->
    json = JSON.parse(jsonString)


Prompt:
module.exports = class Editor
  constructor: ->
    @_setupLayout()
    @_setupSerializer()
    @_setupProject()
    @_setupRevision()
    @_parseQueryString()

  _setupLayout: ->
    @layout = new Model.Layout()

  _setupProject: ->
    @loadFromLocalStorage()
    if !@project
      @createNewProject()

  _setupSerializer: ->
    builtInObjects = []
    for own name, object of @_builtIn()
      if _.isFunction(object)
        object = object.prototype
      Util.assignId(object, name)
      builtInObjects.push(object)
    @serializer = new Storage.Serializer(builtInObjects)

Response:
# Checks if we should load an external JSON file based on the query string
  # (the ?stuff at the end of the URL).
  _parseQueryString: ->
    parsed = queryString.parse(location.search)
    if parsed.experimental == '1'
      @experimental = true
    if parsed.load
      @loadFromURL(parsed.load)

  # builtIn returns all of the built in classes and objects that are used as
  # the "anchors" for serialization and deserialization. That is, all of the
  # objects and classes which should not themselves be serialized but instead
  # be *referenced* from a serialization. When deserialized, these references
  # are then bound appropriately.
  _builtIn: ->
    builtIn = _.clone(Model)
    builtIn["SpreadEnv"] = Dataflow.SpreadEnv
    builtIn["Matrix"] = Util.Matrix
    return builtIn

  # TODO: get version via build process / ENV variable?
  version: "0.4.1"

  loadJsonStringIntoProject: (jsonString) ->
    json = JSON.parse(jsonString)


Response:
# TODO: If the file format changes, this will need to check the version
    # and convert or fail appropriately.
    if json.type == "Apparatus"
      @project = @serializer.dejsonify(json)

  loadJsonStringIntoProjectFromExternalSource: (jsonString) ->
    @loadJsonStringIntoProject(jsonString)
    @checkpoint()
    Apparatus.refresh()  # HACK: calling Apparatus seems funky here.

  getJsonStringOfProject: ->
    json = @serializer.jsonify(@project)
    json.type = "Apparatus"
    json.version = @version
    jsonString = JSON.stringify(json)
    return jsonString

  createNewProject: ->
    @project = new Model.Project()

  # ===========================================================================
  # Local Storage
  # ===========================================================================

  localStorageName: "apparatus"

  saveToLocalStorage: ->
    jsonString = @getJsonStringOfProject()
    window.localStorage[@localStorageName] = jsonString
    return jsonString

  loadFromLocalStorage: ->
    jsonString = window.localStorage[@localStorageName]
    if jsonString
      @loadJsonStringIntoProject(jsonString)

  resetLocalStorage: ->
    delete window.localStorage[@localStorageName]

  # ===========================================================================
  # File System
  # ===========================================================================

  saveToFile: ->
    jsonString = @getJsonStringOfProject()
    fileName = @project.editingElement.label + ".json"
    Storage.saveFile(jsonString, fileName, "application/json;charset=utf-8")


Prompt:
# TODO: If the file format changes, this will need to check the version
    # and convert or fail appropriately.
    if json.type == "Apparatus"
      @project = @serializer.dejsonify(json)

  loadJsonStringIntoProjectFromExternalSource: (jsonString) ->
    @loadJsonStringIntoProject(jsonString)
    @checkpoint()
    Apparatus.refresh()  # HACK: calling Apparatus seems funky here.

  getJsonStringOfProject: ->
    json = @serializer.jsonify(@project)
    json.type = "Apparatus"
    json.version = @version
    jsonString = JSON.stringify(json)
    return jsonString

  createNewProject: ->
    @project = new Model.Project()

  # ===========================================================================
  # Local Storage
  # ===========================================================================

Response:
localStorageName: "apparatus"

  saveToLocalStorage: ->
    jsonString = @getJsonStringOfProject()
    window.localStorage[@localStorageName] = jsonString
    return jsonString

  loadFromLocalStorage: ->
    jsonString = window.localStorage[@localStorageName]
    if jsonString
      @loadJsonStringIntoProject(jsonString)

  resetLocalStorage: ->
    delete window.localStorage[@localStorageName]

  # ===========================================================================
  # File System
  # ===========================================================================

  saveToFile: ->
    jsonString = @getJsonStringOfProject()
    fileName = @project.editingElement.label + ".json"
    Storage.saveFile(jsonString, fileName, "application/json;charset=utf-8")


Response:
loadFromFile: ->
    Storage.loadFile (jsonString) =>
      @loadJsonStringIntoProjectFromExternalSource(jsonString)

  # ===========================================================================
  # External URL
  # ===========================================================================

  # TODO: Deal with error conditions, timeout, etc.
  # TODO: Maybe move xhr stuff to Util.
  # TODO: Show some sort of loading indicator.
  loadFromURL: (url) ->
    xhr = new XMLHttpRequest()
    xhr.onreadystatechange = =>
      return unless xhr.readyState == 4
      return unless xhr.status == 200
      jsonString = xhr.responseText
      @loadJsonStringIntoProjectFromExternalSource(jsonString)
    xhr.open("GET", url, true)
    xhr.send()

  # ===========================================================================
  # Revision History
  # ===========================================================================

  _setupRevision: ->
    # @current is a JSON string representing the current state. @undoStack and
    # @redoStack are arrays of such JSON strings.
    @current = @getJsonStringOfProject()
    @undoStack = []
    @redoStack = []
    @maxUndoStackSize = 100

  checkpoint: ->
    jsonString = @saveToLocalStorage()
    return if @current == jsonString
    @undoStack.push(@current)
    if @undoStack.length > @maxUndoStackSize
      @undoStack.shift()
    @redoStack = []
    @current = jsonString

  undo: ->
    return unless @isUndoable()
    @redoStack.push(@current)
    @current = @undoStack.pop()
    @loadJsonStringIntoProject(@current)
    @saveToLocalStorage()