package com.google.sitebricks.rendering.control; import com.google.sitebricks.Evaluator; import com.google.sitebricks.Renderable; import com.google.sitebricks.Respond; import com.google.sitebricks.compiler.Parsing; import com.google.sitebricks.rendering.SelfRendering; import net.jcip.annotations.Immutable; import java.util.Set; /** * Used to embed an argument inside an embedding widget (for later inclusion by the @Include widget). * * @author Dhanji R. Prasanna (dhanji@gmail com) */ @SelfRendering @Immutable class ArgumentWidget implements Renderable { private final WidgetChain widgetChain; private final String expression; private final Evaluator evaluator; public ArgumentWidget(WidgetChain widgetChain, String expression, Evaluator evaluator) { this.widgetChain = widgetChain; this.expression = Parsing.stripQuotes(expression); this.evaluator = evaluator; } public void render(Object bound, Respond respond) { widgetChain.render(bound, respond); } public <T extends Renderable> Set<T> collect(Class<T> clazz) { return widgetChain.collect(clazz); } /** * * @return Returns the embedded argument text. For example, in {@code @When("red")}, will return "red". * */ public String getName() { return expression; } }