Sha256: a963b1a705b506bc2707b5b74e4a1f028d82f70ff3ad17adcdaeb888d36f90c2

Contents?: true

Size: 683 Bytes

Versions: 8

Compression:

Stored size: 683 Bytes

Contents

Shuriken.defineExtension (baseNS) ->
  baseNS.defineMixin 'Callbacks', (mixin) ->

    mixin.callbacks: {}

    mixin.defineCallback: (key) ->
      @["on$key"]:     (callback) -> @hasCallback key, callback
      @["invoke$key"]: (args...)  -> @invokeCallbacks key, args...
      true

    mixin.hasCallback: (name, callback) ->
      callbacks: mixin.callbacks[name]?= []
      callbacks.push callback
      true

    mixin.callbacksFor: (name) ->
      existing: mixin.callbacks[name]
      if existing? then existing else []

    mixin.invokeCallbacks: (name, args...) ->
      for callback in mixin.callbacksFor(name)
        return false if callback(args...) is false
      true

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
shuriken-0.1.4 coffeescripts/shuriken/mixins/callbacks.coffee
shuriken-0.1.3.1 coffeescripts/shuriken/mixins/callbacks.coffee
shuriken-0.1.3 coffeescripts/shuriken/mixins/callbacks.coffee
shuriken-0.1.2.2 coffeescripts/shuriken/mixins/callbacks.coffee
shuriken-0.1.2.1 coffeescripts/shuriken/mixins/callbacks.coffee
shuriken-0.1.2 coffeescripts/shuriken/mixins/callbacks.coffee
shuriken-0.1.1 coffeescripts/shuriken/mixins/callbacks.coffee
shuriken-0.1.0 coffeescripts/shuriken/mixins/callbacks.coffee