/sitebricks/src/main/java/com/google/sitebricks/rendering/control/TextWidget.java

http://github.com/dhanji/sitebricks · Java · 43 lines · 28 code · 10 blank · 5 comment · 1 complexity · 335f480401e76bd9e98508d686275f4e MD5 · raw file

  1. package com.google.sitebricks.rendering.control;
  2. import com.google.sitebricks.Renderable;
  3. import com.google.sitebricks.Respond;
  4. import com.google.sitebricks.compiler.EvaluatorCompiler;
  5. import com.google.sitebricks.compiler.ExpressionCompileException;
  6. import com.google.sitebricks.compiler.Token;
  7. import com.google.sitebricks.rendering.SelfRendering;
  8. import net.jcip.annotations.ThreadSafe;
  9. import java.util.Collections;
  10. import java.util.List;
  11. import java.util.Set;
  12. /**
  13. * @author Dhanji R. Prasanna (dhanji@gmail.com)
  14. */
  15. @ThreadSafe @SelfRendering
  16. class TextWidget implements Renderable {
  17. private final List<Token> tokenizedTemplate; //TODO store some metrics to allocate buffers later
  18. TextWidget(String template, EvaluatorCompiler compiler) throws ExpressionCompileException {
  19. //compile token stream
  20. tokenizedTemplate = compiler.tokenizeAndCompile(template);
  21. }
  22. public void render(Object bound, Respond respond) {
  23. //render template from tokens
  24. StringBuilder builder = new StringBuilder();
  25. for (Token token : tokenizedTemplate) {
  26. builder.append(token.render(bound));
  27. }
  28. respond.write(builder.toString());
  29. }
  30. public <T extends Renderable> Set<T> collect(Class<T> clazz) {
  31. return Collections.emptySet();
  32. }
  33. }