Jump To …

mixin.coffee

implements = (classes...) ->
  for klass in classes

static properties

    for prop of klass
      @[prop] = klass[prop]

prototype properties

    for prop of klass.prototype
      getter = klass::__lookupGetter__(prop)
      setter = klass::__lookupSetter__(prop)

      if getter || setter
        @::__defineGetter__(prop, getter) if getter
        @::__defineSetter__(prop, setter) if setter
      else
        @::[prop] = klass::[prop]
  return this

if Object.defineProperty
  Object.defineProperty Function.prototype, "implements", value : implements
else
  Function::implements = implements