com.google.caja.render
Class TabularSideBySideRenderer

java.lang.Object
  extended by com.google.caja.render.SideBySideRenderer
      extended by com.google.caja.render.TabularSideBySideRenderer
All Implemented Interfaces:
TokenConsumer

public class TabularSideBySideRenderer
extends SideBySideRenderer

A SideBySideRenderer that caches its results so that it can print out a two column table containing the original source code in comments to the left of the translated code.

Author:
mikesamuel@gmail.com

Nested Class Summary
private static class TabularSideBySideRenderer.CodeRow
          A row that displays the same line of source code before and after rewriting.
private static class TabularSideBySideRenderer.FileRow
          A row that indicates a change in the original soruce file.
private static interface TabularSideBySideRenderer.TableRow
          A row in a table that can calculate its minimum width.
 
Field Summary
private  boolean closed
           
private  MessageContext mc
           
private  RenderContext rc
           
private  java.util.List<TabularSideBySideRenderer.TableRow> rows
           
 
Constructor Summary
TabularSideBySideRenderer(java.util.Map<InputSource,? extends java.lang.CharSequence> originalSource, MessageContext mc, RenderContext rc)
           
 
Method Summary
protected  void emitLine(FilePosition pos, java.lang.String orig, java.lang.String rendered)
          Called when rendered tokens have been processed for a line of original source.
private static int[] layoutRows(java.util.List<TabularSideBySideRenderer.TableRow> rows)
          Calculates width of columns.
protected  TokenConsumer makeRenderer(java.lang.StringBuilder sb)
           
 void noMoreTokens()
          Called when no more tokens are available.
private static java.lang.String[] splitLines(java.lang.String s)
           
protected  void switchSource(InputSource prev, InputSource next)
          Called when we render a token from a different source than previously.
private static java.lang.String trimNewlines(java.lang.String s)
           
 
Methods inherited from class com.google.caja.render.SideBySideRenderer
consume, mark
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

rows

private final java.util.List<TabularSideBySideRenderer.TableRow> rows

mc

private final MessageContext mc

rc

private final RenderContext rc

closed

private boolean closed
Constructor Detail

TabularSideBySideRenderer

public TabularSideBySideRenderer(java.util.Map<InputSource,? extends java.lang.CharSequence> originalSource,
                                 MessageContext mc,
                                 RenderContext rc)
Method Detail

makeRenderer

protected TokenConsumer makeRenderer(java.lang.StringBuilder sb)
Specified by:
makeRenderer in class SideBySideRenderer

emitLine

protected void emitLine(FilePosition pos,
                        java.lang.String orig,
                        java.lang.String rendered)
Description copied from class: SideBySideRenderer
Called when rendered tokens have been processed for a line of original source.

Specified by:
emitLine in class SideBySideRenderer
Parameters:
pos - a file position into the original source code.
orig - zero or more lines of original source code.
rendered - one or more lines of rendered source code.

switchSource

protected void switchSource(InputSource prev,
                            InputSource next)
Description copied from class: SideBySideRenderer
Called when we render a token from a different source than previously. This method does nothing, but may be overridden.

Overrides:
switchSource in class SideBySideRenderer
Parameters:
prev - the source from which the last rendered token came.
next - the source from which the next rendered token will come, unless switchSource is called again before SideBySideRenderer.consume(java.lang.String).

noMoreTokens

public void noMoreTokens()
Description copied from interface: TokenConsumer
Called when no more tokens are available.

Specified by:
noMoreTokens in interface TokenConsumer
Overrides:
noMoreTokens in class SideBySideRenderer

layoutRows

private static int[] layoutRows(java.util.List<TabularSideBySideRenderer.TableRow> rows)
Calculates width of columns.


splitLines

private static java.lang.String[] splitLines(java.lang.String s)

trimNewlines

private static java.lang.String trimNewlines(java.lang.String s)


Copyright (C) 2008 Google Inc.
Licensed under the Apache License, Version 2.0