Changeset 810:e406249bc79b in livinglogic.java.ul4

Show
Ignore:
Timestamp:
03/22/13 12:46:41 (5 years ago)
Author:
Walter Doerwald <walter@…>
Branch:
default
Tags:
exp-66
Message:

removeWhitespace no longer removes the initial spaces in a string, but only the whitespace *after* a linefeed.

Files:
4 modified

Legend:

Unmodified
Added
Removed
  • pom.xml

    r808 r810  
    44    <groupId>com.livinglogic</groupId> 
    55    <artifactId>ul4</artifactId> 
    6     <version>0.65</version> 
     6    <version>0.66</version> 
    77    <packaging>jar</packaging> 
    88    <name>UL4</name> 
  • src/main/java/com/livinglogic/ul4/InterpretedTemplate.java

    r806 r810  
    393393     * @return The render output as a string. 
    394394     */ 
     395    public String renders() 
     396    { 
     397        return renders(new EvaluationContext(null, null)); 
     398    } 
     399 
     400    /** 
     401     * Renders the template and returns the resulting string. 
     402     * @return The render output as a string. 
     403     */ 
    395404    public String renders(EvaluationContext context) 
    396405    { 
     
    574583    private static String removeWhitespace(String string) 
    575584    { 
    576         String[] lines = string.split("\n"); 
    577585        StringBuilder buffer = new StringBuilder(); 
    578  
    579         for (String line : lines) 
    580         { 
    581             buffer.append(StringUtils.stripStart(line, null)); 
     586        boolean keepWS = true; 
     587 
     588        for (int i = 0; i < string.length(); ++i) 
     589        { 
     590            char c = string.charAt(i); 
     591 
     592            if (c == '\n') 
     593                keepWS = false; 
     594            else if (Character.isWhitespace(c)) 
     595            { 
     596                if (keepWS) 
     597                    buffer.append(c); 
     598            } 
     599            else 
     600            { 
     601                buffer.append(c); 
     602                keepWS = true; 
     603            } 
    582604        } 
    583605 
  • src/main/resources/versiondoc.txt

    r806 r810  
     1exp-66: 
     2------- 
     3Comments: 
     4* removeWhitespace no longer removes the initial spaces in a string, but only 
     5  the whitespace *after* a linefeed. 
     6 
     7 
    18exp-65: 
    29------- 
  • src/test/java/tests/UL4Test.java

    r798 r810  
    3636public class UL4Test 
    3737{ 
    38     private static InterpretedTemplate getTemplate(String source, String name) 
     38    private static InterpretedTemplate getTemplate(String source, String name, boolean keepWhitespace) 
    3939    { 
    4040        try 
    4141        { 
    42             InterpretedTemplate template = new InterpretedTemplate(source, name, false); 
     42            InterpretedTemplate template = new InterpretedTemplate(source, name, keepWhitespace); 
    4343            // System.out.println(template); 
    4444            return template; 
     
    5050    } 
    5151 
     52    private static InterpretedTemplate getTemplate(String source, boolean keepWhitespace) 
     53    { 
     54        return getTemplate(source, null, keepWhitespace); 
     55    } 
     56 
     57    private static InterpretedTemplate getTemplate(String source, String name) 
     58    { 
     59        return getTemplate(source, name, false); 
     60    } 
     61 
    5262    private static InterpretedTemplate getTemplate(String source) 
    5363    { 
    54         return getTemplate(source, null); 
     64        return getTemplate(source, null, false); 
    5565    } 
    5666 
     
    32233233    { 
    32243234        checkTemplateOutput("gurk", "gurk<?return 42?>hurz"); 
     3235    } 
     3236 
     3237    @Test 
     3238    public void keepWhitespace() 
     3239    { 
     3240        InterpretedTemplate template1 = getTemplate("<?if True?> foo<?end if?>"); 
     3241        assertEquals(template1.renders(), " foo"); 
     3242 
     3243        InterpretedTemplate template2 = getTemplate("<?if True?> foo\n bar<?end if?>"); 
     3244        assertEquals(template2.renders(), " foobar"); 
     3245 
     3246        InterpretedTemplate template3 = getTemplate("<?if True?>\n foo\n bar<?end if?>"); 
     3247        assertEquals(template3.renders(), "foobar"); 
    32253248    } 
    32263249