From e7a6bebe717ea5d68c26af9409c412e3023b3220 Mon Sep 17 00:00:00 2001 From: Sam Rang Date: Sat, 16 Apr 2016 20:54:46 -0500 Subject: [PATCH] layer and layers --- config-serializer/config-items/Layer.ts | 25 +++++++++++++++ config-serializer/config-items/Layers.ts | 11 +++++++ .../config-items/SwitchLayerAction.ts | 10 +++--- .../config-items/config-items.ts | 2 ++ config-serializer/test-serializer.ts | 32 +++++++++---------- 5 files changed, 59 insertions(+), 21 deletions(-) create mode 100644 config-serializer/config-items/Layer.ts create mode 100644 config-serializer/config-items/Layers.ts diff --git a/config-serializer/config-items/Layer.ts b/config-serializer/config-items/Layer.ts new file mode 100644 index 00000000..0b44b466 --- /dev/null +++ b/config-serializer/config-items/Layer.ts @@ -0,0 +1,25 @@ +class Layer extends Serializable { + + modules: Serializable; + + _fromJsObject(jsObject: any): Layer { + this.modules = new Modules().fromJsObject(jsObject.modules); + return this; + } + + _fromBinary(buffer: UhkBuffer): Layer { + this.modules = new Modules().fromBinary(buffer); + return this; + } + + _toJsObject(): any { + return { + modules: this.modules.toJsObject() + }; + } + + _toBinary(buffer: UhkBuffer): void { + this.modules.toBinary(buffer); + } + +} diff --git a/config-serializer/config-items/Layers.ts b/config-serializer/config-items/Layers.ts new file mode 100644 index 00000000..d35b10f6 --- /dev/null +++ b/config-serializer/config-items/Layers.ts @@ -0,0 +1,11 @@ +class Layers extends ClassArray { + + jsObjectToClass(jsObject: any): Serializable { + return new Layer().fromJsObject(jsObject); + } + + binaryToClass(buffer: UhkBuffer): Serializable { + return new Layer().fromBinary(buffer); + } + +} diff --git a/config-serializer/config-items/SwitchLayerAction.ts b/config-serializer/config-items/SwitchLayerAction.ts index 482b01bf..ea4dae22 100644 --- a/config-serializer/config-items/SwitchLayerAction.ts +++ b/config-serializer/config-items/SwitchLayerAction.ts @@ -1,4 +1,4 @@ -enum Layer { +enum KeyLayer { mod, fn, mouse @@ -10,12 +10,12 @@ class SwitchLayerAction extends KeyAction { isLayerToggleable: boolean; - // @assertEnum(Layer) - private layer: Layer; + // @assertEnum(KeyLayer) + private layer: KeyLayer; _fromJsObject(jsObject: any): SwitchLayerAction { this.assertKeyActionType(jsObject); - this.layer = Layer[ jsObject.layer]; + this.layer = KeyLayer[ jsObject.layer]; this.isLayerToggleable = jsObject.toggle; return this; } @@ -31,7 +31,7 @@ class SwitchLayerAction extends KeyAction { _toJsObject(): any { return { keyActionType: keyActionType.SwitchLayerAction, - layer: Layer[this.layer], + layer: KeyLayer[this.layer], toggle: this.isLayerToggleable }; } diff --git a/config-serializer/config-items/config-items.ts b/config-serializer/config-items/config-items.ts index c8848f76..b4f4cece 100644 --- a/config-serializer/config-items/config-items.ts +++ b/config-serializer/config-items/config-items.ts @@ -11,3 +11,5 @@ /// /// /// +/// +/// diff --git a/config-serializer/test-serializer.ts b/config-serializer/test-serializer.ts index 587ff310..78f2f61d 100644 --- a/config-serializer/test-serializer.ts +++ b/config-serializer/test-serializer.ts @@ -10,31 +10,31 @@ let fs = require('fs'); let uhkConfig = JSON.parse(fs.readFileSync('uhk-config.json')); -let modules1Js = uhkConfig.keymaps[0].layers[0].modules; -let modules1Ts: Serializable = new Modules().fromJsObject(modules1Js); -let modules1Buffer = new UhkBuffer(); -modules1Ts.toBinary(modules1Buffer); -let modules1BufferContent = modules1Buffer.getBufferContent(); -fs.writeFileSync('uhk-config.bin', modules1BufferContent); +let config1Js = uhkConfig.keymaps[0].layers; +let config1Ts: Serializable = new Layers().fromJsObject(config1Js); +let config1Buffer = new UhkBuffer(); +config1Ts.toBinary(config1Buffer); +let config1BufferContent = config1Buffer.getBufferContent(); +fs.writeFileSync('uhk-config.bin', config1BufferContent); -modules1Buffer.offset = 0; +config1Buffer.offset = 0; console.log(); -let modules2Ts = new Modules().fromBinary(modules1Buffer); +let config2Ts = new Layers().fromBinary(config1Buffer); console.log('\n'); -let modules2Js = modules2Ts.toJsObject(); -let modules2Buffer = new UhkBuffer(); -modules2Ts.toBinary(modules2Buffer); -fs.writeFileSync('uhk-config-serialized.json', JSON.stringify(modules2Js, undefined, 4)); -let modules2BufferContent = modules1Buffer.getBufferContent(); -fs.writeFileSync('uhk-config-serialized.bin', modules2BufferContent); +let config2Js = config2Ts.toJsObject(); +let config2Buffer = new UhkBuffer(); +config2Ts.toBinary(config2Buffer); +fs.writeFileSync('uhk-config-serialized.json', JSON.stringify(config2Js, undefined, 4)); +let config2BufferContent = config1Buffer.getBufferContent(); +fs.writeFileSync('uhk-config-serialized.bin', config2BufferContent); console.log('\n'); try { - assert.deepEqual(modules1Js, modules2Js); + assert.deepEqual(config1Js, config2Js); console.log('JSON configurations are identical.'); } catch (error) { console.log('JSON configurations differ.'); } -let buffersContentsAreEqual = Buffer.compare(modules1BufferContent, modules2BufferContent) === 0; +let buffersContentsAreEqual = Buffer.compare(config1BufferContent, config2BufferContent) === 0; console.log('Binary configurations ' + (buffersContentsAreEqual ? 'are identical' : 'differ') + '.');