Skip to content

Commit

Permalink
Merge pull request #53 from GrimoireGL/feat/number-array
Browse files Browse the repository at this point in the history
feat: add number array converter
  • Loading branch information
kyasbal authored Sep 26, 2017
2 parents 58293ab + 1d0d5c4 commit 9965d06
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 1 deletion.
12 changes: 12 additions & 0 deletions src/Converters/NumberArrayConverter.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import Attribute from "grimoirejs/ref/Node/Attribute";
function NumberArrayConverter(this: Attribute, val: any): any {
if(typeof val === "string"){
return new Float32Array(val.split(",").map(f=>parseFloat(f)));
}else if(Array.isArray(val)){
return new Float32Array(val);
}else if(val instanceof Float32Array){
return val;
}
}

export default NumberArrayConverter;
3 changes: 2 additions & 1 deletion src/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import Rotation3Converter from "./Converters/Rotation3Converter";
import Angle2DConverter from "./Converters/Angle2DConverter";
import Color3Converter from "./Converters/Color3Converter";
import Color4Converter from "./Converters/Color4Converter";

import NumberArrayConverter from "./Converters/NumberArrayConverter";

export default () => {
gr.register(async () => {
Expand All @@ -17,5 +17,6 @@ export default () => {
gr.registerConverter("Color4", Color4Converter);
gr.registerConverter("Rotation3", Rotation3Converter);
gr.registerConverter("Angle2D", Angle2DConverter);
gr.registerConverter("NumberArray",NumberArrayConverter);
});
}
28 changes: 28 additions & 0 deletions test/NumberArrayTest.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import test from 'ava';
import NumberArrayConverter from '../lib-es5/Converters/NumberArrayConverter';

test('parse from string', (t) => {
const arr = NumberArrayConverter("1,2,3,4,5");
const correct = [1,2,3,4,5];
t.true(arr instanceof Float32Array);
t.true(correct.filter((v,i)=>arr[i] !== v).length === 0);
t.true(arr.length === correct.length);
});


test('parse from raw array', (t) => {
const arr = NumberArrayConverter([1,2,3,4,5]);
const correct = [1,2,3,4,5];
t.true(arr instanceof Float32Array);
t.true(correct.filter((v,i)=>arr[i] !== v).length === 0);
t.true(arr.length === correct.length);
});


test('parse from Float32Array', (t) => {
const arr = NumberArrayConverter(new Float32Array([1,2,3,4,5]));
const correct = [1,2,3,4,5];
t.true(arr instanceof Float32Array);
t.true(correct.filter((v,i)=>arr[i] !== v).length === 0);
t.true(arr.length === correct.length);
});

0 comments on commit 9965d06

Please sign in to comment.