瀏覽代碼

fix args transformation for ops with editableOptions

d98762625 7 年之前
父節點
當前提交
2ff7b5902c
共有 2 個文件被更改,包括 6 次插入4 次删除
  1. 5 2
      src/node/apiUtils.mjs
  2. 1 2
      test/tests/nodeApi/ops.mjs

+ 5 - 2
src/node/apiUtils.mjs

@@ -13,11 +13,15 @@ import SyncDish from "./SyncDish";
  * @param {Object} arg - an arg from an operation
  */
 function extractArg(arg) {
-    if (arg.type === "option" || arg.type === "editableOption") {
+    if (arg.type === "option") {
         // pick default option if not already chosen
         return typeof arg.value === "string" ? arg.value : arg.value[0];
     }
 
+    if (arg.type === "editableOption") {
+        return typeof arg.value === "string" ? arg.value : arg.value[0].value;
+    }
+
     if (arg.type === "toggleString") {
         // ensure string and option exist when user hasn't defined
         arg.string = arg.string || "";
@@ -96,7 +100,6 @@ export function wrap(OpClass) {
             const type = SyncDish.typeEnum(input.constructor.name);
             dish.set(input, type);
         }
-
         args = transformArgs(operation.args, args);
         const transformedInput = dish.get(operation.inputType);
         const result = operation.run(transformedInput, args);

+ 1 - 2
test/tests/nodeApi/ops.mjs

@@ -132,8 +132,7 @@ color: white;
             alphabet: "0-9A-W",
         });
         assert.strictEqual(result.toString(), "SPI1R1T0");
-    })
-
+    }),
 
 ]);