fix check variadic input/output

This commit is contained in:
codetypes committed 2025-03-17 10:01:32 +08:00
1 parent 82379131df
commit 90d2e30ff7
6 files changed
+20 -11

No files matched your search

+1 -1
View File
@@ -79,7 +79,7 @@
"tree.desc": "Tree desc",
"tree.export": "Export",
"tree.firstid": "First id",
"tree.group": "Available groups",
"tree.group": "Enable Node Grouping",
"tree.vars": "Define Variables",
"tree.vars.name": "name",
"tree.vars.invalidName": "Invalid variable name",
+1 -1
View File
@@ -79,7 +79,7 @@
"tree.desc": "说明",
"tree.export": "导出",
"tree.firstid": "起始标识",
"tree.group": "可用分组",
"tree.group": "启用节点分组",
"tree.vars": "定义变量",
"tree.vars.name": "变量名",
"tree.vars.invalidName": "变量名不合法",
+2 -6
View File
@@ -239,10 +239,6 @@ export const Editor: FC<EditorProps> = ({ onUpdate: updateState, data: editor, .
}
};
const parseExpr = (expr: string) => {
return expr.split(/[^a-zA-Z0-9_]/);
};
const findHightlight = (node: TreeGraphData, highlight: string[], changed?: TreeGraphData[]) => {
changed ||= [];
if (node.highlightInput || node.highlightOutput || node.highlightArgs) {
@@ -276,7 +272,7 @@ export const Editor: FC<EditorProps> = ({ onUpdate: updateState, data: editor, .
if (isExprType(arg.type)) {
const expr: string | string[] = node.args?.[arg.name];
if (typeof expr === "string") {
for (const v of parseExpr(expr)) {
for (const v of b3util.parseExpr(expr)) {
if (highlight.includes(v)) {
node.highlightArgs = true;
changed.push(node);
@@ -285,7 +281,7 @@ export const Editor: FC<EditorProps> = ({ onUpdate: updateState, data: editor, .
}
} else if (expr instanceof Array) {
loop: for (const str of expr) {
for (const v of parseExpr(str)) {
for (const v of b3util.parseExpr(str)) {
if (highlight.includes(v)) {
node.highlightArgs = true;
changed.push(node);
+1
View File
@@ -172,6 +172,7 @@ const TreeInspector: FC = () => {
flexDirection: "row",
gap: 8,
rowGap: 0,
marginLeft: 16,
flexWrap: "wrap",
}}
>
+7 -1
View File
@@ -1,5 +1,11 @@
import type { TreeGraphData as G6TreeGraphData } from "@antv/g6";
import type { NodeDef } from "../behavior3/src/behavior3";
import { NodeDef } from "../behavior3/src/behavior3";
declare module "../behavior3/src/behavior3" {
interface NodeDef {
group?: string;
}
}
export type NodeType = NodeDef["type"] | "Other" | "Error";
export type NodeArg = Exclude<NodeDef["args"], undefined>[number];
+8 -2
View File
@@ -1,5 +1,5 @@
import * as fs from "fs";
import { type NodeDef } from "../behavior3/src/behavior3";
import { NodeDef } from "../behavior3/src/behavior3";
import {
ImportDef,
isBoolType,
@@ -54,6 +54,7 @@ export const initWorkdir = (path: string, handler: typeof alertError) => {
const group = v.type.match(/\((\w+)\)/)?.[1];
if (group) {
v.group = group;
groups.add(group);
}
}
@@ -534,7 +535,7 @@ export const isVariadic = (def: string[], i: number) => {
};
const isValidInputOrOutput = (def: string[], data: string[] | undefined, index: number) => {
return def[index].includes("?") || data?.[index] || (isVariadic(def, index) && data?.[index]);
return def[index].includes("?") || data?.[index] || isVariadic(def, index);
};
export const checkTreeData = (data: TreeGraphData) => {
@@ -759,3 +760,8 @@ export const loadSubtreeVarDef = (data: TreeGraphData) => {
});
return result;
};
export const parseExpr = (expr: string) => {
const result = expr.split(/[^a-zA-Z0-9_.]/);
return result.map((v) => v.split(".")[0]).filter((v) => v);
};