Prompt:
Convert this JavaScript to CoffeeScript.
```javascript
var PushServiceAPNS, apns,
  indexOf = [].indexOf;

apns = require('apn');

PushServiceAPNS = (function() {
  class PushServiceAPNS {
    validateToken(token) {
      if (PushServiceAPNS.prototype.tokenFormat.test(token)) {
        return token.toLowerCase();
      }
    }

    constructor(conf, logger, tokenResolver) {
      this.logger = logger;
      conf.errorCallback = (errCode, note) => {
        var ref, ref1;
        return (ref = this.logger) != null ? ref.error(`APNS Error ${errCode} for subscriber ${note != null ? (ref1 = note.device) != null ? ref1.subscriberId : void 0 : void 0}`) : void 0;
      };
      this.driver = new apns.Connection(conf);
      this.payloadFilter = conf.payloadFilter;
      // Handle Apple Feedbacks
      conf.feedback = function(time, apnsSubscriber) {
        return tokenResolver('apns', apnsSubscriber.hexToken(), (subscriber) => {
          return subscriber != null ? subscriber.get(function(info) {
            if (info.updated < time) {
              this.logger.warn(`APNS Automatic unregistration for subscriber ${subscriber.id}`);
              return subscriber.delete();
            }
          }) : void 0;
        });
      };
      this.feedback = new apns.Feedback(conf);
    }

    push(subscriber, subOptions, payload) {
      return subscriber.get((info) => {
        var alert, badge, key, note, ref, val;
        note = new apns.Notification();
        note.device = new apns.Device(info.token);
        note.device.subscriberId = subscriber.id; // used for error logging
        if ((subOptions != null ? subOptions.ignore_message : void 0) !== true && (alert = payload.localizedMessage(info.lang))) {
          note.alert = alert;
        }
        if (!isNaN(badge = parseInt(info.badge) + 1)) {
          note.badge = badge;
        }
        note.sound = payload.sound;
        if (this.payloadFilter != null) {
          ref = payload.data;
          for (key in ref) {
            val = ref[key];
            if (indexOf.call(this.payloadFilter, key) >= 0) {
              note.payload[key] = val;
            }
          }
        } else {
          note.payload = payload.data;
        }
        this.driver.sendNotification(note);
        // On iOS we have to maintain the badge counter on the server
        return subscriber.incr('badge');
      });
    }

  };

  PushServiceAPNS.prototype.tokenFormat = /^[0-9a-f]{64}$/i;

  return PushServiceAPNS;

}).call(this);

exports.PushServiceAPNS = PushServiceAPNS;
```

Response:
apns = require 'apn'

class PushServiceAPNS
    tokenFormat: /^[0-9a-f]{64}$/i
    validateToken: (token) ->
        if PushServiceAPNS::tokenFormat.test(token)
            return token.toLowerCase()

    constructor: (conf, @logger, tokenResolver) ->
        conf.errorCallback = (errCode, note) =>
            @logger?.error("APNS Error #{errCode} for subscriber #{note?.device?.subscriberId}")
        @driver = new apns.Connection(conf)

        @payloadFilter = conf.payloadFilter

        # Handle Apple Feedbacks
        conf.feedback = (time, apnsSubscriber) ->
            tokenResolver 'apns', apnsSubscriber.hexToken(), (subscriber) =>
                subscriber?.get (info) ->
                    if info.updated < time
                        @logger.warn("APNS Automatic unregistration for subscriber #{subscriber.id}")
                        subscriber.delete()
        @feedback = new apns.Feedback(conf)

    push: (subscriber, subOptions, payload) ->
        subscriber.get (info) =>
            note = new apns.Notification()
            note.device = new apns.Device(info.token)
            note.device.subscriberId = subscriber.id # used for error logging
            if subOptions?.ignore_message isnt true and alert = payload.localizedMessage(info.lang)
                note.alert = alert
            note.badge = badge if not isNaN(badge = parseInt(info.badge) + 1)
            note.sound = payload.sound
            if @payloadFilter?
                for key, val of payload.data
                    note.payload[key] = val if key in @payloadFilter
            else
                note.payload = payload.data
            @driver.sendNotification note
            # On iOS we have to maintain the badge counter on the server
            subscriber.incr 'badge'

exports.PushServiceAPNS = PushServiceAPNS


Prompt:
apns = require 'apn'

class PushServiceAPNS
    tokenFormat: /^[0-9a-f]{64}$/i
    validateToken: (token) ->
        if PushServiceAPNS::tokenFormat.test(token)
            return token.toLowerCase()

    constructor: (conf, @logger, tokenResolver) ->
        conf.errorCallback = (errCode, note) =>
            @logger?.error("APNS Error #{errCode} for subscriber #{note?.device?.subscriberId}")
        @driver = new apns.Connection(conf)

        @payloadFilter = conf.payloadFilter

        # Handle Apple Feedbacks
        conf.feedback = (time, apnsSubscriber) ->
            tokenResolver 'apns', apnsSubscriber.hexToken(), (subscriber) =>
                subscriber?.get (info) ->
                    if info.updated < time
                        @logger.warn("APNS Automatic unregistration for subscriber #{subscriber.id}")
                        subscriber.delete()

Response:
@feedback = new apns.Feedback(conf)

    push: (subscriber, subOptions, payload) ->
        subscriber.get (info) =>
            note = new apns.Notification()
            note.device = new apns.Device(info.token)
            note.device.subscriberId = subscriber.id # used for error logging
            if subOptions?.ignore_message isnt true and alert = payload.localizedMessage(info.lang)
                note.alert = alert
            note.badge = badge if not isNaN(badge = parseInt(info.badge) + 1)
            note.sound = payload.sound
            if @payloadFilter?
                for key, val of payload.data
                    note.payload[key] = val if key in @payloadFilter
            else
                note.payload = payload.data
            @driver.sendNotification note
            # On iOS we have to maintain the badge counter on the server
            subscriber.incr 'badge'

exports.PushServiceAPNS = PushServiceAPNS


Response:
apns = require 'apn'

class PushServiceAPNS
    tokenFormat: /^[0-9a-f]{64}$/i
    validateToken: (token) ->
        if PushServiceAPNS::tokenFormat.test(token)
            return token.toLowerCase()

    constructor: (conf, @logger, tokenResolver) ->
        conf.errorCallback = (errCode, note) =>
            @logger?.error("APNS Error #{errCode} for subscriber #{note?.device?.subscriberId}")
        @driver = new apns.Connection(conf)

        # Handle Apple Feedbacks
        conf.feedback = (time, apnsSubscriber) ->
            tokenResolver 'apns', apnsSubscriber.hexToken(), (subscriber) =>
                subscriber?.get (info) ->
                    if info.updated < time
                        @logger.warn("APNS Automatic unregistration for subscriber #{subscriber.id}")
                        subscriber.delete()
        @feedback = new apns.Feedback(conf)

    push: (subscriber, subOptions, payload) ->
        subscriber.get (info) =>
            note = new apns.Notification()
            note.device = new apns.Device(info.token)
            note.device.subscriberId = subscriber.id # used for error logging
            if subOptions?.ignore_message isnt true and alert = payload.localizedMessage(info.lang)
                note.alert = alert
            note.badge = badge if not isNaN(badge = parseInt(info.badge) + 1)
            note.sound = payload.sound
            note.payload = payload.data
            @driver.sendNotification note
            # On iOS we have to maintain the badge counter on the server
            subscriber.incr 'badge'

exports.PushServiceAPNS = PushServiceAPNS


Prompt:
Convert this CoffeeScript to JavaScript.
```coffeescript
apns = require 'apn'

class PushServiceAPNS
    tokenFormat: /^[0-9a-f]{64}$/i
    validateToken: (token) ->
        if PushServiceAPNS::tokenFormat.test(token)
            return token.toLowerCase()

    constructor: (conf, @logger, tokenResolver) ->
        conf.errorCallback = (errCode, note) =>
            @logger?.error("APNS Error #{errCode} for subscriber #{note?.device?.subscriberId}")
        @driver = new apns.Connection(conf)

        # Handle Apple Feedbacks
        conf.feedback = (time, apnsSubscriber) ->
            tokenResolver 'apns', apnsSubscriber.hexToken(), (subscriber) =>
                subscriber?.get (info) ->
                    if info.updated < time
                        @logger.warn("APNS Automatic unregistration for subscriber #{subscriber.id}")
                        subscriber.delete()
        @feedback = new apns.Feedback(conf)

    push: (subscriber, subOptions, payload) ->
        subscriber.get (info) =>
            note = new apns.Notification()
            note.device = new apns.Device(info.token)
            note.device.subscriberId = subscriber.id # used for error logging
            if subOptions?.ignore_message isnt true and alert = payload.localizedMessage(info.lang)
                note.alert = alert
            note.badge = badge if not isNaN(badge = parseInt(info.badge) + 1)
            note.sound = payload.sound
            note.payload = payload.data
            @driver.sendNotification note
            # On iOS we have to maintain the badge counter on the server
            subscriber.incr 'badge'

exports.PushServiceAPNS = PushServiceAPNS
```

Response:
var PushServiceAPNS, apns;

apns = require('apn');

PushServiceAPNS = (function() {
  class PushServiceAPNS {
    validateToken(token) {
      if (PushServiceAPNS.prototype.tokenFormat.test(token)) {
        return token.toLowerCase();
      }
    }

    constructor(conf, logger, tokenResolver) {
      this.logger = logger;
      conf.errorCallback = (errCode, note) => {
        var ref, ref1;
        return (ref = this.logger) != null ? ref.error(`APNS Error ${errCode} for subscriber ${note != null ? (ref1 = note.device) != null ? ref1.subscriberId : void 0 : void 0}`) : void 0;
      };
      this.driver = new apns.Connection(conf);
      // Handle Apple Feedbacks
      conf.feedback = function(time, apnsSubscriber) {
        return tokenResolver('apns', apnsSubscriber.hexToken(), (subscriber) => {
          return subscriber != null ? subscriber.get(function(info) {
            if (info.updated < time) {
              this.logger.warn(`APNS Automatic unregistration for subscriber ${subscriber.id}`);
              return subscriber.delete();
            }
          }) : void 0;
        });
      };
      this.feedback = new apns.Feedback(conf);
    }

    push(subscriber, subOptions, payload) {
      return subscriber.get((info) => {
        var alert, badge, note;
        note = new apns.Notification();
        note.device = new apns.Device(info.token);
        note.device.subscriberId = subscriber.id; // used for error logging
        if ((subOptions != null ? subOptions.ignore_message : void 0) !== true && (alert = payload.localizedMessage(info.lang))) {
          note.alert = alert;
        }
        if (!isNaN(badge = parseInt(info.badge) + 1)) {
          note.badge = badge;
        }
        note.sound = payload.sound;
        note.payload = payload.data;
        this.driver.sendNotification(note);
        // On iOS we have to maintain the badge counter on the server
        return subscriber.incr('badge');
      });
    }

  };

  PushServiceAPNS.prototype.tokenFormat = /^[0-9a-f]{64}$/i;

  return PushServiceAPNS;

}).call(this);

exports.PushServiceAPNS = PushServiceAPNS;


Prompt:
Convert this JavaScript to CoffeeScript.
```javascript
var PushServiceAPNS, apns;

apns = require('apn');

PushServiceAPNS = (function() {
  class PushServiceAPNS {
    validateToken(token) {
      if (PushServiceAPNS.prototype.tokenFormat.test(token)) {
        return token.toLowerCase();
      }
    }

    constructor(conf, logger, tokenResolver) {
      this.logger = logger;
      conf.errorCallback = (errCode, note) => {
        var ref, ref1;
        return (ref = this.logger) != null ? ref.error(`APNS Error ${errCode} for subscriber ${note != null ? (ref1 = note.device) != null ? ref1.subscriberId : void 0 : void 0}`) : void 0;
      };
      this.driver = new apns.Connection(conf);
      // Handle Apple Feedbacks
      conf.feedback = function(time, apnsSubscriber) {
        return tokenResolver('apns', apnsSubscriber.hexToken(), (subscriber) => {
          return subscriber != null ? subscriber.get(function(info) {
            if (info.updated < time) {
              this.logger.warn(`APNS Automatic unregistration for subscriber ${subscriber.id}`);
              return subscriber.delete();
            }
          }) : void 0;
        });
      };
      this.feedback = new apns.Feedback(conf);
    }

    push(subscriber, subOptions, payload) {
      return subscriber.get((info) => {
        var alert, badge, note;
        note = new apns.Notification();
        note.device = new apns.Device(info.token);
        note.device.subscriberId = subscriber.id; // used for error logging
        if ((subOptions != null ? subOptions.ignore_message : void 0) !== true && (alert = payload.localizedMessage(info.lang))) {
          note.alert = alert;
        }
        if (!isNaN(badge = parseInt(info.badge) + 1)) {
          note.badge = badge;
        }
        note.sound = payload.sound;
        note.payload = payload.data;
        this.driver.sendNotification(note);
        // On iOS we have to maintain the badge counter on the server
        return subscriber.incr('badge');
      });
    }

  };

  PushServiceAPNS.prototype.tokenFormat = /^[0-9a-f]{64}$/i;

  return PushServiceAPNS;

}).call(this);

exports.PushServiceAPNS = PushServiceAPNS;
```

Response:
apns = require 'apn'

class PushServiceAPNS
    tokenFormat: /^[0-9a-f]{64}$/i
    validateToken: (token) ->
        if PushServiceAPNS::tokenFormat.test(token)
            return token.toLowerCase()

    constructor: (conf, @logger, tokenResolver) ->
        conf.errorCallback = (errCode, note) =>
            @logger?.error("APNS Error #{errCode} for subscriber #{note?.device?.subscriberId}")
        @driver = new apns.Connection(conf)

        # Handle Apple Feedbacks
        conf.feedback = (time, apnsSubscriber) ->
            tokenResolver 'apns', apnsSubscriber.hexToken(), (subscriber) =>
                subscriber?.get (info) ->
                    if info.updated < time
                        @logger.warn("APNS Automatic unregistration for subscriber #{subscriber.id}")
                        subscriber.delete()
        @feedback = new apns.Feedback(conf)

    push: (subscriber, subOptions, payload) ->
        subscriber.get (info) =>
            note = new apns.Notification()
            note.device = new apns.Device(info.token)
            note.device.subscriberId = subscriber.id # used for error logging
            if subOptions?.ignore_message isnt true and alert = payload.localizedMessage(info.lang)
                note.alert = alert
            note.badge = badge if not isNaN(badge = parseInt(info.badge) + 1)
            note.sound = payload.sound
            note.payload = payload.data
            @driver.sendNotification note
            # On iOS we have to maintain the badge counter on the server
            subscriber.incr 'badge'

exports.PushServiceAPNS = PushServiceAPNS


Prompt:
apns = require 'apn'

class PushServiceAPNS
    tokenFormat: /^[0-9a-f]{64}$/i
    validateToken: (token) ->
        if PushServiceAPNS::tokenFormat.test(token)
            return token.toLowerCase()

    constructor: (conf, @logger, tokenResolver) ->
        conf.errorCallback = (errCode, note) =>
            @logger?.error("APNS Error #{errCode} for subscriber #{note?.device?.subscriberId}")
        @driver = new apns.Connection(conf)

        # Handle Apple Feedbacks
        conf.feedback = (time, apnsSubscriber) ->
            tokenResolver 'apns', apnsSubscriber.hexToken(), (subscriber) =>
                subscriber?.get (info) ->
                    if info.updated < time
                        @logger.warn("APNS Automatic unregistration for subscriber #{subscriber.id}")

Response:
subscriber.delete()
        @feedback = new apns.Feedback(conf)

    push: (subscriber, subOptions, payload) ->
        subscriber.get (info) =>
            note = new apns.Notification()
            note.device = new apns.Device(info.token)
            note.device.subscriberId = subscriber.id # used for error logging
            if subOptions?.ignore_message isnt true and alert = payload.localizedMessage(info.lang)
                note.alert = alert
            note.badge = badge if not isNaN(badge = parseInt(info.badge) + 1)
            note.sound = payload.sound
            note.payload = payload.data
            @driver.sendNotification note
            # On iOS we have to maintain the badge counter on the server
            subscriber.incr 'badge'

exports.PushServiceAPNS = PushServiceAPNS


Response:
apns = require 'apn'

class PushServiceAPNS
    tokenFormat: /^[0-9a-f]{64}$/i
    validateToken: (token) ->
        if PushServiceAPNS::tokenFormat.test(token)
            return token.toLowerCase()

    constructor: (conf, @logger) ->
        conf.errorCallback = (errCode, note) =>
            @logger?.error("APNS Error #{errCode} for subscriber #{note?.device?.subscriberId}")
        @driver = new apns.Connection(conf)

    push: (subscriber, subOptions, payload) ->
        subscriber.get (info) =>
            note = new apns.Notification()
            note.device = new apns.Device(info.token)
            note.device.subscriberId = subscriber.id # used for error logging
            if subOptions?.ignore_message isnt true and alert = payload.localizedMessage(info.lang)
                note.alert = alert
            note.badge = badge if not isNaN(badge = parseInt(info.badge) + 1)
            note.sound = payload.sound
            note.payload = payload.data
            @driver.sendNotification note
            # On iOS we have to maintain the badge counter on the server
            subscriber.incr 'badge'

exports.PushServiceAPNS = PushServiceAPNS


Prompt:
Convert this CoffeeScript to JavaScript.
```coffeescript
apns = require 'apn'

class PushServiceAPNS
    tokenFormat: /^[0-9a-f]{64}$/i
    validateToken: (token) ->
        if PushServiceAPNS::tokenFormat.test(token)
            return token.toLowerCase()

    constructor: (conf, @logger) ->
        conf.errorCallback = (errCode, note) =>
            @logger?.error("APNS Error #{errCode} for subscriber #{note?.device?.subscriberId}")
        @driver = new apns.Connection(conf)

    push: (subscriber, subOptions, payload) ->
        subscriber.get (info) =>
            note = new apns.Notification()
            note.device = new apns.Device(info.token)
            note.device.subscriberId = subscriber.id # used for error logging
            if subOptions?.ignore_message isnt true and alert = payload.localizedMessage(info.lang)
                note.alert = alert
            note.badge = badge if not isNaN(badge = parseInt(info.badge) + 1)
            note.sound = payload.sound
            note.payload = payload.data
            @driver.sendNotification note
            # On iOS we have to maintain the badge counter on the server
            subscriber.incr 'badge'

exports.PushServiceAPNS = PushServiceAPNS
```

Response:
var PushServiceAPNS, apns;

apns = require('apn');

PushServiceAPNS = (function() {
  class PushServiceAPNS {
    validateToken(token) {
      if (PushServiceAPNS.prototype.tokenFormat.test(token)) {
        return token.toLowerCase();
      }
    }

    constructor(conf, logger) {
      this.logger = logger;
      conf.errorCallback = (errCode, note) => {
        var ref, ref1;
        return (ref = this.logger) != null ? ref.error(`APNS Error ${errCode} for subscriber ${note != null ? (ref1 = note.device) != null ? ref1.subscriberId : void 0 : void 0}`) : void 0;
      };
      this.driver = new apns.Connection(conf);
    }

    push(subscriber, subOptions, payload) {
      return subscriber.get((info) => {
        var alert, badge, note;
        note = new apns.Notification();
        note.device = new apns.Device(info.token);
        note.device.subscriberId = subscriber.id; // used for error logging
        if ((subOptions != null ? subOptions.ignore_message : void 0) !== true && (alert = payload.localizedMessage(info.lang))) {
          note.alert = alert;
        }
        if (!isNaN(badge = parseInt(info.badge) + 1)) {
          note.badge = badge;
        }
        note.sound = payload.sound;
        note.payload = payload.data;
        this.driver.sendNotification(note);
        // On iOS we have to maintain the badge counter on the server
        return subscriber.incr('badge');
      });
    }

  };

  PushServiceAPNS.prototype.tokenFormat = /^[0-9a-f]{64}$/i;

  return PushServiceAPNS;

}).call(this);

exports.PushServiceAPNS = PushServiceAPNS;


Prompt:
Convert this JavaScript to CoffeeScript.
```javascript
var PushServiceAPNS, apns;

apns = require('apn');

PushServiceAPNS = (function() {
  class PushServiceAPNS {
    validateToken(token) {
      if (PushServiceAPNS.prototype.tokenFormat.test(token)) {
        return token.toLowerCase();
      }
    }

    constructor(conf, logger) {
      this.logger = logger;
      conf.errorCallback = (errCode, note) => {
        var ref, ref1;
        return (ref = this.logger) != null ? ref.error(`APNS Error ${errCode} for subscriber ${note != null ? (ref1 = note.device) != null ? ref1.subscriberId : void 0 : void 0}`) : void 0;
      };
      this.driver = new apns.Connection(conf);
    }

    push(subscriber, subOptions, payload) {
      return subscriber.get((info) => {
        var alert, badge, note;
        note = new apns.Notification();
        note.device = new apns.Device(info.token);
        note.device.subscriberId = subscriber.id; // used for error logging
        if ((subOptions != null ? subOptions.ignore_message : void 0) !== true && (alert = payload.localizedMessage(info.lang))) {
          note.alert = alert;
        }
        if (!isNaN(badge = parseInt(info.badge) + 1)) {
          note.badge = badge;
        }
        note.sound = payload.sound;
        note.payload = payload.data;
        this.driver.sendNotification(note);
        // On iOS we have to maintain the badge counter on the server
        return subscriber.incr('badge');
      });
    }

  };

  PushServiceAPNS.prototype.tokenFormat = /^[0-9a-f]{64}$/i;

  return PushServiceAPNS;

}).call(this);

exports.PushServiceAPNS = PushServiceAPNS;
```

Response:
apns = require 'apn'

class PushServiceAPNS
    tokenFormat: /^[0-9a-f]{64}$/i
    validateToken: (token) ->
        if PushServiceAPNS::tokenFormat.test(token)
            return token.toLowerCase()

    constructor: (conf, @logger) ->
        conf.errorCallback = (errCode, note) =>
            @logger?.error("APNS Error #{errCode} for subscriber #{note?.device?.subscriberId}")
        @driver = new apns.Connection(conf)

    push: (subscriber, subOptions, payload) ->
        subscriber.get (info) =>
            note = new apns.Notification()
            note.device = new apns.Device(info.token)
            note.device.subscriberId = subscriber.id # used for error logging
            if subOptions?.ignore_message isnt true and alert = payload.localizedMessage(info.lang)
                note.alert = alert
            note.badge = badge if not isNaN(badge = parseInt(info.badge) + 1)
            note.sound = payload.sound
            note.payload = payload.data
            @driver.sendNotification note
            # On iOS we have to maintain the badge counter on the server
            subscriber.incr 'badge'

exports.PushServiceAPNS = PushServiceAPNS


Prompt:
apns = require 'apn'

class PushServiceAPNS
    tokenFormat: /^[0-9a-f]{64}$/i
    validateToken: (token) ->
        if PushServiceAPNS::tokenFormat.test(token)
            return token.toLowerCase()

    constructor: (conf, @logger) ->
        conf.errorCallback = (errCode, note) =>
            @logger?.error("APNS Error #{errCode} for subscriber #{note?.device?.subscriberId}")
        @driver = new apns.Connection(conf)

    push: (subscriber, subOptions, payload) ->

Response:
subscriber.get (info) =>
            note = new apns.Notification()
            note.device = new apns.Device(info.token)
            note.device.subscriberId = subscriber.id # used for error logging
            if subOptions?.ignore_message isnt true and alert = payload.localizedMessage(info.lang)
                note.alert = alert
            note.badge = badge if not isNaN(badge = parseInt(info.badge) + 1)
            note.sound = payload.sound
            note.payload = payload.data
            @driver.sendNotification note
            # On iOS we have to maintain the badge counter on the server
            subscriber.incr 'badge'

exports.PushServiceAPNS = PushServiceAPNS


Response:
event = require '../event'
apns = require 'apn'

class PushServiceAPNS
    tokenFormat: /^[0-9a-f]{64}$/i
    validateToken: (token) ->
        if PushServiceAPNS::tokenFormat.test(token)
            return token.toLowerCase()

    constructor: (conf, @logger) ->
        conf.errorCallback = (errCode, note) =>
            @logger?.error("APNS Error #{errCode} for subscriber #{note?.device?.subscriberId}")
        @driver = new apns.Connection(conf)

    push: (subscriber, subOptions, payload) ->
        subscriber.get (info) =>
            note = new apns.Notification()
            note.device = new apns.Device(info.token)
            note.device.subscriberId = subscriber.id # used for error logging
            if not (subOptions & event.OPTION_IGNORE_MESSAGE) and alert = payload.localizedMessage(info.lang)
                note.alert = alert
            note.badge = badge if not isNaN(badge = parseInt(info.badge) + 1)
            note.sound = payload.sound
            note.payload = payload.data
            @driver.sendNotification note
            # On iOS we have to maintain the badge counter on the server
            subscriber.incr 'badge'

exports.PushServiceAPNS = PushServiceAPNS


Prompt:
Convert this CoffeeScript to JavaScript.
```coffeescript
event = require '../event'
apns = require 'apn'

class PushServiceAPNS
    tokenFormat: /^[0-9a-f]{64}$/i
    validateToken: (token) ->
        if PushServiceAPNS::tokenFormat.test(token)
            return token.toLowerCase()

    constructor: (conf, @logger) ->
        conf.errorCallback = (errCode, note) =>
            @logger?.error("APNS Error #{errCode} for subscriber #{note?.device?.subscriberId}")
        @driver = new apns.Connection(conf)

    push: (subscriber, subOptions, payload) ->
        subscriber.get (info) =>
            note = new apns.Notification()
            note.device = new apns.Device(info.token)
            note.device.subscriberId = subscriber.id # used for error logging
            if not (subOptions & event.OPTION_IGNORE_MESSAGE) and alert = payload.localizedMessage(info.lang)
                note.alert = alert
            note.badge = badge if not isNaN(badge = parseInt(info.badge) + 1)
            note.sound = payload.sound
            note.payload = payload.data
            @driver.sendNotification note
            # On iOS we have to maintain the badge counter on the server
            subscriber.incr 'badge'

exports.PushServiceAPNS = PushServiceAPNS
```

Response:
var PushServiceAPNS, apns, event;

event = require('../event');

apns = require('apn');

PushServiceAPNS = (function() {
  class PushServiceAPNS {
    validateToken(token) {
      if (PushServiceAPNS.prototype.tokenFormat.test(token)) {
        return token.toLowerCase();
      }
    }

    constructor(conf, logger) {
      this.logger = logger;
      conf.errorCallback = (errCode, note) => {
        var ref, ref1;
        return (ref = this.logger) != null ? ref.error(`APNS Error ${errCode} for subscriber ${note != null ? (ref1 = note.device) != null ? ref1.subscriberId : void 0 : void 0}`) : void 0;
      };
      this.driver = new apns.Connection(conf);
    }

    push(subscriber, subOptions, payload) {
      return subscriber.get((info) => {
        var alert, badge, note;
        note = new apns.Notification();
        note.device = new apns.Device(info.token);
        note.device.subscriberId = subscriber.id; // used for error logging
        if (!(subOptions & event.OPTION_IGNORE_MESSAGE) && (alert = payload.localizedMessage(info.lang))) {
          note.alert = alert;
        }
        if (!isNaN(badge = parseInt(info.badge) + 1)) {
          note.badge = badge;
        }
        note.sound = payload.sound;
        note.payload = payload.data;
        this.driver.sendNotification(note);
        // On iOS we have to maintain the badge counter on the server
        return subscriber.incr('badge');
      });
    }

  };

  PushServiceAPNS.prototype.tokenFormat = /^[0-9a-f]{64}$/i;

  return PushServiceAPNS;

}).call(this);

exports.PushServiceAPNS = PushServiceAPNS;


Prompt:
Convert this JavaScript to CoffeeScript.
```javascript
var PushServiceAPNS, apns, event;

event = require('../event');

apns = require('apn');

PushServiceAPNS = (function() {
  class PushServiceAPNS {
    validateToken(token) {
      if (PushServiceAPNS.prototype.tokenFormat.test(token)) {
        return token.toLowerCase();
      }
    }

    constructor(conf, logger) {
      this.logger = logger;
      conf.errorCallback = (errCode, note) => {
        var ref, ref1;
        return (ref = this.logger) != null ? ref.error(`APNS Error ${errCode} for subscriber ${note != null ? (ref1 = note.device) != null ? ref1.subscriberId : void 0 : void 0}`) : void 0;
      };
      this.driver = new apns.Connection(conf);
    }

    push(subscriber, subOptions, payload) {
      return subscriber.get((info) => {
        var alert, badge, note;
        note = new apns.Notification();
        note.device = new apns.Device(info.token);
        note.device.subscriberId = subscriber.id; // used for error logging
        if (!(subOptions & event.OPTION_IGNORE_MESSAGE) && (alert = payload.localizedMessage(info.lang))) {
          note.alert = alert;
        }
        if (!isNaN(badge = parseInt(info.badge) + 1)) {
          note.badge = badge;
        }
        note.sound = payload.sound;
        note.payload = payload.data;
        this.driver.sendNotification(note);
        // On iOS we have to maintain the badge counter on the server
        return subscriber.incr('badge');
      });
    }

  };

  PushServiceAPNS.prototype.tokenFormat = /^[0-9a-f]{64}$/i;

  return PushServiceAPNS;

}).call(this);

exports.PushServiceAPNS = PushServiceAPNS;
```

Response:
event = require '../event'
apns = require 'apn'

class PushServiceAPNS
    tokenFormat: /^[0-9a-f]{64}$/i
    validateToken: (token) ->
        if PushServiceAPNS::tokenFormat.test(token)
            return token.toLowerCase()

    constructor: (conf, @logger) ->
        conf.errorCallback = (errCode, note) =>
            @logger?.error("APNS Error #{errCode} for subscriber #{note?.device?.subscriberId}")
        @driver = new apns.Connection(conf)

    push: (subscriber, subOptions, payload) ->
        subscriber.get (info) =>
            note = new apns.Notification()
            note.device = new apns.Device(info.token)
            note.device.subscriberId = subscriber.id # used for error logging
            if not (subOptions & event.OPTION_IGNORE_MESSAGE) and alert = payload.localizedMessage(info.lang)
                note.alert = alert
            note.badge = badge if not isNaN(badge = parseInt(info.badge) + 1)
            note.sound = payload.sound
            note.payload = payload.data
            @driver.sendNotification note
            # On iOS we have to maintain the badge counter on the server
            subscriber.incr 'badge'

exports.PushServiceAPNS = PushServiceAPNS


Prompt:
event = require '../event'
apns = require 'apn'

class PushServiceAPNS
    tokenFormat: /^[0-9a-f]{64}$/i
    validateToken: (token) ->
        if PushServiceAPNS::tokenFormat.test(token)
            return token.toLowerCase()

    constructor: (conf, @logger) ->
        conf.errorCallback = (errCode, note) =>
            @logger?.error("APNS Error #{errCode} for subscriber #{note?.device?.subscriberId}")
        @driver = new apns.Connection(conf)

Response:
push: (subscriber, subOptions, payload) ->
        subscriber.get (info) =>
            note = new apns.Notification()
            note.device = new apns.Device(info.token)
            note.device.subscriberId = subscriber.id # used for error logging
            if not (subOptions & event.OPTION_IGNORE_MESSAGE) and alert = payload.localizedMessage(info.lang)
                note.alert = alert
            note.badge = badge if not isNaN(badge = parseInt(info.badge) + 1)
            note.sound = payload.sound
            note.payload = payload.data
            @driver.sendNotification note
            # On iOS we have to maintain the badge counter on the server
            subscriber.incr 'badge'

exports.PushServiceAPNS = PushServiceAPNS


Response:
_ = require 'underscore-plus'

{getVimState} = require './spec-helper'

xdescribe "visual-mode performance", ->
  [set, ensure, editor, editorElement, vimState] = []

  beforeEach ->
    getVimState (state, _vim) ->
      vimState = state # to refer as vimState later.
      {editor, editorElement} = vimState
      {set, ensure} = _vim

  afterEach ->
    vimState.resetNormalMode()
    vimState.globalState.reset()

  describe "slow down editor", ->
    moveRightAndLeftCheck = (scenario, modeSig) ->
      console.log [scenario, modeSig, atom.getVersion(), atom.packages.getActivePackage('vim-mode-plus').metadata.version]

      moveCount = 89
      switch scenario
        when 'vmp'
          moveByVMP = ->
            _.times moveCount, -> ensure 'l'
            _.times moveCount, -> ensure 'h'
          _.times 10, -> measureWithTimeEnd(moveByVMP)
        when 'sel'
          moveBySelect = ->
            _.times moveCount, -> editor.getLastSelection().selectRight()
            _.times moveCount, -> editor.getLastSelection().selectLeft()
          _.times 15, -> measureWithTimeEnd(moveBySelect)

    measureWithTimeEnd = (fn) ->
      console.time(fn.name)
      fn()
      console.timeEnd(fn.name)

    beforeEach ->
      set
        cursor: [0, 0]
        text: """
          012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
          """

    describe "vmp", ->
      # beforeEach ->
      it "[normal] slow down editor", ->
        moveRightAndLeftCheck('vmp', 'moveCount')


Prompt:
Convert this CoffeeScript to JavaScript.
```coffeescript
_ = require 'underscore-plus'

{getVimState} = require './spec-helper'

xdescribe "visual-mode performance", ->
  [set, ensure, editor, editorElement, vimState] = []

  beforeEach ->
    getVimState (state, _vim) ->
      vimState = state # to refer as vimState later.
      {editor, editorElement} = vimState
      {set, ensure} = _vim

  afterEach ->
    vimState.resetNormalMode()
    vimState.globalState.reset()

  describe "slow down editor", ->
    moveRightAndLeftCheck = (scenario, modeSig) ->
      console.log [scenario, modeSig, atom.getVersion(), atom.packages.getActivePackage('vim-mode-plus').metadata.version]

      moveCount = 89
      switch scenario
        when 'vmp'
          moveByVMP = ->
            _.times moveCount, -> ensure 'l'
            _.times moveCount, -> ensure 'h'
          _.times 10, -> measureWithTimeEnd(moveByVMP)
        when 'sel'
          moveBySelect = ->
            _.times moveCount, -> editor.getLastSelection().selectRight()
            _.times moveCount, -> editor.getLastSelection().selectLeft()
          _.times 15, -> measureWithTimeEnd(moveBySelect)

    measureWithTimeEnd = (fn) ->
      console.time(fn.name)
      fn()
      console.timeEnd(fn.name)

    beforeEach ->
      set
        cursor: [0, 0]
        text: """
          012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
          """

    describe "vmp", ->
      # beforeEach ->
      it "[normal] slow down editor", ->
        moveRightAndLeftCheck('vmp', 'moveCount')
```

Response:
var _, getVimState;

_ = require('underscore-plus');

({getVimState} = require('./spec-helper'));

xdescribe("visual-mode performance", function() {
  var editor, editorElement, ensure, set, vimState;
  [set, ensure, editor, editorElement, vimState] = [];
  beforeEach(function() {
    return getVimState(function(state, _vim) {
      vimState = state; // to refer as vimState later.
      ({editor, editorElement} = vimState);
      return ({set, ensure} = _vim);
    });
  });
  afterEach(function() {
    vimState.resetNormalMode();
    return vimState.globalState.reset();
  });
  return describe("slow down editor", function() {
    var measureWithTimeEnd, moveRightAndLeftCheck;
    moveRightAndLeftCheck = function(scenario, modeSig) {
      var moveBySelect, moveByVMP, moveCount;
      console.log([scenario, modeSig, atom.getVersion(), atom.packages.getActivePackage('vim-mode-plus').metadata.version]);
      moveCount = 89;
      switch (scenario) {
        case 'vmp':
          moveByVMP = function() {
            _.times(moveCount, function() {
              return ensure('l');
            });
            return _.times(moveCount, function() {
              return ensure('h');
            });
          };
          return _.times(10, function() {
            return measureWithTimeEnd(moveByVMP);
          });
        case 'sel':
          moveBySelect = function() {
            _.times(moveCount, function() {
              return editor.getLastSelection().selectRight();
            });
            return _.times(moveCount, function() {
              return editor.getLastSelection().selectLeft();
            });
          };
          return _.times(15, function() {
            return measureWithTimeEnd(moveBySelect);
          });
      }
    };
    measureWithTimeEnd = function(fn) {
      console.time(fn.name);
      fn();
      return console.timeEnd(fn.name);
    };
    beforeEach(function() {
      return set({
        cursor: [0, 0],
        text: `012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789`
      });
    });
    return describe("vmp", function() {
      // beforeEach ->
      return it("[normal] slow down editor", function() {
        return moveRightAndLeftCheck('vmp', 'moveCount');
      });
    });
  });
});


Prompt:
Convert this JavaScript to CoffeeScript.
```javascript
var _, getVimState;

_ = require('underscore-plus');

({getVimState} = require('./spec-helper'));

xdescribe("visual-mode performance", function() {
  var editor, editorElement, ensure, set, vimState;
  [set, ensure, editor, editorElement, vimState] = [];
  beforeEach(function() {
    return getVimState(function(state, _vim) {
      vimState = state; // to refer as vimState later.
      ({editor, editorElement} = vimState);
      return ({set, ensure} = _vim);
    });
  });
  afterEach(function() {
    vimState.resetNormalMode();
    return vimState.globalState.reset();
  });
  return describe("slow down editor", function() {
    var measureWithTimeEnd, moveRightAndLeftCheck;
    moveRightAndLeftCheck = function(scenario, modeSig) {
      var moveBySelect, moveByVMP, moveCount;
      console.log([scenario, modeSig, atom.getVersion(), atom.packages.getActivePackage('vim-mode-plus').metadata.version]);
      moveCount = 89;
      switch (scenario) {
        case 'vmp':
          moveByVMP = function() {
            _.times(moveCount, function() {
              return ensure('l');
            });
            return _.times(moveCount, function() {
              return ensure('h');
            });
          };
          return _.times(10, function() {
            return measureWithTimeEnd(moveByVMP);
          });
        case 'sel':
          moveBySelect = function() {
            _.times(moveCount, function() {
              return editor.getLastSelection().selectRight();
            });
            return _.times(moveCount, function() {
              return editor.getLastSelection().selectLeft();
            });
          };
          return _.times(15, function() {
            return measureWithTimeEnd(moveBySelect);
          });
      }
    };
    measureWithTimeEnd = function(fn) {
      console.time(fn.name);
      fn();
      return console.timeEnd(fn.name);
    };
    beforeEach(function() {
      return set({
        cursor: [0, 0],
        text: `012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789`
      });
    });
    return describe("vmp", function() {
      // beforeEach ->
      return it("[normal] slow down editor", function() {
        return moveRightAndLeftCheck('vmp', 'moveCount');
      });
    });
  });
});
```

Response:
_ = require 'underscore-plus'

{getVimState} = require './spec-helper'

xdescribe "visual-mode performance", ->
  [set, ensure, editor, editorElement, vimState] = []

  beforeEach ->
    getVimState (state, _vim) ->
      vimState = state # to refer as vimState later.
      {editor, editorElement} = vimState
      {set, ensure} = _vim

  afterEach ->
    vimState.resetNormalMode()
    vimState.globalState.reset()

  describe "slow down editor", ->
    moveRightAndLeftCheck = (scenario, modeSig) ->
      console.log [scenario, modeSig, atom.getVersion(), atom.packages.getActivePackage('vim-mode-plus').metadata.version]

      moveCount = 89
      switch scenario
        when 'vmp'
          moveByVMP = ->
            _.times moveCount, -> ensure 'l'
            _.times moveCount, -> ensure 'h'
          _.times 10, -> measureWithTimeEnd(moveByVMP)
        when 'sel'
          moveBySelect = ->
            _.times moveCount, -> editor.getLastSelection().selectRight()
            _.times moveCount, -> editor.getLastSelection().selectLeft()
          _.times 15, -> measureWithTimeEnd(moveBySelect)

    measureWithTimeEnd = (fn) ->
      console.time(fn.name)
      fn()
      console.timeEnd(fn.name)

    beforeEach ->
      set
        cursor: [0, 0]
        text: """
          012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
          """

    describe "vmp", ->
      # beforeEach ->
      it "[normal] slow down editor", ->
        moveRightAndLeftCheck('vmp', 'moveCount')


Prompt:
_ = require 'underscore-plus'

{getVimState} = require './spec-helper'

xdescribe "visual-mode performance", ->
  [set, ensure, editor, editorElement, vimState] = []

  beforeEach ->
    getVimState (state, _vim) ->
      vimState = state # to refer as vimState later.
      {editor, editorElement} = vimState
      {set, ensure} = _vim

  afterEach ->
    vimState.resetNormalMode()
    vimState.globalState.reset()

  describe "slow down editor", ->
    moveRightAndLeftCheck = (scenario, modeSig) ->
      console.log [scenario, modeSig, atom.getVersion(), atom.packages.getActivePackage('vim-mode-plus').metadata.version]

      moveCount = 89
      switch scenario
        when 'vmp'
          moveByVMP = ->

Response:
_.times moveCount, -> ensure 'l'
            _.times moveCount, -> ensure 'h'
          _.times 10, -> measureWithTimeEnd(moveByVMP)
        when 'sel'
          moveBySelect = ->
            _.times moveCount, -> editor.getLastSelection().selectRight()
            _.times moveCount, -> editor.getLastSelection().selectLeft()
          _.times 15, -> measureWithTimeEnd(moveBySelect)

    measureWithTimeEnd = (fn) ->
      console.time(fn.name)
      fn()
      console.timeEnd(fn.name)

    beforeEach ->
      set
        cursor: [0, 0]
        text: """
          012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
          """

    describe "vmp", ->
      # beforeEach ->
      it "[normal] slow down editor", ->
        moveRightAndLeftCheck('vmp', 'moveCount')


Response:
it "[vC] slow down editor", ->
        ensure 'v', mode: ['visual', 'characterwise']
        moveRightAndLeftCheck('vmp', 'vC')
        ensure 'escape', mode: 'normal'

        ensure 'v', mode: ['visual', 'characterwise']
        moveRightAndLeftCheck('vmp', 'vC')
        ensure 'escape', mode: 'normal'

      it "[vC] slow down editor", ->
        # ensure 'v', mode: ['visual', 'characterwise']
        moveRightAndLeftCheck('sel', 'vC')


Prompt:
Convert this CoffeeScript to JavaScript.
```coffeescript
it "[vC] slow down editor", ->
        ensure 'v', mode: ['visual', 'characterwise']
        moveRightAndLeftCheck('vmp', 'vC')
        ensure 'escape', mode: 'normal'

        ensure 'v', mode: ['visual', 'characterwise']
        moveRightAndLeftCheck('vmp', 'vC')
        ensure 'escape', mode: 'normal'

      it "[vC] slow down editor", ->
        # ensure 'v', mode: ['visual', 'characterwise']
        moveRightAndLeftCheck('sel', 'vC')
```

Response:
it("[vC] slow down editor", function() {
  ensure('v', {
    mode: ['visual', 'characterwise']
  });
  moveRightAndLeftCheck('vmp', 'vC');
  ensure('escape', {
    mode: 'normal'
  });
  ensure('v', {
    mode: ['visual', 'characterwise']
  });
  moveRightAndLeftCheck('vmp', 'vC');
  return ensure('escape', {
    mode: 'normal'
  });
});

it("[vC] slow down editor", function() {
  // ensure 'v', mode: ['visual', 'characterwise']
  return moveRightAndLeftCheck('sel', 'vC');
});


Prompt:
Convert this JavaScript to CoffeeScript.
```javascript
it("[vC] slow down editor", function() {
  ensure('v', {
    mode: ['visual', 'characterwise']
  });
  moveRightAndLeftCheck('vmp', 'vC');
  ensure('escape', {
    mode: 'normal'
  });
  ensure('v', {
    mode: ['visual', 'characterwise']
  });
  moveRightAndLeftCheck('vmp', 'vC');
  return ensure('escape', {
    mode: 'normal'
  });
});

it("[vC] slow down editor", function() {
  // ensure 'v', mode: ['visual', 'characterwise']
  return moveRightAndLeftCheck('sel', 'vC');
});
```

Response:
it "[vC] slow down editor", ->
        ensure 'v', mode: ['visual', 'characterwise']
        moveRightAndLeftCheck('vmp', 'vC')
        ensure 'escape', mode: 'normal'

        ensure 'v', mode: ['visual', 'characterwise']
        moveRightAndLeftCheck('vmp', 'vC')
        ensure 'escape', mode: 'normal'

      it "[vC] slow down editor", ->
        # ensure 'v', mode: ['visual', 'characterwise']
        moveRightAndLeftCheck('sel', 'vC')


Prompt:
it "[vC] slow down editor", ->
        ensure 'v', mode: ['visual', 'characterwise']
        moveRightAndLeftCheck('vmp', 'vC')
        ensure 'escape', mode: 'normal'

        ensure 'v', mode: ['visual', 'characterwise']

Response:
moveRightAndLeftCheck('vmp', 'vC')
        ensure 'escape', mode: 'normal'

      it "[vC] slow down editor", ->
        # ensure 'v', mode: ['visual', 'characterwise']
        moveRightAndLeftCheck('sel', 'vC')


Response:
_ = require 'underscore-plus'

{getVimState} = require './spec-helper'

xdescribe "visual-mode performance", ->
  [set, ensure, editor, editorElement, vimState] = []

  beforeEach ->
    getVimState (state, _vim) ->
      vimState = state # to refer as vimState later.
      {editor, editorElement} = vimState
      {set, ensure} = _vim

  afterEach ->
    vimState.resetNormalMode()
    vimState.globalState.reset()

  describe "slow down editor", ->
    moveRightAndLeftCheck = (scenario, modeSig) ->
      console.log [scenario, modeSig, atom.getVersion(), atom.packages.getActivePackage('vim-mode-plus').metadata.version]

      moveCount = 89
      switch scenario
        when 'vmp'
          moveByVMP = ->
            _.times moveCount, -> ensure 'l', {}
            _.times moveCount, -> ensure 'h', {}
          _.times 10, -> measureWithTimeEnd(moveByVMP)
        when 'sel'
          moveBySelect = ->
            _.times moveCount, -> editor.getLastSelection().selectRight()
            _.times moveCount, -> editor.getLastSelection().selectLeft()
          _.times 15, -> measureWithTimeEnd(moveBySelect)

    measureWithTimeEnd = (fn) ->
      console.time(fn.name)
      fn()
      console.timeEnd(fn.name)

    beforeEach ->
      set
        cursor: [0, 0]
        text: """
          012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
          """

    describe "vmp", ->
      # beforeEach ->
      it "[normal] slow down editor", ->
        moveRightAndLeftCheck('vmp', 'moveCount')


Prompt:
Convert this CoffeeScript to JavaScript.
```coffeescript
_ = require 'underscore-plus'

{getVimState} = require './spec-helper'

xdescribe "visual-mode performance", ->
  [set, ensure, editor, editorElement, vimState] = []

  beforeEach ->
    getVimState (state, _vim) ->
      vimState = state # to refer as vimState later.
      {editor, editorElement} = vimState
      {set, ensure} = _vim

  afterEach ->
    vimState.resetNormalMode()
    vimState.globalState.reset()

  describe "slow down editor", ->
    moveRightAndLeftCheck = (scenario, modeSig) ->
      console.log [scenario, modeSig, atom.getVersion(), atom.packages.getActivePackage('vim-mode-plus').metadata.version]

      moveCount = 89
      switch scenario
        when 'vmp'
          moveByVMP = ->
            _.times moveCount, -> ensure 'l', {}
            _.times moveCount, -> ensure 'h', {}
          _.times 10, -> measureWithTimeEnd(moveByVMP)
        when 'sel'
          moveBySelect = ->
            _.times moveCount, -> editor.getLastSelection().selectRight()
            _.times moveCount, -> editor.getLastSelection().selectLeft()
          _.times 15, -> measureWithTimeEnd(moveBySelect)

    measureWithTimeEnd = (fn) ->
      console.time(fn.name)
      fn()
      console.timeEnd(fn.name)

    beforeEach ->
      set
        cursor: [0, 0]
        text: """
          012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
          """

    describe "vmp", ->
      # beforeEach ->
      it "[normal] slow down editor", ->
        moveRightAndLeftCheck('vmp', 'moveCount')
```

Response:
var _, getVimState;

_ = require('underscore-plus');

({getVimState} = require('./spec-helper'));

xdescribe("visual-mode performance", function() {
  var editor, editorElement, ensure, set, vimState;
  [set, ensure, editor, editorElement, vimState] = [];
  beforeEach(function() {
    return getVimState(function(state, _vim) {
      vimState = state; // to refer as vimState later.
      ({editor, editorElement} = vimState);
      return ({set, ensure} = _vim);
    });
  });
  afterEach(function() {
    vimState.resetNormalMode();
    return vimState.globalState.reset();
  });
  return describe("slow down editor", function() {
    var measureWithTimeEnd, moveRightAndLeftCheck;
    moveRightAndLeftCheck = function(scenario, modeSig) {
      var moveBySelect, moveByVMP, moveCount;
      console.log([scenario, modeSig, atom.getVersion(), atom.packages.getActivePackage('vim-mode-plus').metadata.version]);
      moveCount = 89;
      switch (scenario) {
        case 'vmp':
          moveByVMP = function() {
            _.times(moveCount, function() {
              return ensure('l', {});
            });
            return _.times(moveCount, function() {
              return ensure('h', {});
            });
          };
          return _.times(10, function() {
            return measureWithTimeEnd(moveByVMP);
          });
        case 'sel':
          moveBySelect = function() {
            _.times(moveCount, function() {
              return editor.getLastSelection().selectRight();
            });
            return _.times(moveCount, function() {
              return editor.getLastSelection().selectLeft();
            });
          };
          return _.times(15, function() {
            return measureWithTimeEnd(moveBySelect);
          });
      }
    };
    measureWithTimeEnd = function(fn) {
      console.time(fn.name);
      fn();
      return console.timeEnd(fn.name);
    };
    beforeEach(function() {
      return set({
        cursor: [0, 0],
        text: `012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789`
      });
    });
    return describe("vmp", function() {
      // beforeEach ->
      return it("[normal] slow down editor", function() {
        return moveRightAndLeftCheck('vmp', 'moveCount');
      });
    });
  });
});


Prompt:
Convert this JavaScript to CoffeeScript.
```javascript
var _, getVimState;

_ = require('underscore-plus');

({getVimState} = require('./spec-helper'));

xdescribe("visual-mode performance", function() {
  var editor, editorElement, ensure, set, vimState;
  [set, ensure, editor, editorElement, vimState] = [];
  beforeEach(function() {
    return getVimState(function(state, _vim) {
      vimState = state; // to refer as vimState later.
      ({editor, editorElement} = vimState);
      return ({set, ensure} = _vim);
    });
  });
  afterEach(function() {
    vimState.resetNormalMode();
    return vimState.globalState.reset();
  });
  return describe("slow down editor", function() {
    var measureWithTimeEnd, moveRightAndLeftCheck;
    moveRightAndLeftCheck = function(scenario, modeSig) {
      var moveBySelect, moveByVMP, moveCount;
      console.log([scenario, modeSig, atom.getVersion(), atom.packages.getActivePackage('vim-mode-plus').metadata.version]);
      moveCount = 89;
      switch (scenario) {
        case 'vmp':
          moveByVMP = function() {
            _.times(moveCount, function() {
              return ensure('l', {});
            });
            return _.times(moveCount, function() {
              return ensure('h', {});
            });
          };
          return _.times(10, function() {
            return measureWithTimeEnd(moveByVMP);
          });
        case 'sel':
          moveBySelect = function() {
            _.times(moveCount, function() {
              return editor.getLastSelection().selectRight();
            });
            return _.times(moveCount, function() {
              return editor.getLastSelection().selectLeft();
            });
          };
          return _.times(15, function() {
            return measureWithTimeEnd(moveBySelect);
          });
      }
    };
    measureWithTimeEnd = function(fn) {
      console.time(fn.name);
      fn();
      return console.timeEnd(fn.name);
    };
    beforeEach(function() {
      return set({
        cursor: [0, 0],
        text: `012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789`
      });
    });
    return describe("vmp", function() {
      // beforeEach ->
      return it("[normal] slow down editor", function() {
        return moveRightAndLeftCheck('vmp', 'moveCount');
      });
    });
  });
});
```

Response:
_ = require 'underscore-plus'

{getVimState} = require './spec-helper'

xdescribe "visual-mode performance", ->
  [set, ensure, editor, editorElement, vimState] = []

  beforeEach ->
    getVimState (state, _vim) ->
      vimState = state # to refer as vimState later.
      {editor, editorElement} = vimState
      {set, ensure} = _vim

  afterEach ->
    vimState.resetNormalMode()
    vimState.globalState.reset()

  describe "slow down editor", ->
    moveRightAndLeftCheck = (scenario, modeSig) ->
      console.log [scenario, modeSig, atom.getVersion(), atom.packages.getActivePackage('vim-mode-plus').metadata.version]

      moveCount = 89
      switch scenario
        when 'vmp'
          moveByVMP = ->
            _.times moveCount, -> ensure 'l', {}
            _.times moveCount, -> ensure 'h', {}
          _.times 10, -> measureWithTimeEnd(moveByVMP)
        when 'sel'
          moveBySelect = ->
            _.times moveCount, -> editor.getLastSelection().selectRight()
            _.times moveCount, -> editor.getLastSelection().selectLeft()
          _.times 15, -> measureWithTimeEnd(moveBySelect)

    measureWithTimeEnd = (fn) ->
      console.time(fn.name)
      fn()
      console.timeEnd(fn.name)

    beforeEach ->
      set
        cursor: [0, 0]
        text: """
          012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
          """

    describe "vmp", ->
      # beforeEach ->
      it "[normal] slow down editor", ->
        moveRightAndLeftCheck('vmp', 'moveCount')


Prompt:
_ = require 'underscore-plus'

{getVimState} = require './spec-helper'

xdescribe "visual-mode performance", ->
  [set, ensure, editor, editorElement, vimState] = []

  beforeEach ->
    getVimState (state, _vim) ->
      vimState = state # to refer as vimState later.
      {editor, editorElement} = vimState
      {set, ensure} = _vim

  afterEach ->
    vimState.resetNormalMode()
    vimState.globalState.reset()

  describe "slow down editor", ->
    moveRightAndLeftCheck = (scenario, modeSig) ->
      console.log [scenario, modeSig, atom.getVersion(), atom.packages.getActivePackage('vim-mode-plus').metadata.version]

      moveCount = 89
      switch scenario
        when 'vmp'
          moveByVMP = ->

Response:
_.times moveCount, -> ensure 'l', {}
            _.times moveCount, -> ensure 'h', {}
          _.times 10, -> measureWithTimeEnd(moveByVMP)
        when 'sel'
          moveBySelect = ->
            _.times moveCount, -> editor.getLastSelection().selectRight()
            _.times moveCount, -> editor.getLastSelection().selectLeft()
          _.times 15, -> measureWithTimeEnd(moveBySelect)

    measureWithTimeEnd = (fn) ->
      console.time(fn.name)
      fn()
      console.timeEnd(fn.name)

    beforeEach ->
      set
        cursor: [0, 0]
        text: """
          012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
          """

    describe "vmp", ->
      # beforeEach ->
      it "[normal] slow down editor", ->
        moveRightAndLeftCheck('vmp', 'moveCount')


Response:
_ = require 'underscore-plus'

{getVimState} = require './spec-helper'

xdescribe "visual-mode performance", ->
  [set, ensure, keystroke, editor, editorElement, vimState] = []

  beforeEach ->
    getVimState (state, _vim) ->
      vimState = state # to refer as vimState later.
      {editor, editorElement} = vimState
      {set, ensure, keystroke} = _vim

  afterEach ->
    vimState.resetNormalMode()
    vimState.globalState.reset()

  describe "slow down editor", ->
    moveRightAndLeftCheck = (scenario, modeSig) ->
      console.log [scenario, modeSig, atom.getVersion(), atom.packages.getActivePackage('vim-mode-plus').metadata.version]

      moveCount = 89
      switch scenario
        when 'vmp'
          moveByVMP = ->
            _.times moveCount, -> keystroke 'l'
            _.times moveCount, -> keystroke 'h'
          _.times 10, -> measureWithTimeEnd(moveByVMP)
        when 'sel'
          moveBySelect = ->
            _.times moveCount, -> editor.getLastSelection().selectRight()
            _.times moveCount, -> editor.getLastSelection().selectLeft()
          _.times 15, -> measureWithTimeEnd(moveBySelect)

    measureWithTimeEnd = (fn) ->
      console.time(fn.name)
      fn()
      console.timeEnd(fn.name)

    beforeEach ->
      set
        cursor: [0, 0]
        text: """
          012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
          """

    describe "vmp", ->
      # beforeEach ->
      it "[normal] slow down editor", ->
        moveRightAndLeftCheck('vmp', 'moveCount')


Prompt:
Convert this CoffeeScript to JavaScript.
```coffeescript
_ = require 'underscore-plus'

{getVimState} = require './spec-helper'

xdescribe "visual-mode performance", ->
  [set, ensure, keystroke, editor, editorElement, vimState] = []

  beforeEach ->
    getVimState (state, _vim) ->
      vimState = state # to refer as vimState later.
      {editor, editorElement} = vimState
      {set, ensure, keystroke} = _vim

  afterEach ->
    vimState.resetNormalMode()
    vimState.globalState.reset()

  describe "slow down editor", ->
    moveRightAndLeftCheck = (scenario, modeSig) ->
      console.log [scenario, modeSig, atom.getVersion(), atom.packages.getActivePackage('vim-mode-plus').metadata.version]

      moveCount = 89
      switch scenario
        when 'vmp'
          moveByVMP = ->
            _.times moveCount, -> keystroke 'l'
            _.times moveCount, -> keystroke 'h'
          _.times 10, -> measureWithTimeEnd(moveByVMP)
        when 'sel'
          moveBySelect = ->
            _.times moveCount, -> editor.getLastSelection().selectRight()
            _.times moveCount, -> editor.getLastSelection().selectLeft()
          _.times 15, -> measureWithTimeEnd(moveBySelect)

    measureWithTimeEnd = (fn) ->
      console.time(fn.name)
      fn()
      console.timeEnd(fn.name)

    beforeEach ->
      set
        cursor: [0, 0]
        text: """
          012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
          """

    describe "vmp", ->
      # beforeEach ->
      it "[normal] slow down editor", ->
        moveRightAndLeftCheck('vmp', 'moveCount')
```

Response:
var _, getVimState;

_ = require('underscore-plus');

({getVimState} = require('./spec-helper'));

xdescribe("visual-mode performance", function() {
  var editor, editorElement, ensure, keystroke, set, vimState;
  [set, ensure, keystroke, editor, editorElement, vimState] = [];
  beforeEach(function() {
    return getVimState(function(state, _vim) {
      vimState = state; // to refer as vimState later.
      ({editor, editorElement} = vimState);
      return ({set, ensure, keystroke} = _vim);
    });
  });
  afterEach(function() {
    vimState.resetNormalMode();
    return vimState.globalState.reset();
  });
  return describe("slow down editor", function() {
    var measureWithTimeEnd, moveRightAndLeftCheck;
    moveRightAndLeftCheck = function(scenario, modeSig) {
      var moveBySelect, moveByVMP, moveCount;
      console.log([scenario, modeSig, atom.getVersion(), atom.packages.getActivePackage('vim-mode-plus').metadata.version]);
      moveCount = 89;
      switch (scenario) {
        case 'vmp':
          moveByVMP = function() {
            _.times(moveCount, function() {
              return keystroke('l');
            });
            return _.times(moveCount, function() {
              return keystroke('h');
            });
          };
          return _.times(10, function() {
            return measureWithTimeEnd(moveByVMP);
          });
        case 'sel':
          moveBySelect = function() {
            _.times(moveCount, function() {
              return editor.getLastSelection().selectRight();
            });
            return _.times(moveCount, function() {
              return editor.getLastSelection().selectLeft();
            });
          };
          return _.times(15, function() {
            return measureWithTimeEnd(moveBySelect);
          });
      }
    };
    measureWithTimeEnd = function(fn) {
      console.time(fn.name);
      fn();
      return console.timeEnd(fn.name);
    };
    beforeEach(function() {
      return set({
        cursor: [0, 0],
        text: `012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789`
      });
    });
    return describe("vmp", function() {
      // beforeEach ->
      return it("[normal] slow down editor", function() {
        return moveRightAndLeftCheck('vmp', 'moveCount');
      });
    });
  });
});


Prompt:
Convert this JavaScript to CoffeeScript.
```javascript
var _, getVimState;

_ = require('underscore-plus');

({getVimState} = require('./spec-helper'));

xdescribe("visual-mode performance", function() {
  var editor, editorElement, ensure, keystroke, set, vimState;
  [set, ensure, keystroke, editor, editorElement, vimState] = [];
  beforeEach(function() {
    return getVimState(function(state, _vim) {
      vimState = state; // to refer as vimState later.
      ({editor, editorElement} = vimState);
      return ({set, ensure, keystroke} = _vim);
    });
  });
  afterEach(function() {
    vimState.resetNormalMode();
    return vimState.globalState.reset();
  });
  return describe("slow down editor", function() {
    var measureWithTimeEnd, moveRightAndLeftCheck;
    moveRightAndLeftCheck = function(scenario, modeSig) {
      var moveBySelect, moveByVMP, moveCount;
      console.log([scenario, modeSig, atom.getVersion(), atom.packages.getActivePackage('vim-mode-plus').metadata.version]);
      moveCount = 89;
      switch (scenario) {
        case 'vmp':
          moveByVMP = function() {
            _.times(moveCount, function() {
              return keystroke('l');
            });
            return _.times(moveCount, function() {
              return keystroke('h');
            });
          };
          return _.times(10, function() {
            return measureWithTimeEnd(moveByVMP);
          });
        case 'sel':
          moveBySelect = function() {
            _.times(moveCount, function() {
              return editor.getLastSelection().selectRight();
            });
            return _.times(moveCount, function() {
              return editor.getLastSelection().selectLeft();
            });
          };
          return _.times(15, function() {
            return measureWithTimeEnd(moveBySelect);
          });
      }
    };
    measureWithTimeEnd = function(fn) {
      console.time(fn.name);
      fn();
      return console.timeEnd(fn.name);
    };
    beforeEach(function() {
      return set({
        cursor: [0, 0],
        text: `012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789`
      });
    });
    return describe("vmp", function() {
      // beforeEach ->
      return it("[normal] slow down editor", function() {
        return moveRightAndLeftCheck('vmp', 'moveCount');
      });
    });
  });
});
```

Response:
_ = require 'underscore-plus'

{getVimState} = require './spec-helper'

xdescribe "visual-mode performance", ->
  [set, ensure, keystroke, editor, editorElement, vimState] = []

  beforeEach ->
    getVimState (state, _vim) ->
      vimState = state # to refer as vimState later.
      {editor, editorElement} = vimState
      {set, ensure, keystroke} = _vim

  afterEach ->
    vimState.resetNormalMode()
    vimState.globalState.reset()

  describe "slow down editor", ->
    moveRightAndLeftCheck = (scenario, modeSig) ->
      console.log [scenario, modeSig, atom.getVersion(), atom.packages.getActivePackage('vim-mode-plus').metadata.version]

      moveCount = 89
      switch scenario
        when 'vmp'
          moveByVMP = ->
            _.times moveCount, -> keystroke 'l'
            _.times moveCount, -> keystroke 'h'
          _.times 10, -> measureWithTimeEnd(moveByVMP)
        when 'sel'
          moveBySelect = ->
            _.times moveCount, -> editor.getLastSelection().selectRight()
            _.times moveCount, -> editor.getLastSelection().selectLeft()
          _.times 15, -> measureWithTimeEnd(moveBySelect)

    measureWithTimeEnd = (fn) ->
      console.time(fn.name)
      fn()
      console.timeEnd(fn.name)

    beforeEach ->
      set
        cursor: [0, 0]
        text: """
          012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
          """

    describe "vmp", ->
      # beforeEach ->
      it "[normal] slow down editor", ->
        moveRightAndLeftCheck('vmp', 'moveCount')


Prompt:
_ = require 'underscore-plus'

{getVimState} = require './spec-helper'

xdescribe "visual-mode performance", ->
  [set, ensure, keystroke, editor, editorElement, vimState] = []

  beforeEach ->
    getVimState (state, _vim) ->
      vimState = state # to refer as vimState later.
      {editor, editorElement} = vimState
      {set, ensure, keystroke} = _vim

  afterEach ->
    vimState.resetNormalMode()
    vimState.globalState.reset()

  describe "slow down editor", ->
    moveRightAndLeftCheck = (scenario, modeSig) ->
      console.log [scenario, modeSig, atom.getVersion(), atom.packages.getActivePackage('vim-mode-plus').metadata.version]

      moveCount = 89
      switch scenario
        when 'vmp'
          moveByVMP = ->

Response:
_.times moveCount, -> keystroke 'l'
            _.times moveCount, -> keystroke 'h'
          _.times 10, -> measureWithTimeEnd(moveByVMP)
        when 'sel'
          moveBySelect = ->
            _.times moveCount, -> editor.getLastSelection().selectRight()
            _.times moveCount, -> editor.getLastSelection().selectLeft()
          _.times 15, -> measureWithTimeEnd(moveBySelect)

    measureWithTimeEnd = (fn) ->
      console.time(fn.name)
      fn()
      console.timeEnd(fn.name)

    beforeEach ->
      set
        cursor: [0, 0]
        text: """
          012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
          """

    describe "vmp", ->
      # beforeEach ->
      it "[normal] slow down editor", ->
        moveRightAndLeftCheck('vmp', 'moveCount')


Response:
# Copyright (c) 2013 JeongHoon Byun aka "Outsider", <http://blog.outsider.ne.kr/>
# Licensed under the MIT license.
# <http://outsider.mit-license.org/>

should = require 'should'
service = require '../src/service'
timeline = require '../src/timeline'
parser = require '../src/parser/parser'

describe 'service >', ->

  before (done) ->
    setTimeout (->
      done()
    ), 1000

  it.skip 'fetch githubarchive', (done) ->
    service.fetchGithubArchive "2013-04-01-15", (err) ->
      done()

  it 'progress timeline', (done) ->
    service.progressTimeline (err) ->
      setTimeout (->
        done()
      ), 200000

  it 'summarize score', (done) ->
    service.summarizeScore (err) ->
      setTimeout (->
        done()
      ), 10000

  it 'find score', (done) ->
    service.findScore 'js', (err, scores) ->
      #console.log(require('util').inspect(scores, false, 5));
      done()

  it 'parsing commit test', (done) ->
    process.on 'uncaughtException', (err) ->
      console.log('Caught exception: ' + err);

    item =
      repository:
        owner: 'realodix'
        name: 'WBPL-MusicLight'
      payload:
        shas: [[
          "36833e34d63b4b93ac512e041b201bdf4c126f08"
        ]]


Prompt:
Convert this CoffeeScript to JavaScript.
```coffeescript
# Copyright (c) 2013 JeongHoon Byun aka "Outsider", <http://blog.outsider.ne.kr/>
# Licensed under the MIT license.
# <http://outsider.mit-license.org/>

should = require 'should'
service = require '../src/service'
timeline = require '../src/timeline'
parser = require '../src/parser/parser'

describe 'service >', ->

  before (done) ->
    setTimeout (->
      done()
    ), 1000

  it.skip 'fetch githubarchive', (done) ->
    service.fetchGithubArchive "2013-04-01-15", (err) ->
      done()

  it 'progress timeline', (done) ->
    service.progressTimeline (err) ->
      setTimeout (->
        done()
      ), 200000

  it 'summarize score', (done) ->
    service.summarizeScore (err) ->
      setTimeout (->
        done()
      ), 10000

  it 'find score', (done) ->
    service.findScore 'js', (err, scores) ->
      #console.log(require('util').inspect(scores, false, 5));
      done()

  it 'parsing commit test', (done) ->
    process.on 'uncaughtException', (err) ->
      console.log('Caught exception: ' + err);

    item =
      repository:
        owner: 'realodix'
        name: 'WBPL-MusicLight'
      payload:
        shas: [[
          "36833e34d63b4b93ac512e041b201bdf4c126f08"
        ]]
```

Response:
// Copyright (c) 2013 JeongHoon Byun aka "Outsider", <http://blog.outsider.ne.kr/>
// Licensed under the MIT license.
// <http://outsider.mit-license.org/>
var parser, service, should, timeline;

should = require('should');

service = require('../src/service');

timeline = require('../src/timeline');

parser = require('../src/parser/parser');

describe('service >', function() {
  before(function(done) {
    return setTimeout((function() {
      return done();
    }), 1000);
  });
  it.skip('fetch githubarchive', function(done) {
    return service.fetchGithubArchive("2013-04-01-15", function(err) {
      return done();
    });
  });
  it('progress timeline', function(done) {
    return service.progressTimeline(function(err) {
      return setTimeout((function() {
        return done();
      }), 200000);
    });
  });
  it('summarize score', function(done) {
    return service.summarizeScore(function(err) {
      return setTimeout((function() {
        return done();
      }), 10000);
    });
  });
  it('find score', function(done) {
    return service.findScore('js', function(err, scores) {
      //console.log(require('util').inspect(scores, false, 5));
      return done();
    });
  });
  return it('parsing commit test', function(done) {
    var item;
    process.on('uncaughtException', function(err) {
      return console.log('Caught exception: ' + err);
    });
    return item = {
      repository: {
        owner: 'realodix',
        name: 'WBPL-MusicLight'
      },
      payload: {
        shas: [["36833e34d63b4b93ac512e041b201bdf4c126f08"]]
      }
    };
  });
});


Prompt:
Convert this JavaScript to CoffeeScript.
```javascript
// Copyright (c) 2013 JeongHoon Byun aka "Outsider", <http://blog.outsider.ne.kr/>
// Licensed under the MIT license.
// <http://outsider.mit-license.org/>
var parser, service, should, timeline;

should = require('should');

service = require('../src/service');

timeline = require('../src/timeline');

parser = require('../src/parser/parser');

describe('service >', function() {
  before(function(done) {
    return setTimeout((function() {
      return done();
    }), 1000);
  });
  it.skip('fetch githubarchive', function(done) {
    return service.fetchGithubArchive("2013-04-01-15", function(err) {
      return done();
    });
  });
  it('progress timeline', function(done) {
    return service.progressTimeline(function(err) {
      return setTimeout((function() {
        return done();
      }), 200000);
    });
  });
  it('summarize score', function(done) {
    return service.summarizeScore(function(err) {
      return setTimeout((function() {
        return done();
      }), 10000);
    });
  });
  it('find score', function(done) {
    return service.findScore('js', function(err, scores) {
      //console.log(require('util').inspect(scores, false, 5));
      return done();
    });
  });
  return it('parsing commit test', function(done) {
    var item;
    process.on('uncaughtException', function(err) {
      return console.log('Caught exception: ' + err);
    });
    return item = {
      repository: {
        owner: 'realodix',
        name: 'WBPL-MusicLight'
      },
      payload: {
        shas: [["36833e34d63b4b93ac512e041b201bdf4c126f08"]]
      }
    };
  });
});
```

Response:
# Copyright (c) 2013 JeongHoon Byun aka "Outsider", <http://blog.outsider.ne.kr/>
# Licensed under the MIT license.
# <http://outsider.mit-license.org/>

should = require 'should'
service = require '../src/service'
timeline = require '../src/timeline'
parser = require '../src/parser/parser'

describe 'service >', ->

  before (done) ->
    setTimeout (->
      done()
    ), 1000

  it.skip 'fetch githubarchive', (done) ->
    service.fetchGithubArchive "2013-04-01-15", (err) ->
      done()

  it 'progress timeline', (done) ->
    service.progressTimeline (err) ->
      setTimeout (->
        done()
      ), 200000

  it 'summarize score', (done) ->
    service.summarizeScore (err) ->
      setTimeout (->
        done()
      ), 10000

  it 'find score', (done) ->
    service.findScore 'js', (err, scores) ->
      #console.log(require('util').inspect(scores, false, 5));
      done()

  it 'parsing commit test', (done) ->
    process.on 'uncaughtException', (err) ->
      console.log('Caught exception: ' + err);

    item =
      repository:
        owner: 'realodix'
        name: 'WBPL-MusicLight'
      payload:
        shas: [[
          "36833e34d63b4b93ac512e041b201bdf4c126f08"
        ]]


Prompt:
# Copyright (c) 2013 JeongHoon Byun aka "Outsider", <http://blog.outsider.ne.kr/>
# Licensed under the MIT license.
# <http://outsider.mit-license.org/>

should = require 'should'
service = require '../src/service'
timeline = require '../src/timeline'
parser = require '../src/parser/parser'

describe 'service >', ->

  before (done) ->
    setTimeout (->
      done()
    ), 1000

  it.skip 'fetch githubarchive', (done) ->
    service.fetchGithubArchive "2013-04-01-15", (err) ->
      done()

  it 'progress timeline', (done) ->
    service.progressTimeline (err) ->
      setTimeout (->
        done()

Response:
), 200000

  it 'summarize score', (done) ->
    service.summarizeScore (err) ->
      setTimeout (->
        done()
      ), 10000

  it 'find score', (done) ->
    service.findScore 'js', (err, scores) ->
      #console.log(require('util').inspect(scores, false, 5));
      done()

  it 'parsing commit test', (done) ->
    process.on 'uncaughtException', (err) ->
      console.log('Caught exception: ' + err);

    item =
      repository:
        owner: 'realodix'
        name: 'WBPL-MusicLight'
      payload:
        shas: [[
          "36833e34d63b4b93ac512e041b201bdf4c126f08"
        ]]


Response:
urls = timeline.getCommitUrls item
    timeline.getCommitInfo urls[0], (err, commit) ->
      conventions = parser.parse commit
      console.log conventions
      done()

  it 'find desc', (done) ->
    service.findDescription (err, desc) ->
      console.log desc
      done()


Prompt:
urls = timeline.getCommitUrls item
    timeline.getCommitInfo urls[0], (err, commit) ->
      conventions = parser.parse commit
      console.log conventions
      done()

Response:
it 'find desc', (done) ->
    service.findDescription (err, desc) ->
      console.log desc
      done()


Response:
# Copyright (c) 2013 JeongHoon Byun aka "Outsider", <http://blog.outsider.ne.kr/>
# Licensed under the MIT license.
# <http://outsider.mit-license.org/>

should = require 'should'
service = require '../src/service'
timeline = require '../src/timeline'
parser = require '../src/parser/parser'

describe 'service >', ->

  before (done) ->
    setTimeout (->
      done()
    ), 1000

  it.skip 'fetch githubarchive', (done) ->
    service.fetchGithubArchive "2013-04-01-15", (err) ->
      done()

  it 'progress timeline', (done) ->
    service.progressTimeline (err) ->
      setTimeout (->
        done()
      ), 200000

  it 'summarize score', (done) ->
    service.summarizeScore (err) ->
      setTimeout (->
        done()
      ), 10000

  it 'find score', (done) ->
    service.findScore 'js', (err, scores) ->
      #console.log(require('util').inspect(scores, false, 5));
      done()

  it 'parsing commit test', (done) ->
    process.on 'uncaughtException', (err) ->
      console.log('Caught exception: ' + err);

    item =
      repository:
        owner: 'infinispan'
        name: 'infinispan'
      payload:
        shas: [[
          "c1f3fcbf538ee809396b968fe1965573fa5e3bd8"
        ]]


Prompt:
Convert this CoffeeScript to JavaScript.
```coffeescript
# Copyright (c) 2013 JeongHoon Byun aka "Outsider", <http://blog.outsider.ne.kr/>
# Licensed under the MIT license.
# <http://outsider.mit-license.org/>

should = require 'should'
service = require '../src/service'
timeline = require '../src/timeline'
parser = require '../src/parser/parser'

describe 'service >', ->

  before (done) ->
    setTimeout (->
      done()
    ), 1000

  it.skip 'fetch githubarchive', (done) ->
    service.fetchGithubArchive "2013-04-01-15", (err) ->
      done()

  it 'progress timeline', (done) ->
    service.progressTimeline (err) ->
      setTimeout (->
        done()
      ), 200000

  it 'summarize score', (done) ->
    service.summarizeScore (err) ->
      setTimeout (->
        done()
      ), 10000

  it 'find score', (done) ->
    service.findScore 'js', (err, scores) ->
      #console.log(require('util').inspect(scores, false, 5));
      done()

  it 'parsing commit test', (done) ->
    process.on 'uncaughtException', (err) ->
      console.log('Caught exception: ' + err);

    item =
      repository:
        owner: 'infinispan'
        name: 'infinispan'
      payload:
        shas: [[
          "c1f3fcbf538ee809396b968fe1965573fa5e3bd8"
        ]]
```

Response:
// Copyright (c) 2013 JeongHoon Byun aka "Outsider", <http://blog.outsider.ne.kr/>
// Licensed under the MIT license.
// <http://outsider.mit-license.org/>
var parser, service, should, timeline;

should = require('should');

service = require('../src/service');

timeline = require('../src/timeline');

parser = require('../src/parser/parser');

describe('service >', function() {
  before(function(done) {
    return setTimeout((function() {
      return done();
    }), 1000);
  });
  it.skip('fetch githubarchive', function(done) {
    return service.fetchGithubArchive("2013-04-01-15", function(err) {
      return done();
    });
  });
  it('progress timeline', function(done) {
    return service.progressTimeline(function(err) {
      return setTimeout((function() {
        return done();
      }), 200000);
    });
  });
  it('summarize score', function(done) {
    return service.summarizeScore(function(err) {
      return setTimeout((function() {
        return done();
      }), 10000);
    });
  });
  it('find score', function(done) {
    return service.findScore('js', function(err, scores) {
      //console.log(require('util').inspect(scores, false, 5));
      return done();
    });
  });
  return it('parsing commit test', function(done) {
    var item;
    process.on('uncaughtException', function(err) {
      return console.log('Caught exception: ' + err);
    });
    return item = {
      repository: {
        owner: 'infinispan',
        name: 'infinispan'
      },
      payload: {
        shas: [["c1f3fcbf538ee809396b968fe1965573fa5e3bd8"]]
      }
    };
  });
});


Prompt:
Convert this JavaScript to CoffeeScript.
```javascript
// Copyright (c) 2013 JeongHoon Byun aka "Outsider", <http://blog.outsider.ne.kr/>
// Licensed under the MIT license.
// <http://outsider.mit-license.org/>
var parser, service, should, timeline;

should = require('should');

service = require('../src/service');

timeline = require('../src/timeline');

parser = require('../src/parser/parser');

describe('service >', function() {
  before(function(done) {
    return setTimeout((function() {
      return done();
    }), 1000);
  });
  it.skip('fetch githubarchive', function(done) {
    return service.fetchGithubArchive("2013-04-01-15", function(err) {
      return done();
    });
  });
  it('progress timeline', function(done) {
    return service.progressTimeline(function(err) {
      return setTimeout((function() {
        return done();
      }), 200000);
    });
  });
  it('summarize score', function(done) {
    return service.summarizeScore(function(err) {
      return setTimeout((function() {
        return done();
      }), 10000);
    });
  });
  it('find score', function(done) {
    return service.findScore('js', function(err, scores) {
      //console.log(require('util').inspect(scores, false, 5));
      return done();
    });
  });
  return it('parsing commit test', function(done) {
    var item;
    process.on('uncaughtException', function(err) {
      return console.log('Caught exception: ' + err);
    });
    return item = {
      repository: {
        owner: 'infinispan',
        name: 'infinispan'
      },
      payload: {
        shas: [["c1f3fcbf538ee809396b968fe1965573fa5e3bd8"]]
      }
    };
  });
});
```

Response:
# Copyright (c) 2013 JeongHoon Byun aka "Outsider", <http://blog.outsider.ne.kr/>
# Licensed under the MIT license.
# <http://outsider.mit-license.org/>

should = require 'should'
service = require '../src/service'
timeline = require '../src/timeline'
parser = require '../src/parser/parser'

describe 'service >', ->

  before (done) ->
    setTimeout (->
      done()
    ), 1000

  it.skip 'fetch githubarchive', (done) ->
    service.fetchGithubArchive "2013-04-01-15", (err) ->
      done()

  it 'progress timeline', (done) ->
    service.progressTimeline (err) ->
      setTimeout (->
        done()
      ), 200000

  it 'summarize score', (done) ->
    service.summarizeScore (err) ->
      setTimeout (->
        done()
      ), 10000

  it 'find score', (done) ->
    service.findScore 'js', (err, scores) ->
      #console.log(require('util').inspect(scores, false, 5));
      done()

  it 'parsing commit test', (done) ->
    process.on 'uncaughtException', (err) ->
      console.log('Caught exception: ' + err);

    item =
      repository:
        owner: 'infinispan'
        name: 'infinispan'
      payload:
        shas: [[
          "c1f3fcbf538ee809396b968fe1965573fa5e3bd8"
        ]]


Prompt:
# Copyright (c) 2013 JeongHoon Byun aka "Outsider", <http://blog.outsider.ne.kr/>
# Licensed under the MIT license.
# <http://outsider.mit-license.org/>

should = require 'should'
service = require '../src/service'
timeline = require '../src/timeline'
parser = require '../src/parser/parser'

describe 'service >', ->

  before (done) ->
    setTimeout (->
      done()
    ), 1000

  it.skip 'fetch githubarchive', (done) ->
    service.fetchGithubArchive "2013-04-01-15", (err) ->
      done()

  it 'progress timeline', (done) ->
    service.progressTimeline (err) ->
      setTimeout (->
        done()

Response:
), 200000

  it 'summarize score', (done) ->
    service.summarizeScore (err) ->
      setTimeout (->
        done()
      ), 10000

  it 'find score', (done) ->
    service.findScore 'js', (err, scores) ->
      #console.log(require('util').inspect(scores, false, 5));
      done()

  it 'parsing commit test', (done) ->
    process.on 'uncaughtException', (err) ->
      console.log('Caught exception: ' + err);

    item =
      repository:
        owner: 'infinispan'
        name: 'infinispan'
      payload:
        shas: [[
          "c1f3fcbf538ee809396b968fe1965573fa5e3bd8"
        ]]


Response:
# Copyright (c) 2013 JeongHoon Byun aka "Outsider", <http://blog.outsider.ne.kr/>
# Licensed under the MIT license.
# <http://outsider.mit-license.org/>

should = require 'should'
service = require '../src/service'
timeline = require '../src/timeline'
parser = require '../src/parser/parser'

describe 'service >', ->

  before (done) ->
    setTimeout (->
      done()
    ), 1000

  it.skip 'fetch githubarchive', (done) ->
    service.fetchGithubArchive "2013-04-01-15", (err) ->
      done()

  it 'progress timeline', (done) ->
    service.progressTimeline (err) ->
      setTimeout (->
        done()
      ), 200000

  it 'summarize score', (done) ->
    service.summarizeScore (err) ->
      setTimeout (->
        done()
      ), 10000

  it 'find score', (done) ->
    service.findScore 'js', (err, scores) ->
      #console.log(require('util').inspect(scores, false, 5));
      done()

  it 'parsing commit test', (done) ->
    process.on 'uncaughtException', (err) ->
      console.log('Caught exception: ' + err);

    item =
      repository:
        owner: 'kivy'
        name: 'kivy'
      payload:
        shas: [[
          "b37fac0ab1b8ec3f6891116b31ce0d019b29ed36"
        ]]


Prompt:
Convert this CoffeeScript to JavaScript.
```coffeescript
# Copyright (c) 2013 JeongHoon Byun aka "Outsider", <http://blog.outsider.ne.kr/>
# Licensed under the MIT license.
# <http://outsider.mit-license.org/>

should = require 'should'
service = require '../src/service'
timeline = require '../src/timeline'
parser = require '../src/parser/parser'

describe 'service >', ->

  before (done) ->
    setTimeout (->
      done()
    ), 1000

  it.skip 'fetch githubarchive', (done) ->
    service.fetchGithubArchive "2013-04-01-15", (err) ->
      done()

  it 'progress timeline', (done) ->
    service.progressTimeline (err) ->
      setTimeout (->
        done()
      ), 200000

  it 'summarize score', (done) ->
    service.summarizeScore (err) ->
      setTimeout (->
        done()
      ), 10000

  it 'find score', (done) ->
    service.findScore 'js', (err, scores) ->
      #console.log(require('util').inspect(scores, false, 5));
      done()

  it 'parsing commit test', (done) ->
    process.on 'uncaughtException', (err) ->
      console.log('Caught exception: ' + err);

    item =
      repository:
        owner: 'kivy'
        name: 'kivy'
      payload:
        shas: [[
          "b37fac0ab1b8ec3f6891116b31ce0d019b29ed36"
        ]]
```

Response:
// Copyright (c) 2013 JeongHoon Byun aka "Outsider", <http://blog.outsider.ne.kr/>
// Licensed under the MIT license.
// <http://outsider.mit-license.org/>
var parser, service, should, timeline;

should = require('should');

service = require('../src/service');

timeline = require('../src/timeline');

parser = require('../src/parser/parser');

describe('service >', function() {
  before(function(done) {
    return setTimeout((function() {
      return done();
    }), 1000);
  });
  it.skip('fetch githubarchive', function(done) {
    return service.fetchGithubArchive("2013-04-01-15", function(err) {
      return done();
    });
  });
  it('progress timeline', function(done) {
    return service.progressTimeline(function(err) {
      return setTimeout((function() {
        return done();
      }), 200000);
    });
  });
  it('summarize score', function(done) {
    return service.summarizeScore(function(err) {
      return setTimeout((function() {
        return done();
      }), 10000);
    });
  });
  it('find score', function(done) {
    return service.findScore('js', function(err, scores) {
      //console.log(require('util').inspect(scores, false, 5));
      return done();
    });
  });
  return it('parsing commit test', function(done) {
    var item;
    process.on('uncaughtException', function(err) {
      return console.log('Caught exception: ' + err);
    });
    return item = {
      repository: {
        owner: 'kivy',
        name: 'kivy'
      },
      payload: {
        shas: [["b37fac0ab1b8ec3f6891116b31ce0d019b29ed36"]]
      }
    };
  });
});


Prompt:
Convert this JavaScript to CoffeeScript.
```javascript
// Copyright (c) 2013 JeongHoon Byun aka "Outsider", <http://blog.outsider.ne.kr/>
// Licensed under the MIT license.
// <http://outsider.mit-license.org/>
var parser, service, should, timeline;

should = require('should');

service = require('../src/service');

timeline = require('../src/timeline');

parser = require('../src/parser/parser');

describe('service >', function() {
  before(function(done) {
    return setTimeout((function() {
      return done();
    }), 1000);
  });
  it.skip('fetch githubarchive', function(done) {
    return service.fetchGithubArchive("2013-04-01-15", function(err) {
      return done();
    });
  });
  it('progress timeline', function(done) {
    return service.progressTimeline(function(err) {
      return setTimeout((function() {
        return done();
      }), 200000);
    });
  });
  it('summarize score', function(done) {
    return service.summarizeScore(function(err) {
      return setTimeout((function() {
        return done();
      }), 10000);
    });
  });
  it('find score', function(done) {
    return service.findScore('js', function(err, scores) {
      //console.log(require('util').inspect(scores, false, 5));
      return done();
    });
  });
  return it('parsing commit test', function(done) {
    var item;
    process.on('uncaughtException', function(err) {
      return console.log('Caught exception: ' + err);
    });
    return item = {
      repository: {
        owner: 'kivy',
        name: 'kivy'
      },
      payload: {
        shas: [["b37fac0ab1b8ec3f6891116b31ce0d019b29ed36"]]
      }
    };
  });
});
```

Response:
# Copyright (c) 2013 JeongHoon Byun aka "Outsider", <http://blog.outsider.ne.kr/>
# Licensed under the MIT license.
# <http://outsider.mit-license.org/>

should = require 'should'
service = require '../src/service'
timeline = require '../src/timeline'
parser = require '../src/parser/parser'

describe 'service >', ->

  before (done) ->
    setTimeout (->
      done()
    ), 1000

  it.skip 'fetch githubarchive', (done) ->
    service.fetchGithubArchive "2013-04-01-15", (err) ->
      done()

  it 'progress timeline', (done) ->
    service.progressTimeline (err) ->
      setTimeout (->
        done()
      ), 200000

  it 'summarize score', (done) ->
    service.summarizeScore (err) ->
      setTimeout (->
        done()
      ), 10000

  it 'find score', (done) ->
    service.findScore 'js', (err, scores) ->
      #console.log(require('util').inspect(scores, false, 5));
      done()

  it 'parsing commit test', (done) ->
    process.on 'uncaughtException', (err) ->
      console.log('Caught exception: ' + err);

    item =
      repository:
        owner: 'kivy'
        name: 'kivy'
      payload:
        shas: [[
          "b37fac0ab1b8ec3f6891116b31ce0d019b29ed36"
        ]]


Prompt:
# Copyright (c) 2013 JeongHoon Byun aka "Outsider", <http://blog.outsider.ne.kr/>
# Licensed under the MIT license.
# <http://outsider.mit-license.org/>

should = require 'should'
service = require '../src/service'
timeline = require '../src/timeline'
parser = require '../src/parser/parser'

describe 'service >', ->

  before (done) ->
    setTimeout (->
      done()
    ), 1000

  it.skip 'fetch githubarchive', (done) ->
    service.fetchGithubArchive "2013-04-01-15", (err) ->
      done()

  it 'progress timeline', (done) ->
    service.progressTimeline (err) ->
      setTimeout (->
        done()

Response:
), 200000

  it 'summarize score', (done) ->
    service.summarizeScore (err) ->
      setTimeout (->
        done()
      ), 10000

  it 'find score', (done) ->
    service.findScore 'js', (err, scores) ->
      #console.log(require('util').inspect(scores, false, 5));
      done()

  it 'parsing commit test', (done) ->
    process.on 'uncaughtException', (err) ->
      console.log('Caught exception: ' + err);

    item =
      repository:
        owner: 'kivy'
        name: 'kivy'
      payload:
        shas: [[
          "b37fac0ab1b8ec3f6891116b31ce0d019b29ed36"
        ]]


Response:
urls = timeline.getCommitUrls item
    timeline.getCommitInfo urls[0], (err, commit) ->
      conventions = parser.parse commit
      done()

  it 'find desc', (done) ->
    service.findDescription (err, desc) ->
      console.log desc
      done()


Prompt:
urls = timeline.getCommitUrls item
    timeline.getCommitInfo urls[0], (err, commit) ->
      conventions = parser.parse commit
      done()

Response:
it 'find desc', (done) ->
    service.findDescription (err, desc) ->
      console.log desc
      done()


Response:
urls = timeline.getCommitUrls item
    timeline.getCommitInfo urls[0], (err, commit) ->
      conventions = parser.parse commit
      done()


Prompt:
urls = timeline.getCommitUrls item
    timeline.getCommitInfo urls[0], (err, commit) ->

Response:
conventions = parser.parse commit
      done()


Response:
# Copyright (c) 2013 JeongHoon Byun aka "Outsider", <http://blog.outsider.ne.kr/>
# Licensed under the MIT license.
# <http://outsider.mit-license.org/>

should = require 'should'
service = require '../src/service'

describe 'service >', ->

  before (done) ->
    setTimeout (->
      done()
    ), 1000

  it.skip 'fetch githubarchive', (done) ->
    service.fetchGithubArchive "2013-04-01-15", (err) ->
      done()

  it 'progress timeline', (done) ->
    service.progressTimeline (err) ->
      setTimeout (->
        done()
      ), 200000

  it 'summarize score', (done) ->
    service.summarizeScore (err) ->
      setTimeout (->
        done()
      ), 10000

  it 'find score', (done) ->
    service.findScore 'js', (err, scores) ->
      #console.log(require('util').inspect(scores, false, 5));
      done()


Prompt:
Convert this CoffeeScript to JavaScript.
```coffeescript
# Copyright (c) 2013 JeongHoon Byun aka "Outsider", <http://blog.outsider.ne.kr/>
# Licensed under the MIT license.
# <http://outsider.mit-license.org/>

should = require 'should'
service = require '../src/service'

describe 'service >', ->

  before (done) ->
    setTimeout (->
      done()
    ), 1000

  it.skip 'fetch githubarchive', (done) ->
    service.fetchGithubArchive "2013-04-01-15", (err) ->
      done()

  it 'progress timeline', (done) ->
    service.progressTimeline (err) ->
      setTimeout (->
        done()
      ), 200000

  it 'summarize score', (done) ->
    service.summarizeScore (err) ->
      setTimeout (->
        done()
      ), 10000

  it 'find score', (done) ->
    service.findScore 'js', (err, scores) ->
      #console.log(require('util').inspect(scores, false, 5));
      done()
```

Response:
// Copyright (c) 2013 JeongHoon Byun aka "Outsider", <http://blog.outsider.ne.kr/>
// Licensed under the MIT license.
// <http://outsider.mit-license.org/>
var service, should;

should = require('should');

service = require('../src/service');

describe('service >', function() {
  before(function(done) {
    return setTimeout((function() {
      return done();
    }), 1000);
  });
  it.skip('fetch githubarchive', function(done) {
    return service.fetchGithubArchive("2013-04-01-15", function(err) {
      return done();
    });
  });
  it('progress timeline', function(done) {
    return service.progressTimeline(function(err) {
      return setTimeout((function() {
        return done();
      }), 200000);
    });
  });
  it('summarize score', function(done) {
    return service.summarizeScore(function(err) {
      return setTimeout((function() {
        return done();
      }), 10000);
    });
  });
  return it('find score', function(done) {
    return service.findScore('js', function(err, scores) {
      //console.log(require('util').inspect(scores, false, 5));
      return done();
    });
  });
});