binaryarray
Advanced tools
| var BinaryArray = require('..'); | ||
| var EVENT_CLEAR = { | ||
| TUTORIAL : 0, | ||
| QUEST1 : 1, | ||
| QUEST2 : 2, | ||
| QUEST3 : 3, | ||
| QUEST4 : 4, | ||
| QUEST5 : 5, | ||
| QUEST6 : 6, | ||
| LASTBOSS : 7, | ||
| } | ||
| var EVENT_CLEAR_MAX = Math.max.apply(Math, Object.keys(EVENT_CLEAR).map(function(k){ return EVENT_CLEAR[k] })) + 1; | ||
| var ba = new BinaryArray(EVENT_CLEAR_MAX) | ||
| ba.bitOn(EVENT_CLEAR.TUTORIAL); | ||
| ba.bitOn(EVENT_CLEAR.QUEST1); | ||
| ba.bitOn(EVENT_CLEAR.QUEST4); | ||
| var serialize = ba.serialize(EVENT_CLEAR); | ||
| console.log(serialize); | ||
| var ba2 = BinaryArray.deserialize(serialize, EVENT_CLEAR, EVENT_CLEAR_MAX); | ||
| console.log(ba2.serialize(EVENT_CLEAR)); | ||
+13
-0
@@ -21,2 +21,10 @@ /** | ||
| } | ||
| BinaryArray.prototype.serialize = function(spec){ | ||
| assert(spec instanceof Object, 'spec is must be Object') | ||
| var w = this.toArray(); | ||
| return Object.keys(spec) | ||
| .map(function(k){ return [w[spec[k]], k] }) | ||
| .filter(function(v){ return v[0] }) | ||
| .reduce(function(r,v){ r[v[1]] = v[0]; return r }, {}) | ||
| } | ||
| BinaryArray.prototype.toJSON = function(){ | ||
@@ -103,2 +111,7 @@ return JSON.stringify(this.toArray()) | ||
| } | ||
| BinaryArray.deserialize = function(obj, spec, max){ | ||
| var ba = new BinaryArray(max); | ||
| Object.keys(obj).forEach(function(k){ return ba.bitOn(spec[k]) }); | ||
| return ba; | ||
| } | ||
+1
-1
| { | ||
| "name": "binaryarray", | ||
| "version": "0.0.1", | ||
| "version": "0.0.2", | ||
| "description": "the binary array", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
+59
-1
@@ -1,1 +0,59 @@ | ||
| # node-binaryarray | ||
| # binaryarray | ||
| ## install | ||
| ``` | ||
| npm i binaryarray | ||
| ``` | ||
| ## usage | ||
| ### simple | ||
| ``` | ||
| var BinaryArray = require('binaryarray'); | ||
| var all_off = BinaryArray.loadFromArray([0,0,0,0,0,0,0,0]); | ||
| var all_on = BinaryArray.loadFromArray([1,1,1,1,1,1,1,1]); | ||
| ``` | ||
| ### application | ||
| ``` | ||
| var BinaryArray = require('binaryarray'); | ||
| var EVENT_CLEAR = { | ||
| TUTORIAL : 0, | ||
| QUEST1 : 1, | ||
| QUEST2 : 2, | ||
| QUEST3 : 3, | ||
| QUEST4 : 4, | ||
| QUEST5 : 5, | ||
| QUEST6 : 6, | ||
| LASTBOSS : 7, | ||
| } | ||
| var EVENT_CLEAR_MAX = Math.max.apply(Math, Object.keys(EVENT_CLEAR).map(function(k){ return EVENT_CLEAR[k] })) + 1; | ||
| var ba = new BinaryArray(EVENT_CLEAR_MAX) | ||
| ba.bitOn(EVENT_CLEAR.TUTORIAL); | ||
| ba.bitOn(EVENT_CLEAR.QUEST1); | ||
| ba.bitOn(EVENT_CLEAR.QUEST4); | ||
| var save = ba.toArray(); | ||
| var ba2 = BinaryArray.loadFromArray(save); | ||
| console.log(save); | ||
| console.log(ba2.toArray()); | ||
| ba2.bitOn(2); | ||
| ba2.bitOn(3); | ||
| ba2.bitOff(4); | ||
| console.log(ba.toHexString()) | ||
| console.log(ba2.toHexString()) | ||
| if(ba.indexOf(EVENT_CLEAR.QUEST4)) console.log("ok") | ||
| if(!ba2.indexOf(EVENT_CLEAR.QUEST4)) console.log("ok") | ||
| ``` | ||
9486
29.59%9
12.5%210
18.64%60
2900%