Files
picoGraph/scripts/nodes/library/system/printh.js
Max Litruv Boonzaayer e64f3e881e Initial commit
moved from private version control
2025-10-19 21:12:41 +11:00

71 lines
2.0 KiB
JavaScript

import { createNodeModule } from "../../nodeTypes.js";
/**
* Prints to the host console or files for debugging utilities.
*/
export const printhNode = createNodeModule(
{
id: "system_printh",
title: "Print Host",
category: "System",
description:
"Print a string to the host console or optionally to a file or clipboard.",
searchTags: ["printh", "print", "debug", "file", "system"],
inputs: [
{ id: "exec_in", name: "Exec", direction: "input", kind: "exec" },
{
id: "text",
name: "Text",
direction: "input",
kind: "string",
defaultValue: "debug",
},
{ id: "filename", name: "Filename", direction: "input", kind: "string" },
{
id: "overwrite",
name: "Overwrite",
direction: "input",
kind: "boolean",
defaultValue: false,
},
{
id: "save_to_desktop",
name: "Save to Desktop",
direction: "input",
kind: "boolean",
defaultValue: false,
},
],
outputs: [
{ id: "exec_out", name: "Exec", direction: "output", kind: "exec" },
],
properties: [],
},
{
emitExec: ({ indent, indentLevel, resolveValueInput, emitNextExec }) => {
const text = resolveValueInput("text", '""');
const filename = resolveValueInput("filename", "nil");
const overwrite = resolveValueInput("overwrite", "false");
const saveToDesktop = resolveValueInput("save_to_desktop", "false");
const args = [text];
const hasFilename = filename !== "nil";
if (hasFilename) {
args.push(filename);
const includeOverwrite =
overwrite !== "false" || saveToDesktop !== "false";
if (includeOverwrite) {
args.push(overwrite);
if (saveToDesktop !== "false") {
args.push(saveToDesktop);
}
}
}
const lines = [`${indent(indentLevel)}printh(${args.join(", ")})`];
lines.push(...emitNextExec("exec_out"));
return lines;
},
}
);