Events = require('./events')

class Binding

  __eventPrefix: (attrs) ->
    "#{@__prefix}-#{attrs}"

  constructor: ->
    @__bus = new Events()
    @__prefix = (Math.random() * 1e18).toString(36)

  emit: (attrs, args) ->
    @__bus.emit(@__eventPrefix(attrs), args)

  bind: (attrs, callback) ->
    @__bus.on(@__eventPrefix(attrs), callback)

  unbind: (attrs, callback) ->
    @__bus.off(@__eventPrefix(attrs), callback)

module.exports = Binding
