Advance simulation parity and 3-axis tutorial coverage
This commit is contained in:
@@ -14,7 +14,7 @@ function expandHalVariables(value, variables = {}) {
|
||||
});
|
||||
}
|
||||
|
||||
export function parseHalLine(raw, line = 0, variables = {}) {
|
||||
export function parseHalLine(raw, line = 0, variables = {}, { webEquivalentPrograms = [] } = {}) {
|
||||
if (typeof raw !== "string") return { status: "blocked", code: "hal_line_invalid", line };
|
||||
const clean = expandHalVariables(raw.split("#", 1)[0].trim(), variables);
|
||||
if (!clean) return null;
|
||||
@@ -31,7 +31,8 @@ export function parseHalLine(raw, line = 0, variables = {}) {
|
||||
if (command === "loadusr") {
|
||||
const program = tokens.find((token, index) => index > 0 && !token.startsWith("-")) ?? "";
|
||||
const virtual = VIRTUAL_HAL_USER_COMPONENTS.includes(program);
|
||||
return { schema: HAL_CONFIGURATION_SCHEMA, line, command, status: virtual ? "checked" : "blocked", code: virtual ? null : "hal_host_dynamic_loader", program, ...(virtual ? { capability: "SIM-ADAPTER" } : {}) };
|
||||
const webEquivalent = webEquivalentPrograms.includes(program);
|
||||
return { schema: HAL_CONFIGURATION_SCHEMA, line, command, status: virtual || webEquivalent ? "checked" : "blocked", code: virtual || webEquivalent ? null : "hal_host_dynamic_loader", program, ...((virtual || webEquivalent) ? { capability: webEquivalent ? "WEB-EQUIV" : "SIM-ADAPTER" } : {}) };
|
||||
}
|
||||
if (command === "addf") {
|
||||
const thread = tokens[2] ?? "";
|
||||
@@ -40,11 +41,11 @@ export function parseHalLine(raw, line = 0, variables = {}) {
|
||||
return { schema: HAL_CONFIGURATION_SCHEMA, line, command, tokens: tokens.slice(1), status: "checked", code: null };
|
||||
}
|
||||
|
||||
export function preflightHalConfiguration({ lines = [], manifest = [], variables = {} } = {}) {
|
||||
export function preflightHalConfiguration({ lines = [], manifest = [], variables = {}, webEquivalentPrograms = [] } = {}) {
|
||||
const declared = new Set((Array.isArray(manifest) ? manifest : []).map((row) => row?.component).filter(Boolean));
|
||||
const records = [];
|
||||
for (let index = 0; index < lines.length; index += 1) {
|
||||
const parsed = parseHalLine(lines[index], index + 1, variables);
|
||||
const parsed = parseHalLine(lines[index], index + 1, variables, { webEquivalentPrograms });
|
||||
if (!parsed) continue;
|
||||
if (parsed.command === "loadrt" && parsed.status === "declared" && !declared.has(parsed.module)) {
|
||||
parsed.status = "blocked";
|
||||
|
||||
Reference in New Issue
Block a user