first commit

This commit is contained in:
a-Sansara 2016-12-17 18:33:09 +01:00
commit caf5148b92
3 changed files with 84 additions and 0 deletions

0
README.md Normal file
View File

68
index.js Normal file
View File

@ -0,0 +1,68 @@
'use strict';
String.prototype.removeEndNullBytes = function() {
return this.replace(/\0+$/g, '');
}
String.prototype.removeStartNullBytes = function() {
return this.replace(/^\0+/g, '');
}
var pluie =
{
bin :
{
enc : new TextEncoder("utf-8"),
dec : new TextDecoder("utf-8", {fatal: true}),
intFromBytes : function(bytes)
{
// Big Endian
for (var i = value = 0, lim = bytes.length; i < lim; i++) {
value = value * 256 + bytes[i];
}
return value;
},
bytesFromInt : function(value, size)
{
var bytes = new Uint8Array(size);
while (value) {
bytes.set([value & 255], --size);
value >>= 8;;
}
return bytes;
},
pack : function(size, type, value)
{
var packed = null
if (type == 'n' || type == 'N') {
// js int max on 32 signed bits
if (value >= 0 && value <= 2147483647) {
packed = this.bytesFromInt(value, type == 'n' ? 2 : 4);
}
}
else if (type == 'a') {
packed = new Uint8Array(size);
packed.set(this.enc.encode(value), 0);
}
return packed;
},
unpack : function(size, type, bytes)
{
var unpacked = null
if (type == 'n' || type == 'N') {
var selByte = bytes.slice(0, size*(type == 'n' ? 2 : 4));
unpacked = this.intFromBytes(selByte);
}
else if (type == 'a') {
unpacked = this.dec.decode(bytes.slice(0, size)).removeEndNullBytes();
}
return unpacked;
}
}
}
module.exports = pluie.bin;

16
package.json Normal file
View File

@ -0,0 +1,16 @@
{
"name": "@pluie/bin",
"version": "1.0.2",
"description": "Node.js pluie small binary API for the browser",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "a-Sansara",
"license": "MIT",
"repository": {
"type": "git",
"url": "https://git.pluie.org/pluie/js-bin.git"
}
}