Sha256: a996baccfe3c806299cc44465630872b00dedb991e88c9122655219d392571a3

Contents?: true

Size: 1.05 KB

Versions: 8

Compression:

Stored size: 1.05 KB

Contents

Shuriken.defineExtension (baseNS) ->
  baseNS.withNS 'Mixins', (ns) ->
  
    root:        @getRootNS()
    ns.mixins:   {}
    root.mixins: {}

    root.withBase (base) ->
      base.mixin: (mixins) -> ns.mixin @, mixins

    defineMixin: (key, mixin) ->
      @mixins[key]: mixin

    root.defineMixin: defineMixin
    ns.define:       defineMixin

    ns.lookupMixin: (mixin) ->
      switch typeof mixin
        when "string"
          if ns.mixins[mixin]?
            ns.mixins[mixin]
          else if root.mixins[mixin]?
            root.mixins[mixin]
          else
            {} # unknown mixin, return a blank object.
        else
          mixin

    ns.invokeMixin: (scope, mixin) ->
      switch typeof mixin
        when "string"
          ns.invokeMixin scope, ns.lookupMixin(mixin)
        when "function"
          mixin.call scope, scope
        when "object"
          $.extend scope, mixin

    ns.mixin: (scope, mixins) ->
      mixins: [mixins] unless $.isArray mixins
      ns.invokeMixin scope, ns.lookupMixin(mixin) for mixin in mixins
      true

Version data entries

8 entries across 8 versions & 1 rubygems

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