From 015ed35f3ce5ac3068e2aea48d76e483395c0014 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Monda?= Date: Thu, 24 Mar 2016 02:48:22 +0100 Subject: [PATCH] Loosely port the serializer to TypeScript. --- model/.gitignore | 2 + model/.vscode/tasks.json | 8 ++++ model/BufferWriter.js | 45 ------------------- model/UhkBuffer.ts | 45 +++++++++++++++++++ ...{serializeConfig.js => serializeConfig.ts} | 7 +-- model/tsconfig.json | 10 +++++ model/typings.json | 5 +++ package.json | 3 +- 8 files changed, 74 insertions(+), 51 deletions(-) create mode 100644 model/.vscode/tasks.json delete mode 100644 model/BufferWriter.js create mode 100644 model/UhkBuffer.ts rename model/{serializeConfig.js => serializeConfig.ts} (97%) mode change 100755 => 100644 create mode 100644 model/tsconfig.json create mode 100644 model/typings.json diff --git a/model/.gitignore b/model/.gitignore index 1ef20017..5106a309 100644 --- a/model/.gitignore +++ b/model/.gitignore @@ -1 +1,3 @@ +typings uhk-config.bin +serializeConfig.js diff --git a/model/.vscode/tasks.json b/model/.vscode/tasks.json new file mode 100644 index 00000000..de72dde8 --- /dev/null +++ b/model/.vscode/tasks.json @@ -0,0 +1,8 @@ +{ + "version": "0.1.0", + "command": "tsc", + "isShellCommand": true, + "showOutput": "silent", + "args": [], + "problemMatcher": "$tsc" +} diff --git a/model/BufferWriter.js b/model/BufferWriter.js deleted file mode 100644 index 032ba39c..00000000 --- a/model/BufferWriter.js +++ /dev/null @@ -1,45 +0,0 @@ -var BufferWriter = function(bufferParam) { - var offset = 0; - self = {}; - var buffer = bufferParam; - - self.int8 = function(value) { - buffer.writeInt8(value, offset); - offset += 1; - }; - - self.uint8 = function(value) { - buffer.writeUInt8(value, offset); - offset += 1; - }; - - self.int16 = function(value) { - buffer.writeInt16LE(value, offset); - offset += 2; - }; - - self.uint16 = function(value) { - buffer.writeUInt16LE(value, offset); - offset += 2; - }; - - self.int32 = function(value) { - buffer.writeInt32LE(value, offset); - offset += 4; - }; - - self.uint32 = function(value) { - buffer.writeUInt32LE(value, offset); - offset += 4; - }; - - self.string = function(string) { - buffer.write(string, offset, string.length, 'ascii'); - offset += string.length; - self.uint8(0); - }; - - return self; -}; - -module.exports = BufferWriter; diff --git a/model/UhkBuffer.ts b/model/UhkBuffer.ts new file mode 100644 index 00000000..28a42c78 --- /dev/null +++ b/model/UhkBuffer.ts @@ -0,0 +1,45 @@ +class UhkBuffer { + buffer: Buffer; + offset: number; + + constructor(buffer) { + this.offset = 0; + this.buffer = buffer; + } + + int8(value) { + this.buffer.writeInt8(value, this.offset); + this.offset += 1; + } + + uint8(value) { + this.buffer.writeUInt8(value, this.offset); + this.offset += 1; + } + + int16(value) { + this.buffer.writeInt16LE(value, this.offset); + this.offset += 2; + } + + uint16(value) { + this.buffer.writeUInt16LE(value, this.offset); + this.offset += 2; + } + + int32(value) { + this.buffer.writeInt32LE(value, this.offset); + this.offset += 4; + } + + uint32(value) { + this.buffer.writeUInt32LE(value, this.offset); + this.offset += 4; + } + + string(string) { + this.buffer.write(string, this.offset, string.length, 'ascii'); + this.offset += string.length; + this.uint8(0); + } +} diff --git a/model/serializeConfig.js b/model/serializeConfig.ts old mode 100755 new mode 100644 similarity index 97% rename from model/serializeConfig.js rename to model/serializeConfig.ts index 0c1108b1..8a10507e --- a/model/serializeConfig.js +++ b/model/serializeConfig.ts @@ -1,11 +1,8 @@ -#!/usr/bin/env node - var fs = require('fs'); -var BufferWriter = require('./BufferWriter'); var buffer = new Buffer(1000); buffer.fill(0); -var writer = BufferWriter(buffer); +var writer = new UhkBuffer(buffer); var uhkConfig = JSON.parse(fs.readFileSync('uhk-config.json')); var keyActions = uhkConfig.keymaps[0].layers[0].modules[0].keyActions; @@ -87,7 +84,7 @@ function serializeKeyAction(keyAction) { } } -function serializeNoneAction(keystrokeAction) { +function serializeNoneAction() { writer.uint8(KEY_ACTION_ID_NONE); writer.uint8(NONE_ACTION_PADDING); } diff --git a/model/tsconfig.json b/model/tsconfig.json new file mode 100644 index 00000000..77c84e9a --- /dev/null +++ b/model/tsconfig.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "out": "serializeConfig.js" + }, + "files": [ + "typings/main.d.ts", + "UhkBuffer.ts", + "serializeConfig.ts" + ] +} \ No newline at end of file diff --git a/model/typings.json b/model/typings.json new file mode 100644 index 00000000..46e1d167 --- /dev/null +++ b/model/typings.json @@ -0,0 +1,5 @@ +{ + "ambientDependencies": { + "node": "registry:dt/node#4.0.0+20160319033040" + } +} diff --git a/package.json b/package.json index d16a9009..1aa3d5f5 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "handlebars": "^4.0.5", "jquery": "^2.2.2", "select2": "^4.0.2", - "sortablejs": "^1.4.2" + "sortablejs": "^1.4.2", + "typescript": "^1.8.9" } }