// src/engine/types.rs

#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum SnippetMode {
    Single,
    List,
}

#[derive(Debug, Clone)]
pub struct ContentPointer {
    /// Content file key (relative to content dir, no `.toml`), e.g. "summertime-dreaming"
    pub file: String,
    /// Optional dotted path inside that TOML, e.g. "djInfo.Tiago"
    pub path: Option<String>,
}

#[derive(Debug, Clone)]
pub struct SnippetDirective {
    /// "folder/name" of the snippet (snippets/<name>.htmls)
    pub name: String,
    /// Single | List
    pub mode: SnippetMode,
    /// Optional external content subtree to use for unscoped vars
    pub content: Option<ContentPointer>,
    /// Presence-only flags passed on the directive (e.g. `audioPlayer`)
    pub flags: std::collections::HashSet<String>,
}

#[derive(Debug, Clone)]
pub enum Directive {
    Snippet(SnippetDirective),
}

/*
#[derive(Debug, Clone)]
pub struct Snippet {
    pub html: String,
}

pub type ContentVars = std::collections::HashMap<String, String>;

#[derive(Debug, Clone, Default)]
pub struct ContentList {
    pub items: Vec<std::collections::HashMap<String, String>>,
}
*/
