Browse Source

* Added tests for:
** {% for x, y in foobar %}
** Auto-escaping
** {% if %} {% else %} {% endif %}
** Filters
** comment blocks ({% comment %}{% endcomment %})

Evan Miller 17 years ago
parent
commit
74345a562b

+ 8 - 0
demo/out/test_autoescape.html

@@ -0,0 +1,8 @@
+
+    This is escaped: <b>bold</b>
+    
+    This is not escaped: <b>bold</b>
+
+    This is escaped: &lt;b&gt;bold&lt;/b&gt;
+    
+

+ 4 - 1
demo/out/test_comment.html

@@ -8,5 +8,8 @@
 	
 	
 	bla
 	bla
 	
 	
+        blue
+        
+        black
   </body>
   </body>
-</html>
+</html>

+ 34 - 0
demo/out/test_filters.html

@@ -0,0 +1,34 @@
+Capfirst: Capitalized
+
+Centered:
+<pre>
+       center       
+</pre>
+
+First letter: f
+
+Fix ampersands: &amp;
+
+Force_escape: &lt;b&gt;&lt;/b&gt;
+
+Joined: eins, zwei, drei
+
+Last: t
+
+Length: 3
+
+Length is 2?: false
+
+Left adjust: 
+<pre>
+left                
+</pre>
+
+Lowercase: lowercase
+
+Right adjust:
+<pre>
+               right
+</pre>
+
+Uppercase: UPPERCASE

+ 7 - 0
demo/out/test_for_list.html

@@ -0,0 +1,7 @@
+
+More than one apple is called "apples".
+
+More than one banana is called "bananas".
+
+More than one coconut is called "coconuts".
+

+ 4 - 0
demo/out/test_if.html

@@ -0,0 +1,4 @@
+One but not two:  one 
+Two but not one:  two 
+One:  one 
+None: 

+ 2 - 0
demo/out/test_include.html

@@ -0,0 +1,2 @@
+Including another file: This is included! foostring1
+

+ 1 - 0
demo/templates/include.html

@@ -0,0 +1 @@
+This is included! {{ var1 }}

+ 8 - 0
demo/templates/test_autoescape.html

@@ -0,0 +1,8 @@
+{% autoescape on %}
+    This is escaped: {{ var1 }}
+    {% autoescape off %}
+    This is not escaped: {{ var1 }}
+
+    This is escaped: {{ var1|escape }}
+    {% endautoescape %}
+{% endautoescape %}

+ 6 - 1
demo/templates/test_comment.html

@@ -8,5 +8,10 @@
 	{# comment1 #}
 	{# comment1 #}
 	bla
 	bla
 	{# comment2 #}
 	{# comment2 #}
+        blue
+        {% comment %}
+        Block Comment
+        {% endcomment %}
+        black
   </body>
   </body>
-</html>
+</html>

+ 34 - 0
demo/templates/test_filters.html

@@ -0,0 +1,34 @@
+Capfirst: {{ "capitalized"|capfirst }}
+
+Centered:
+<pre>
+{{ "center"|center:20 }}
+</pre>
+
+First letter: {{ "first"|first }}
+
+Fix ampersands: {{ "&"|fix_ampersands }}
+
+Force_escape: {{ "<b></b>"|force_escape }}
+
+Joined: {{ list|join:", " }}
+
+Last: {{ "last"|last }}
+
+Length: {{ list|length }}
+
+Length is 2?: {{ list|length_is:2 }}
+
+Left adjust: 
+<pre>
+{{ "left"|ljust:20 }}
+</pre>
+
+Lowercase: {{ "LOWERCASE"|lower }}
+
+Right adjust:
+<pre>
+{{ "right"|rjust:20 }}
+</pre>
+
+Uppercase: {{ "uppercase"|upper }}

+ 3 - 0
demo/templates/test_for_list.html

@@ -0,0 +1,3 @@
+{% for singular, plural in fruit_list %}
+More than one {{ singular }} is called "{{ plural }}".
+{% endfor %}

+ 4 - 0
demo/templates/test_if.html

@@ -0,0 +1,4 @@
+One but not two: {% if var1 %} one {% else %} two {% endif %}
+Two but not one: {% if not var1 %} one {% else %} two {% endif %}
+One: {% if var1 %} one {% endif %}
+None: {% if var2 %} one {% endif %}

+ 1 - 0
demo/templates/test_include.html

@@ -0,0 +1 @@
+Including another file: {% include "include.html" %}

+ 38 - 6
src/demo/erlydtl_demo.erl

@@ -74,7 +74,19 @@ compile("var" = Name) ->
 
 
 compile("extends" = Name) ->
 compile("extends" = Name) ->
     compile(Name, ".html"); 
     compile(Name, ".html"); 
+
+compile("include" = Name) ->
+    compile(Name, ".html"); 
+
+compile("autoescape" = Name) ->
+    compile(Name, ".html"); 
+
+compile("if" = Name) ->
+    compile(Name, ".html"); 
           
           
+compile("filters" = Name) ->
+    compile(Name, ".html"); 
+
 compile("comment" = Name) ->
 compile("comment" = Name) ->
     compile(Name, ".html");
     compile(Name, ".html");
                
                
@@ -128,16 +140,21 @@ compile(Name, Ext) ->
 %% @end 
 %% @end 
 %%--------------------------------------------------------------------
 %%--------------------------------------------------------------------
 render_all() ->
 render_all() ->
-    render("var"),
-    render("extends"),
+    render("autoescape"),
     render("comment"),
     render("comment"),
+    render("csstags"),
+    render("extends"),
+    render("filters"),
     render("for"),
     render("for"),
+    render("for_list"),
+    render("for_preset"),
     render("for_records"),
     render("for_records"),
+    render("for_records_preset"),
     render("htmltags"),
     render("htmltags"),
-    render("csstags"),
-    render("var_preset"),
-    render("for_preset"),
-    render("for_records_preset").
+    render("if"),
+    render("include"),
+    render("var"),
+    render("var_preset").
         
         
 
 
 %%--------------------------------------------------------------------
 %%--------------------------------------------------------------------
@@ -148,6 +165,18 @@ render_all() ->
 render("var" = Name) ->
 render("var" = Name) ->
     render(Name, [{var1, "foostring1"}, {var2, "foostring2"}, {var_not_used, "foostring3"}]);
     render(Name, [{var1, "foostring1"}, {var2, "foostring2"}, {var_not_used, "foostring3"}]);
  
  
+render("filters" = Name) ->
+    render(Name, [{'list', ["eins", "zwei", "drei"]}]);
+
+render("include" = Name) ->
+    render(Name, [{var1, "foostring1"}, {var2, "foostring2"}]);
+ 
+render("autoescape" = Name) ->
+    render(Name, [{var1, "<b>bold</b>"}]);
+
+render("if" = Name) ->
+    render(Name, [{var1, "something"}]);
+
 render("extends" = Name) ->
 render("extends" = Name) ->
     render(Name, [{base_var, "base-barstring"}, {test_var, "test-barstring"}]);
     render(Name, [{base_var, "base-barstring"}, {test_var, "test-barstring"}]);
         
         
@@ -157,6 +186,9 @@ render("comment" = Name) ->
 render("for" = Name) ->
 render("for" = Name) ->
     render(Name, [{fruit_list, ["apple", "banana", "coconut"]}]);
     render(Name, [{fruit_list, ["apple", "banana", "coconut"]}]);
             
             
+render("for_list" = Name) ->
+    render(Name, [{fruit_list, [["apple", "apples"], ["banana", "bananas"], ["coconut", "coconuts"]]}]);
+
 render("for_records" = Name) ->
 render("for_records" = Name) ->
     Link1 = [{name, "Amazon"}, {url, "http://amazon.com"}],
     Link1 = [{name, "Amazon"}, {url, "http://amazon.com"}],
     Link2 = [{name, "Google"}, {url, "http://google.com"}],
     Link2 = [{name, "Google"}, {url, "http://google.com"}],