mirror of
https://github.com/johndoe6345789/metabuilder.git
synced 2026-04-25 22:34:56 +00:00
238 lines
5.1 KiB
JSON
238 lines
5.1 KiB
JSON
{
|
|
"$schema": "./script.schema.json",
|
|
"schema_version": "2.1.0",
|
|
"package": "json_script_example",
|
|
"description": "Math utility functions",
|
|
"exports": {
|
|
"functions": [
|
|
"add",
|
|
"subtract",
|
|
"multiply",
|
|
"divide",
|
|
"clamp"
|
|
],
|
|
"constants": [
|
|
"PI",
|
|
"E"
|
|
]
|
|
},
|
|
"constants": [
|
|
{
|
|
"id": "pi_const",
|
|
"name": "PI",
|
|
"value": 3.14159265359,
|
|
"type": "number",
|
|
"exported": true
|
|
},
|
|
{
|
|
"id": "e_const",
|
|
"name": "E",
|
|
"value": 2.71828182846,
|
|
"type": "number",
|
|
"exported": true
|
|
}
|
|
],
|
|
"functions": [
|
|
{
|
|
"id": "add_fn",
|
|
"name": "add",
|
|
"description": "Add two numbers",
|
|
"exported": true,
|
|
"params": [
|
|
{
|
|
"name": "a",
|
|
"type": "number"
|
|
},
|
|
{
|
|
"name": "b",
|
|
"type": "number"
|
|
}
|
|
],
|
|
"returnType": "number",
|
|
"body": [
|
|
{
|
|
"type": "return",
|
|
"value": {
|
|
"type": "binary_expression",
|
|
"left": "$ref:params.a",
|
|
"operator": "+",
|
|
"right": "$ref:params.b"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "subtract_fn",
|
|
"name": "subtract",
|
|
"description": "Subtract two numbers",
|
|
"exported": true,
|
|
"params": [
|
|
{
|
|
"name": "a",
|
|
"type": "number"
|
|
},
|
|
{
|
|
"name": "b",
|
|
"type": "number"
|
|
}
|
|
],
|
|
"returnType": "number",
|
|
"body": [
|
|
{
|
|
"type": "return",
|
|
"value": {
|
|
"type": "binary_expression",
|
|
"left": "$ref:params.a",
|
|
"operator": "-",
|
|
"right": "$ref:params.b"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "multiply_fn",
|
|
"name": "multiply",
|
|
"description": "Multiply two numbers",
|
|
"exported": true,
|
|
"params": [
|
|
{
|
|
"name": "a",
|
|
"type": "number"
|
|
},
|
|
{
|
|
"name": "b",
|
|
"type": "number"
|
|
}
|
|
],
|
|
"returnType": "number",
|
|
"body": [
|
|
{
|
|
"type": "return",
|
|
"value": {
|
|
"type": "binary_expression",
|
|
"left": "$ref:params.a",
|
|
"operator": "*",
|
|
"right": "$ref:params.b"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "divide_fn",
|
|
"name": "divide",
|
|
"description": "Divide two numbers",
|
|
"exported": true,
|
|
"params": [
|
|
{
|
|
"name": "a",
|
|
"type": "number"
|
|
},
|
|
{
|
|
"name": "b",
|
|
"type": "number"
|
|
}
|
|
],
|
|
"returnType": "number",
|
|
"body": [
|
|
{
|
|
"type": "comment",
|
|
"text": "Check for division by zero"
|
|
},
|
|
{
|
|
"type": "if_statement",
|
|
"condition": {
|
|
"type": "binary_expression",
|
|
"left": "$ref:params.b",
|
|
"operator": "==",
|
|
"right": 0
|
|
},
|
|
"then": [
|
|
{
|
|
"type": "return",
|
|
"value": null
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "return",
|
|
"value": {
|
|
"type": "binary_expression",
|
|
"left": "$ref:params.a",
|
|
"operator": "/",
|
|
"right": "$ref:params.b"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "clamp_fn",
|
|
"name": "clamp",
|
|
"description": "Clamp a value between min and max",
|
|
"exported": true,
|
|
"params": [
|
|
{
|
|
"name": "value",
|
|
"type": "number"
|
|
},
|
|
{
|
|
"name": "min",
|
|
"type": "number"
|
|
},
|
|
{
|
|
"name": "max",
|
|
"type": "number"
|
|
}
|
|
],
|
|
"returnType": "number",
|
|
"body": [
|
|
{
|
|
"type": "comment",
|
|
"text": "If value < min, return min"
|
|
},
|
|
{
|
|
"type": "if_statement",
|
|
"condition": {
|
|
"type": "binary_expression",
|
|
"left": "$ref:params.value",
|
|
"operator": "<",
|
|
"right": "$ref:params.min"
|
|
},
|
|
"then": [
|
|
{
|
|
"type": "return",
|
|
"value": "$ref:params.min"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "comment",
|
|
"text": "If value > max, return max"
|
|
},
|
|
{
|
|
"type": "if_statement",
|
|
"condition": {
|
|
"type": "binary_expression",
|
|
"left": "$ref:params.value",
|
|
"operator": ">",
|
|
"right": "$ref:params.max"
|
|
},
|
|
"then": [
|
|
{
|
|
"type": "return",
|
|
"value": "$ref:params.max"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"type": "comment",
|
|
"text": "Otherwise return value"
|
|
},
|
|
{
|
|
"type": "return",
|
|
"value": "$ref:params.value"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|