Skip to content

Commit 41da929

Browse files
author
Minggang Wang
committed
Adapt to an object as parameter when invoking require method
Currently we support two kinds of parameter to require a specific message, like: 1. // Require a package, including msg and srv. let String = rclnodejs.require('std_msgs').msg.String; 2. // Require a single message or service. let String = rclnodejs.require('std_msgs/msg/String'); This patch enables to require a message by an object, e.g. let String = rclnodejs.require({package: 'std_msgs', type: 'msg', message: 'String'}); Fix #189
1 parent fbf067e commit 41da929

1 file changed

Lines changed: 3 additions & 2 deletions

File tree

index.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -167,14 +167,15 @@ let rcl = {
167167
* @return {object} - the object of the required package/interface.
168168
*/
169169
require(name) {
170-
if (typeof (name) !== 'string') {
171-
throw new TypeError('Invalid argument');
170+
if (typeof (name.package) === 'string' && typeof (name.type) === 'string' && typeof (name.message) === 'string') {
171+
return loader.loadInterface(name.package, name.type, name.message);
172172
}
173173

174174
if (name.indexOf('/') !== -1) {
175175
let [packageName, type, messageName] = name.split('/');
176176
return loader.loadInterface(packageName, type, messageName);
177177
}
178+
178179
return loader.loadInterfaceInPackage(name);
179180
},
180181

0 commit comments

Comments
 (0)