package com.impossibl.stencil.ext.std; import java.io.IOException; import java.io.StringWriter; import java.util.Map; import com.impossibl.stencil.api.Block; import com.impossibl.stencil.api.Callable; import com.impossibl.stencil.api.Named; import com.impossibl.stencil.api.Preparable; @Named("raw") public class RawFunction implements Callable, Preparable { @Override public String[] getParameterNames() { return ALL_PARAMS; } @Override public Object call(Map<String,?> params) { return this; } @Override public String[] getBlockNames() { return ALL_BLOCKS; } @Override public Object prepare(Map<String,?> params) throws IOException { StringWriter out = new StringWriter(); for(Map.Entry<String, ?> paramEntry : params.entrySet()) { Object param = paramEntry.getValue(); if (param instanceof Block) { ((Block) param).write(out); } else if (param instanceof Map) { @SuppressWarnings("unchecked") Map<String, Block> otherBlocks = (Map<String, Block>) param; for (Block block : otherBlocks.values()) { block.write(out); } } } return out.toString(); } }