Add separator parameter for parameter builder and parser.
This commit is contained in:
parent
8853c00e14
commit
69b15ff559
@ -1,15 +1,25 @@
|
||||
OV.ParameterConverter =
|
||||
{
|
||||
NumberToString (number)
|
||||
{
|
||||
let precision = 5;
|
||||
return number.toPrecision (precision);
|
||||
},
|
||||
|
||||
StringToNumber (str)
|
||||
{
|
||||
return parseFloat (str);
|
||||
},
|
||||
|
||||
CameraToString : function (camera)
|
||||
{
|
||||
if (camera === null) {
|
||||
return null;
|
||||
}
|
||||
let precision = 5;
|
||||
let cameraParameters = [
|
||||
camera.eye.x.toPrecision (precision), camera.eye.y.toPrecision (precision), camera.eye.z.toPrecision (precision),
|
||||
camera.center.x.toPrecision (precision), camera.center.y.toPrecision (precision), camera.center.z.toPrecision (precision),
|
||||
camera.up.x.toPrecision (precision), camera.up.y.toPrecision (precision), camera.up.z.toPrecision (precision)
|
||||
this.NumberToString (camera.eye.x), this.NumberToString (camera.eye.y), this.NumberToString (camera.eye.z),
|
||||
this.NumberToString (camera.center.x), this.NumberToString (camera.center.y), this.NumberToString (camera.center.z),
|
||||
this.NumberToString (camera.up.x), this.NumberToString (camera.up.y), this.NumberToString (camera.up.z)
|
||||
].join (',');
|
||||
return cameraParameters;
|
||||
},
|
||||
@ -24,9 +34,9 @@ OV.ParameterConverter =
|
||||
return null;
|
||||
}
|
||||
let camera = new OV.Camera (
|
||||
new OV.Coord3D (parseFloat (paramParts[0]), parseFloat (paramParts[1]), parseFloat (paramParts[2])),
|
||||
new OV.Coord3D (parseFloat (paramParts[3]), parseFloat (paramParts[4]), parseFloat (paramParts[5])),
|
||||
new OV.Coord3D (parseFloat (paramParts[6]), parseFloat (paramParts[7]), parseFloat (paramParts[8]))
|
||||
new OV.Coord3D (this.StringToNumber (paramParts[0]), this.StringToNumber (paramParts[1]), this.StringToNumber (paramParts[2])),
|
||||
new OV.Coord3D (this.StringToNumber (paramParts[3]), this.StringToNumber (paramParts[4]), this.StringToNumber (paramParts[5])),
|
||||
new OV.Coord3D (this.StringToNumber (paramParts[6]), this.StringToNumber (paramParts[7]), this.StringToNumber (paramParts[8]))
|
||||
);
|
||||
return camera;
|
||||
},
|
||||
@ -50,8 +60,9 @@ OV.ParameterConverter =
|
||||
|
||||
OV.ParameterListBuilder = class
|
||||
{
|
||||
constructor ()
|
||||
constructor (separator)
|
||||
{
|
||||
this.separator = separator;
|
||||
this.urlParams = '';
|
||||
}
|
||||
|
||||
@ -73,7 +84,7 @@ OV.ParameterListBuilder = class
|
||||
return;
|
||||
}
|
||||
if (this.urlParams.length > 0) {
|
||||
this.urlParams += '$';
|
||||
this.urlParams += this.separator;
|
||||
}
|
||||
this.urlParams += keyword + '=' + urlPart;
|
||||
}
|
||||
@ -86,8 +97,9 @@ OV.ParameterListBuilder = class
|
||||
|
||||
OV.ParameterListParser = class
|
||||
{
|
||||
constructor (urlParams)
|
||||
constructor (urlParams, separator)
|
||||
{
|
||||
this.separator = separator;
|
||||
this.urlParams = urlParams;
|
||||
}
|
||||
|
||||
@ -114,7 +126,7 @@ OV.ParameterListParser = class
|
||||
return null;
|
||||
}
|
||||
let keywordToken = keyword + '=';
|
||||
let urlParts = this.urlParams.split ('$');
|
||||
let urlParts = this.urlParams.split (this.separator);
|
||||
for (let i = 0; i < urlParts.length; i++) {
|
||||
let urlPart = urlParts[i];
|
||||
if (urlPart.startsWith (keywordToken)) {
|
||||
@ -125,9 +137,19 @@ OV.ParameterListParser = class
|
||||
}
|
||||
};
|
||||
|
||||
OV.CreateUrlBuilder = function ()
|
||||
{
|
||||
return new OV.ParameterListBuilder ('$');
|
||||
};
|
||||
|
||||
OV.CreateUrlParser = function (urlParams)
|
||||
{
|
||||
return new OV.ParameterListParser (urlParams, '$');
|
||||
};
|
||||
|
||||
OV.CreateUrlParameters = function (urls, camera)
|
||||
{
|
||||
let builder = new OV.ParameterListBuilder ();
|
||||
let builder = OV.CreateUrlBuilder ();
|
||||
builder.AddModelUrls (urls);
|
||||
builder.AddCamera (camera);
|
||||
return builder.GetUrlParams ();
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
var assert = require ('assert');
|
||||
|
||||
describe ('Parameter list', function () {
|
||||
describe ('Parameter List', function () {
|
||||
it ('Parameter list builder', function () {
|
||||
let modelUrls = ['a.txt', 'b.txt'];
|
||||
let camera = new OV.Camera (
|
||||
@ -8,9 +8,9 @@ describe ('Parameter list', function () {
|
||||
new OV.Coord3D (0.0, 0.0, 0.0),
|
||||
new OV.Coord3D (0.0, 0.0, 1.0)
|
||||
);
|
||||
let urlParams1 = new OV.ParameterListBuilder ().AddModelUrls (modelUrls).GetUrlParams ();
|
||||
let urlParams2 = new OV.ParameterListBuilder ().AddCamera (camera).GetUrlParams ();
|
||||
let urlParams3 = new OV.ParameterListBuilder ().AddModelUrls (modelUrls).AddCamera (camera).GetUrlParams ();
|
||||
let urlParams1 = OV.CreateUrlBuilder ().AddModelUrls (modelUrls).GetUrlParams ();
|
||||
let urlParams2 = OV.CreateUrlBuilder ().AddCamera (camera).GetUrlParams ();
|
||||
let urlParams3 = OV.CreateUrlBuilder ().AddModelUrls (modelUrls).AddCamera (camera).GetUrlParams ();
|
||||
assert.strictEqual (urlParams1, 'model=a.txt,b.txt');
|
||||
assert.strictEqual (urlParams2, 'camera=1.0000,1.0000,1.0000,0.0000,0.0000,0.0000,0.0000,0.0000,1.0000');
|
||||
assert.strictEqual (urlParams3, 'model=a.txt,b.txt$camera=1.0000,1.0000,1.0000,0.0000,0.0000,0.0000,0.0000,0.0000,1.0000');
|
||||
@ -27,16 +27,16 @@ describe ('Parameter list', function () {
|
||||
let urlParams1 = 'model=a.txt,b.txt';
|
||||
let urlParams2 = 'camera=1.0000,1.0000,1.0000,0.0000,0.0000,0.0000,0.0000,0.0000,1.0000';
|
||||
let urlParams3 = 'model=a.txt,b.txt$camera=1.0000,1.0000,1.0000,0.0000,0.0000,0.0000,0.0000,0.0000,1.0000';
|
||||
let parserLegacy = new OV.ParameterListParser (urlParamsLegacy);
|
||||
let parserLegacy = OV.CreateUrlParser (urlParamsLegacy);
|
||||
assert.deepStrictEqual (parserLegacy.GetModelUrls (), modelUrls);
|
||||
assert.deepStrictEqual (parserLegacy.GetCamera (), null);
|
||||
let parser1 = new OV.ParameterListParser (urlParams1);
|
||||
let parser1 = OV.CreateUrlParser (urlParams1);
|
||||
assert.deepStrictEqual (parser1.GetModelUrls (), modelUrls);
|
||||
assert.deepStrictEqual (parser1.GetCamera (), null);
|
||||
let parser2 = new OV.ParameterListParser (urlParams2);
|
||||
let parser2 = OV.CreateUrlParser (urlParams2);
|
||||
assert.deepStrictEqual (parser2.GetModelUrls (), null);
|
||||
assert.deepStrictEqual (parser2.GetCamera (), camera);
|
||||
let parser3 = new OV.ParameterListParser (urlParams3);
|
||||
let parser3 = OV.CreateUrlParser (urlParams3);
|
||||
assert.deepStrictEqual (parser3.GetModelUrls (), modelUrls);
|
||||
assert.deepStrictEqual (parser3.GetCamera (), camera);
|
||||
});
|
||||
|
||||
@ -30,13 +30,13 @@ OV.HashHandler = class
|
||||
|
||||
GetCameraFromHash ()
|
||||
{
|
||||
let parser = new OV.ParameterListParser (this.GetHash ());
|
||||
let parser = OV.CreateUrlParser (this.GetHash ());
|
||||
return parser.GetCamera ();
|
||||
}
|
||||
|
||||
GetModelFilesFromHash ()
|
||||
{
|
||||
let parser = new OV.ParameterListParser (this.GetHash ());
|
||||
let parser = OV.CreateUrlParser (this.GetHash ());
|
||||
return parser.GetModelUrls ();
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user