module hunt.markdown.ext.matter.YamlFrontMatterVisitor;

import hunt.markdown.node.AbstractVisitor;
import hunt.markdown.node.CustomNode;

import hunt.markdown.ext.front.matter.YamlFrontMatterNode;
import hunt.collection.LinkedHashMap;
import hunt.collection.List;
import hunt.collection.Map;

class YamlFrontMatterVisitor : AbstractVisitor {
    private Map!(string, List!(string)) data;

    public this() {
        data = new LinkedHashMap!(string, List!(string))();
    }

    override public void visit(CustomNode customNode) {
        if (cast(YamlFrontMatterNode)customNode !is null) {
            data.put((cast(YamlFrontMatterNode) customNode).getKey(), (cast(YamlFrontMatterNode) customNode).getValues());
        } else {
            super.visit(customNode);
        }
    }

    public Map!(string, List!(string)) getData() {
        return data;
    }
}