Files
metabuilder/packages/json_script_example/seed/math_utils.json
2025-12-31 13:54:08 +00:00

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"
}
]
}
]
}