Browse Source

fixed extend tag for taking quoted strings for hardcoded paths

git-svn-id: http://erlydtl.googlecode.com/svn/trunk@5 a5195066-8e3e-0410-a82a-05b01b1b9875
rsaccon 17 years ago
parent
commit
7f905e715a

+ 1 - 1
demo/templates/test_extend.html

@@ -1,3 +1,3 @@
-{% extends base.html %}
+{% extends "base.html" %}
 {% block title %}replacing the base title{% endblock %}
 {% block content %}replacing the base content{% endblock %}

+ 1 - 1
src/demo/erlydtl_demo.erl

@@ -48,7 +48,7 @@
 compile_templates() ->
     DocRoot = filename:join([filename:dirname(code:which(?MODULE)),"..", "demo", "templates"]),
     filelib:fold_files(DocRoot,
-        "\.",
+        "\.html$",
         true,
         fun(Path, _Acc) ->
             Name = filename:rootname(filename:basename(Path)),

+ 1 - 0
src/erlydtl/erlydtl_api.erl

@@ -67,6 +67,7 @@ rel_dir(Dir, DocRoot) ->
 
 
 parse(File) ->  
+io:format("TRACE ~p:~p ~p~n",[?MODULE, ?LINE, File]),
 	case file:read_file(File) of
 		{ok, B} ->
 	        case erlydtl_scanner:scan(binary_to_list(B)) of

+ 16 - 5
src/erlydtl/erlydtl_parser.erl

@@ -1,6 +1,9 @@
 -module(erlydtl_parser).
 -export([parse/1, parse_and_scan/1, format_error/1]).
--file("src/erlydtl/erlydtl_parser.yrl", 63).
+-file("src/erlydtl/erlydtl_parser.yrl", 65).
+
+extends({_, _, [Name]}) ->
+    {extends, 1, string:strip(Name, both, $")}.
 
 block({_, _, [Name]}, Content) ->
     {block, list_to_atom(Name), Content}.
@@ -97,7 +100,7 @@ yecctoken2string(Other) ->
 
 
 
--file("src/erlydtl/erlydtl_parser.erl", 100).
+-file("src/erlydtl/erlydtl_parser.erl", 103).
 
 yeccpars2(0, __Cat, __Ss, __Stack, __T, __Ts, __Tzr) ->
  __NewStack = yeccpars2_0_(__Stack),
@@ -122,7 +125,8 @@ yeccpars2(3, __Cat, __Ss, __Stack, __T, __Ts, __Tzr) ->
  __NewStack = yeccpars2_3_(__Stack),
  yeccpars2(7, __Cat, [3 | __Ss], __NewStack, __T, __Ts, __Tzr);
 yeccpars2(4, __Cat, __Ss, __Stack, __T, __Ts, __Tzr) ->
- yeccpars2(yeccgoto('Element', hd(__Ss)), __Cat, __Ss, __Stack, __T, __Ts, __Tzr);
+ __NewStack = yeccpars2_4_(__Stack),
+ yeccpars2(yeccgoto('Element', hd(__Ss)), __Cat, __Ss, __NewStack, __T, __Ts, __Tzr);
 yeccpars2(5, __Cat, __Ss, __Stack, __T, __Ts, __Tzr) ->
  yeccpars2(yeccgoto('Element', hd(__Ss)), __Cat, __Ss, __Stack, __T, __Ts, __Tzr);
 yeccpars2(6, __Cat, __Ss, __Stack, __T, __Ts, __Tzr) ->
@@ -178,12 +182,19 @@ yeccpars2_3_(__Stack) ->
    nil
   end | __Stack].
 
--compile({inline,{yeccpars2_8_,1}}).
+-compile({inline,{yeccpars2_4_,1}}).
 -file("src/erlydtl/erlydtl_parser.yrl", 57).
+yeccpars2_4_([__1 | __Stack]) ->
+ [begin
+   extends ( __1 )
+  end | __Stack].
+
+-compile({inline,{yeccpars2_8_,1}}).
+-file("src/erlydtl/erlydtl_parser.yrl", 58).
 yeccpars2_8_([__3,__2,__1 | __Stack]) ->
  [begin
    block ( __1 , __2 )
   end | __Stack].
 
 
--file("src/erlydtl/erlydtl_parser.yrl", 66).
+-file("src/erlydtl/erlydtl_parser.yrl", 71).

+ 7 - 1
src/erlydtl/erlydtl_parser.yrl

@@ -56,11 +56,17 @@ Elements -> Elements Element : ['$1', '$2'].
 
 Element -> string : '$1'.
 Element -> var : '$1'.
-Element -> extends : '$1'.
+% Element -> extends : '$1'.
+Element -> extends : extends('$1').
 Element -> block Elements endblock : block('$1', '$2').
 
 
+
 Erlang code.
 
+extends({_, _, [Name]}) ->
+    %% TODO: check if string or variable, now it is assumed it is string
+    {extends, 1, string:strip(Name, both, $")}.
+
 block({_, _, [Name]}, Content) ->
     {block, list_to_atom(Name), Content}.