{
    "taglib-id": "marko-core",
    "tags": {
        "c-template": {
            "attributes": {
                "name": {
                    "allow-expressions": false,
                    "type": "string"
                },
                "params": {
                    "allow-expressions": false,
                    "type": "string"
                }
            },
            "node-class": "./TemplateNode"
        },
        "*": {
            "attributes": {
                "c-space": {
                    "type": "custom",
                    "allow-expressions": false,
                    "ignore": true
                },
                "c-whitespace": {
                    "type": "custom",
                    "allow-expressions": false,
                    "ignore": true
                },
                "for": {
                    "type": "custom",
                    "allow-expressions": false,
                    "ignore": true
                },
                "for-each": {
                    "allow-expressions": false,
                    "type": "string",
                    "ignore": true
                },
                "if": {
                    "type": "expression",
                    "ignore": true
                },
                "unless": {
                    "type": "expression",
                    "ignore": true
                },
                "else": {
                    "type": "empty",
                    "ignore": true
                },
                "else-if": {
                    "type": "expression",
                    "ignore": true
                },
                "attrs": {
                    "type": "expression",
                    "ignore": true
                },
                "when": {
                    "type": "expression",
                    "ignore": true
                },
                "with": {
                    "type": "custom",
                    "ignore": true
                },
                "c-parse-body-text": {
                    "type": "boolean",
                    "allow-expressions": false,
                    "ignore": true
                },
                "c-trim-body-indent": {
                    "type": "boolean",
                    "allow-expressions": false,
                    "ignore": true
                },
                "c-input": {
                    "type": "expression",
                    "ignore": true
                }
            },
            "transformer": {
                "path": "./core-tag-transformer",
                "priority": 0
            }
        },
        "for": {
            "node-class": "./ForNode",
            "attributes": {
                "each": {
                    "required": false,
                    "allow-expressions": false,
                    "type": "string"
                },
                "separator": {
                    "type": "string"
                },
                "status-var": {
                    "type": "identifier",
                    "allow-expressions": false
                },
                "for-loop": {
                    "type": "boolean",
                    "allow-expressions": false
                },
                "iterator": {
                    "type": "expression"
                }
            }
        },
        "c-write": {
            "node-class": "./WriteNode",
            "attributes": {
                "value": {
                    "required": true,
                    "type": "expression"
                },
                "escape-xml": {
                    "type": "boolean",
                    "allow-expressions": false
                }
            }
        },
        "if": {
            "node-class": "./IfNode",
            "attributes": {
                "test": {
                    "type": "expression"
                }
            }
        },
        "unless": {
            "node-class": "./UnlessNode",
            "attributes": {
                "test": {
                    "type": "expression"
                }
            }
        },
        "else": {
            "node-class": "./ElseNode",
            "transformer": {
                "path": "./else-tag-transformer",
                "properties": {
                    "type": "else"
                }
            }
        },
        "else-if": {
            "attributes": {
                "test": {
                    "type": "expression"
                }
            },
            "node-class": "./ElseIfNode",
            "transformer": {
                "path": "./else-tag-transformer",
                "properties": {
                    "type": "else-if"
                }
            }
        },
        "invoke": {
            "node-class": "./InvokeNode",
            "attributes": {
                "function": {
                    "type": "custom",
                    "allow-expressions": false,
                    "required": true
                },
                "*": {
                    "type": "string",
                    "allow-expressions": true
                }
            }
        },
        "def": {
            "node-class": "./DefNode",
            "attributes": {
                "function": {
                    "type": "custom",
                    "allow-expressions": false
                },
                "body-param": {
                    "type": "custom",
                    "allow-expressions": false
                }
            }
        },
        "with": {
            "node-class": "./WithNode",
            "attributes": {
                "vars": {
                    "type": "custom",
                    "allow-expressions": false
                }
            }
        },
        "include": {
            "node-class": "./IncludeNode",
            "attributes": {
                "template": {
                    "type": "template"
                },
                "template-data": {
                    "type": "expression"
                },
                "resource": {
                    "type": "string"
                },
                "static": {
                    "type": "boolean",
                    "allow-expressions": false
                },
                "*": {
                    "type": "string"
                }
            }
        },
        "attr": {
            "attributes": {
                "name": {
                    "type": "string"
                },
                "value": {
                    "type": "string"
                },
                "namespace": {
                    "type": "string"
                },
                "prefix": {
                    "type": "string"
                }
            }
        },
        "var": {
            "node-class": "./VarNode",
            "attributes": {
                "name": {
                    "type": "custom",
                    "allow-expressions": false
                },
                "value": {
                    "type": "expression"
                },
                "static": {
                    "type": "boolean"
                },
                "string-value": {
                    "type": "string"
                },
                "boolean-value": {
                    "type": "boolean"
                },
                "number-value": {
                    "type": "number"
                }
            }
        },
        "require": {
            "node-class": "./RequireNode",
            "attributes": {
                "module": {
                    "type": "string"
                },
                "var": {
                    "type": "custom",
                    "allow-expressions": false
                }
            }
        },
        "assign": {
            "node-class": "./AssignNode",
            "attributes": {
                "var": {
                    "type": "custom",
                    "allow-expressions": false
                },
                "value": {
                    "type": "expression"
                }
            }
        }
    },
    "text-transformer": {
        "path": "./core-text-transformer"
    }
}
