Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package com.google.sitebricks.rendering.control;
  
  
  import java.util.Map;

Author(s):
Dhanji R. Prasanna (dhanji@gmail com)
  
 class EmbeddedRespond implements Respond {
   private static final String BODY_BEGIN = "<body";
   private static final String BODY_END = "</body>";
   private static final char NOT_IN_QUOTE = '\0';
 
   // Memo fields.
   private String body;
 
   private final Map<StringArgumentWidgetarguments;
   private final Respond delegate;
 
   public EmbeddedRespond(Map<StringArgumentWidgetargumentsRespond respond) {
     this. = arguments;
     this. = respond;
   }
 
   public String toHeadString() {
     if (null == ) {
       //extract and store
       extract(.toString());
     }
 
     //we discard the <head> tag rendered in the child page and
     //instead return only what was directly rendered with writeToHead()
     return .getHead();
   }
 
   //state machine extracts <body> tag content
 
   private void extract(String htmlDoc) {
 
     //now extract the contents of <body>...
     int bodyStart = htmlDoc.indexOf() + .length();
 
     //scan for end of the <body> start tag (beginning of body content)
     char quote = ;
     for (int body = bodyStartbody < htmlDoc.length(); body++) {
       final char c = htmlDoc.charAt(body);
       if (isQuoteChar(c)) {
         if (quote == )
           quote = c;
         else if (quote == c)
           quote = ;
       }
 
       if ('>' == c &&  == quote) {
         bodyStart = body + 1;
         break;
       }
     }
 
     int bodyEnd = htmlDoc.indexOf(bodyStart);
 
     //if there was no body tag, just embed whatever was rendered directly
     if (-1 == bodyEnd) {
       EmbeddedRespond.this. = htmlDoc;
     } else
       EmbeddedRespond.this. = htmlDoc.substring(bodyStartbodyEnd);
   }
 
 
   private static boolean isQuoteChar(char c) {
     return '"' == c || '\'' == c;
   }
 
   public void write(String text) {
     .write(text);
   }
 
   public HtmlTagBuilder withHtml() {
     return .withHtml();
   }
 
   public void write(char c) {
     .write(c);
   }
 
   public void require(String require) {
     .require(require);
   }
 
   public void redirect(String to) {
     .redirect(to);
   }
 
   public void writeToHead(String text) {
     .writeToHead(text);
   }
 
   public void chew() {
    .chew();
  }
  public String getRedirect() {
    return .getRedirect();
  }
  public String getContentType() {
    return .getContentType();
  }
  public ArgumentWidget include(String name) {
    return .get(name);
  }
  public String getHead() {
    return .getHead();
  }
  public void clear() {
    .clear();
  }
  @Override public Object pageObject() {
    return .pageObject();
  }
  public String toString() {
    if (null == ) {
      extract(super.toString());
    }
    return ;
  }
New to GrepCode? Check out our FAQ X