package be.iminds.ilabt.jfed.groovy_dsl;

import be.iminds.ilabt.jfed.groovy_dsl.events.*;
import be.iminds.ilabt.jfed.groovy_dsl.impl.DSLEventFactoryImpl;

/**
 * User: twalcari
 * Date: 5/18/2015
 * Time: 08:51
 */
public interface DSLEventFactory {

    ClosureStartElement createClosureStartElement(String name);
    ClosureEndElement createClosureEndElement();

    PropertyElement createStringPropertyElement(String name, String value);
    PropertyElement createNumberPropertyElement(String name, Number value);

    FunctionCallElement createFunctionCallElement(String name, FunctionArgument ... arguments);

    static DSLEventFactory newInstance() {
        return new DSLEventFactoryImpl();
    }
}
