From 6c37b710467809149c5d6c909ffb9a2c07c5614c Mon Sep 17 00:00:00 2001 From: Daniel Patterson Date: Sun, 3 Feb 2019 12:09:24 -0800 Subject: [PATCH] Actually expose snapping in node bindings. --- include/nodejs/node_osrm_support.hpp | 58 ++++++++++++++-------------- package.json | 2 +- test/nodejs/table.js | 15 +++++++ 3 files changed, 45 insertions(+), 30 deletions(-) diff --git a/include/nodejs/node_osrm_support.hpp b/include/nodejs/node_osrm_support.hpp index 5eb45ca3b03..a4d291d15d4 100644 --- a/include/nodejs/node_osrm_support.hpp +++ b/include/nodejs/node_osrm_support.hpp @@ -692,6 +692,35 @@ inline bool argumentsToParameter(const Nan::FunctionCallbackInfo &arg } } + if (obj->Has(Nan::New("snapping").ToLocalChecked())) + { + v8::Local snapping = obj->Get(Nan::New("snapping").ToLocalChecked()); + if (snapping.IsEmpty()) + return false; + + if (!snapping->IsString()) + { + Nan::ThrowError("Snapping must be a string: [default, any]"); + return false; + } + const Nan::Utf8String snapping_utf8str(snapping); + std::string snapping_str{*snapping_utf8str, *snapping_utf8str + snapping_utf8str.length()}; + + if (snapping_str == "default") + { + params->snapping = osrm::RouteParameters::SnappingType::Default; + } + else if (snapping_str == "any") + { + params->snapping = osrm::RouteParameters::SnappingType::Any; + } + else + { + Nan::ThrowError("'snapping' param must be one of [default, any]"); + return false; + } + } + return true; } @@ -944,35 +973,6 @@ argumentsToRouteParameter(const Nan::FunctionCallbackInfo &args, } } - if (obj->Has(Nan::New("snapping").ToLocalChecked())) - { - v8::Local snapping = obj->Get(Nan::New("snapping").ToLocalChecked()); - if (snapping.IsEmpty()) - return route_parameters_ptr(); - - if (!snapping->IsString()) - { - Nan::ThrowError("Snapping must be a string: [default, any]"); - return route_parameters_ptr(); - } - const Nan::Utf8String snapping_utf8str(snapping); - std::string snapping_str{*snapping_utf8str, *snapping_utf8str + snapping_utf8str.length()}; - - if (snapping_str == "default") - { - params->snapping = osrm::RouteParameters::SnappingType::Default; - } - else if (snapping_str == "any") - { - params->snapping = osrm::RouteParameters::SnappingType::Any; - } - else - { - Nan::ThrowError("'snapping' param must be one of [default, any]"); - return route_parameters_ptr(); - } - } - bool parsedSuccessfully = parseCommonParameters(obj, params); if (!parsedSuccessfully) { diff --git a/package.json b/package.json index e79548ac9e6..18cdb33877d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "osrm", - "version": "5.21.0-customsnapping.1", + "version": "5.21.0-customsnapping.2", "private": false, "description": "The Open Source Routing Machine is a high performance routing engine written in C++14 designed to run on OpenStreetMap data.", "dependencies": { diff --git a/test/nodejs/table.js b/test/nodejs/table.js index 7f7fea006f7..fc66b3c734c 100644 --- a/test/nodejs/table.js +++ b/test/nodejs/table.js @@ -48,6 +48,21 @@ test('table: test annotations paramater combination', function(assert) { }); }); +test('table: snapping parameter passed through OK', function(assert) { + assert.plan(2); + var osrm = new OSRM(data_path); + var options = { + coordinates: [[7.448205209414596,43.754001097311544],[7.447122039202185,43.75306156811368]], + annotations: ['duration', 'distance'], + snapping: 'any' + }; + console.log(options); + osrm.table(options, function(err, result) { + assert.ifError(err); + assert.equal(Math.round(result.distances[0][1] * 10), 1315); // Round it to nearest 0.1m to eliminate floating point comparison error + }); +}); + test('table: returns buffer', function(assert) { assert.plan(3); var osrm = new OSRM(data_path);