use crate::position::Position;
use std::path::PathBuf;
#[derive(Debug, PartialEq, Clone, Default)]
pub struct Function {
pub name: String,
pub params: Vec<(String, String, Position)>,
}
#[derive(Debug, PartialEq, Clone)]
pub enum ComponentParameterValue {
Bool(bool),
Number(String),
String(String),
RustExprParen(String),
RustExprSimple(String),
Block(Vec<Node>),
}
#[derive(Debug, PartialEq, Clone)]
pub struct ComponentParameter {
pub name: String,
pub value: ComponentParameterValue,
pub position: Position,
}
#[derive(Debug, PartialEq, Clone)]
pub enum Node {
Template(PathBuf, String, Vec<Function>, Vec<Node>, Position), Text(String), TemplateParams(Vec<(String, String, Position)>, Position),
RustBlock(String, Position), Expr(String, bool, Position), MatchExpr(String, Vec<(String, Position, Vec<Node>)>, Position), RustExpr(Vec<(String, Position, Vec<Node>)>, Position), Component(String, Vec<ComponentParameter>, Vec<Node>, Position), ChildContent, Raw(String), UseDirective(String, PathBuf, Box<Node>, Position), ContinueDirective, BreakDirective, }