Hi,

back on my initial question about compiling template, i m looking for some 
experienced ideas.

I have now found out i needed to change the ast tree of template in order 
to simplify it for later manipulation.

So for example i transform this
{{ ("what" | up) | lower }}
into
{{ $some := ("what" | up) }}
{{ $some | lower }}

And so on, i d like to reach 
{{ $some := up "what" }}
{{ lower $some }}

Which will be as close as possible to regular go code.

The thing is that the process to do those transformations seems pretty 
fragile and tedious.

I have tree like this
 parse.Tree
   parse.ActionNode
    parse.PipeNode
     parse.CommandNode
      parse.IdentifierNode Ident="up"
      parse.StringNode Quoted="\"some\"" Text="some"
   parse.TextNode Text="\n"
   parse.ActionNode
    parse.PipeNode
     parse.CommandNode
      parse.StringNode Quoted="\"some\"" Text="some"
     parse.CommandNode
      parse.IdentifierNode Ident="split"
      parse.PipeNode
       parse.CommandNode
        parse.PipeNode
         parse.CommandNode
          parse.StringNode Quoted="\"what\"" Text="what"
         parse.CommandNode
          parse.IdentifierNode Ident="lower"
       parse.CommandNode
        parse.IdentifierNode Ident="up"
   parse.TextNode Text="\n"

to simplify, one of the algorithm consist of browsing the structure 
until it match a Pipe containing a Cmd with an Identifier after a Cmd with 
a Pipe
that would match *("what" | lower) | up*

And so on to simplify more and more the tree.

I wonder if there are better ways to achieve this kind of transform.

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to