Explorar o código

add operation input case to chef.search

d98762625 %!s(int64=7) %!d(string=hai) anos
pai
achega
a4d7065e42
Modificáronse 3 ficheiros con 29 adicións e 6 borrados
  1. 18 6
      src/node/apiUtils.mjs
  2. 6 0
      test/tests/nodeApi/nodeApi.mjs
  3. 5 0
      test/tests/nodeApi/ops.mjs

+ 18 - 6
src/node/apiUtils.mjs

@@ -89,7 +89,7 @@ export function wrap(OpClass) {
      * @returns {SyncDish} operation's output, on a Dish.
      * @throws {OperationError} if the operation throws one.
      */
-    return (input, args=null) => {
+    const wrapped = (input, args=null) => {
         const operation = new OpClass();
 
         let dish;
@@ -108,6 +108,10 @@ export function wrap(OpClass) {
             type: operation.outputType
         });
     };
+
+    // used in chef.help
+    wrapped.opName = OpClass.name;
+    return wrapped;
 }
 
 
@@ -163,14 +167,22 @@ function extractOperationInfo(Operation) {
  */
 export function help(operations) {
     return function(searchTerm) {
+        let sanitised = false;
         if (typeof searchTerm === "string") {
-            const operation = operations
-                .find(o => o.name.toLowerCase() === searchTerm.replace(/ /g, "").toLowerCase());
-            if (operation) {
-                return extractOperationInfo(operation);
-            }
+            sanitised = searchTerm;
+        } else if (typeof searchTerm === "function") {
+            sanitised = searchTerm.opName;
+        }
+
+        if (!sanitised) {
             return null;
         }
+
+        const operation = operations
+            .find(o => o.name.toLowerCase() === sanitised.replace(/ /g, "").toLowerCase());
+        if (operation) {
+            return extractOperationInfo(operation);
+        }
         return null;
     };
 }

+ 6 - 0
test/tests/nodeApi/nodeApi.mjs

@@ -127,4 +127,10 @@ TestRegister.addApiTests([
         const result = chef.help("some invalid function name");
         assert.strictEqual(result, null);
     }),
+
+    it("chef.help: takes a wrapped operation as input", () => {
+        const result = chef.help(chef.toBase32);
+        assert.strictEqual(result.name, "toBase32");
+        assert.strictEqual(result.module, "Default");
+    })
 ]);

+ 5 - 0
test/tests/nodeApi/ops.mjs

@@ -134,5 +134,10 @@ color: white;
         assert.strictEqual(result.toString(), "SPI1R1T0");
     }),
 
+    it("toBase64: editableOptions default", () => {
+        const result = toBase64("some input");
+        assert.strictEqual(result.toString(), "c29tZSBpbnB1dA==");
+    }),
+
 ]);