Hi,

They're both there to handle property accessors within the template.
It's missing from the documentation, but templates can actually handle
things like:

    "Hi #{person[firstname]} #{person.lastname}"

...where what you feed in is:

    t.evaluate({person: {
        firstname: "Joe",
        lastname:  "Bloggs"
    });

(Example: http://jsbin.com/axuzo3)

The regex plus the loop are what make that happen, both the subscript
notation (the first one) and the dotted notation (the second one). I
think it only works one level deep with the bracketed notation,
though.

HTH,
--
T.J. Crowder
Independent Software Engineer
tj / crowder software / com
www / crowder software / com


On Nov 6, 7:52 pm, petrob <petrob...@yahoo.com> wrote:
> I am learning the Prototype library  in-depth and my question is about
> the inner logic of the Template.evaluate method. Everything is clear
> as long as the original match provided by the gsub function from the
> stored template is further processed.
>
> a.) what kind of scenario is the inner regular expresion used to
> handle?
> b.) what is going on in the while loop
>
> /*
> cut
> */
> var pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;
>
>       match = pattern.exec(expr);
>       if (match == null) return before;
>
>       while (match != null) {
>         var comp = match[1].startsWith('[') ? match[2].replace(/\\\\]/
> g, ']') : match[1];
>         ctx = ctx[comp];
>         if (null == ctx || '' == match[3]) break;
>         expr = expr.substring('[' == match[3] ? match[1].length :
> match[0].length);
>         match = pattern.exec(expr);
>       }
> /*
> cut
> */

-- 
You received this message because you are subscribed to the Google Groups 
"Prototype & script.aculo.us" group.
To post to this group, send email to prototype-scriptacul...@googlegroups.com.
To unsubscribe from this group, send email to 
prototype-scriptaculous+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en.

Reply via email to