summaryrefslogtreecommitdiff
path: root/assets/javascripts/util/permissions.js
diff options
context:
space:
mode:
Diffstat (limited to 'assets/javascripts/util/permissions.js')
-rw-r--r--assets/javascripts/util/permissions.js49
1 files changed, 49 insertions, 0 deletions
diff --git a/assets/javascripts/util/permissions.js b/assets/javascripts/util/permissions.js
new file mode 100644
index 0000000..9e3ef4d
--- /dev/null
+++ b/assets/javascripts/util/permissions.js
@@ -0,0 +1,49 @@
+
+var Permissions = function(ops){
+ var base = this
+ base.keys = _.keys(ops)
+ base.keys.forEach(function(op){
+ base[op] = ops[op]
+ })
+}
+
+Permissions.prototype.toggle = function (key) {
+ var base = this
+ var state = ! base[key]
+ base.keys.forEach(function(op){
+ base[op] = op == key ? state : false
+ })
+ return state
+}
+
+Permissions.prototype.assign = function (key, state) {
+ var base = this
+ base.keys.forEach(function(op){
+ base[op] = op == key ? state : false
+ })
+ return state
+}
+
+Permissions.prototype.add = function (key) {
+ var base = this
+ base[key] = true
+}
+
+Permissions.prototype.remove = function (key) {
+ var base = this
+ base[key] = false
+}
+
+Permissions.prototype.clear = function () {
+ var base = this
+ base.keys.forEach(function(op){
+ base[op] = false
+ })
+}
+
+Permissions.prototype.log = function () {
+ var base = this
+ base.keys.forEach(function(op){
+ console.log(op, base[op])
+ })
+} \ No newline at end of file