secret
Created

  • Download Gist
pd.can
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
Array = require("Array")
pd = {}
 
pd.bindAll = bindAll
pd.extend = extend
pd.Name = Name
 
return pd
 
extend(target, ...sources) {
Array.forEach(sources, (elem) {
Array.forEach(keysof elem, (name) {
target[name] = elem[name]
})
})
return target
}
 
 
namespace(object, key) {
privates = new object
valueOf = object.valueOf
object.valueOf = (self, value) {
if (value == key) {
return privates
}
return valueOf(self, value)
}
return privates
}
 
Name() {
key = {}
return name
name(object) {
privates = object:valueOf(key)
if (privates == object) {
return namespace(object, key)
}
return privates
}
}
 
bindAll(obj, ...sources) {
pd.extend(obj, ...sources)
Array.forEach(Array.filter(keysof obj, isMethod), bindMethods)
return obj
isMethod(name) {
return typeof obj[name] == "function"
}
bindMethods(name) {
f = obj[name]
obj[name] = (...args) {
f(obj, ...args)
}
}
}

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.