blob: a901b0a4a5a69c002c0b41158f415ef4a0c35b23 [file] [log] [blame]
package org.qi4j.tools.shell.model;
import java.util.Map;
import org.qi4j.api.injection.scope.This;
import org.qi4j.api.mixin.Mixins;
import org.qi4j.api.property.Property;
import org.qi4j.api.unitofwork.UnitOfWork;
import org.qi4j.tools.shell.templating.TemplateEngine;
@Mixins(ApplicationTemplate.Mixin.class)
public interface ApplicationTemplate extends Nameable
{
String evaluate( Map<String, String> variables );
interface State
{
Property<String> template();
}
public class Support
{
public static ApplicationTemplate get( UnitOfWork uow, String name )
{
return uow.get( ApplicationTemplate.class, identity(name) );
}
public static String identity( String name )
{
return "Template:" + name;
}
}
abstract class Mixin
implements ApplicationTemplate
{
@This
private State state;
@Override
public String evaluate( Map<String, String> variables )
{
TemplateEngine engine = new TemplateEngine( state.template().get() );
return engine.create( variables );
}
}
}