jxson
6/16/2014 - 11:22 PM

gistfile1.txt

function submit(sink, data) {
  if (!(this instanceof submit)) {
    return new submit(sink, data)
  }

  this.sink = sink
  this.data = data
  this.id = sink.id
  this.type = 'submit'
}

submit.prototype.handleEvent = function(event) {
  var isValid = event.target.tagName === 'FORM' && event.type === 'submit'

  if (! isValid) return;

  event.preventDefault()

  var values = serialize(event.currentTarget, { hash: true });
  var data = extend(values, this.data);

  if (typeof this.sink === 'function') {
    this.sink(data)
  } else {
    this.sink.write(data)
  }
}