Thanks for these additions Kee. This fixes two of my biggest frustrations
with Embperl. Good job and keep on keeping on.

-Allen

On Fri, Oct 17, 2008 at 08:47:28PM -0400, Kee Hinckley wrote:
> A year or so ago I burst back onto the list with some ideas about  
> boosting Embperl support, and then I promptly disappeared (my  
> apologies, work and personal stuff took over my life). Those comments  
> still stand, but I need to approach things a bit more slowly and  
> realistically.
> 
> >I think you should look at Catalyst, perhaps the most active Perl Web
> >development framework. It's a full-featured MVC framework that meets  
> >all of
> >the above requirements.
> 
> I actually have a library that integrates Embperl into Catalyst so  
> that you ca use it instead of the default system (Template Toolkit).   
> Embperl is faster and uses less memory than TT. I have the module  
> working in a production site, and while it needs documentation and  
> code cleanup, I'd be happy to share it with folks and even set up a  
> source repository if people are interested in assisting with the  
> development.
> 
> I've also added some Embperl syntax additions (see below).
> 
> I think the biggest barrier to expanding Embperl's audience (and  
> development) is its heavy reliance on some pretty obfuscated C code.  
> On the other hand, that's one of the reasons it's faster and less  
> memory hungry than the alternatives. A cleaner rewrite would be nice,  
> but I think that even just making it more extensible in Perl would be  
> a big bonus. In particular, the ability to write syntax extensions in  
> Perl would be a big win and would make it easier to create libraries  
> to help people move from other systems. The other piece that would  
> greatly help adoption would be integrating an AJAX system into  
> Embperl. I'm a big fan of MooTools (it has a *very* well designed  
> object model, it's clean, and it's small). Anything we could do to  
> make developing AJAX-based systems in Embperl would be a big win.
> 
> Aside from the speed/memory issues, the place Embperl excels is  
> security. Embperl understands the syntax of the HTML. Every other  
> templating language out there relies on the programmer to properly  
> escape their code to prevent XSS vulnerabilities. Embperl *defaults*  
> to properly escaping output--that's a huge win. Finally, Embperl's  
> ability to auto-fill forms *greatly* reduces the amount of code in  
> many applications.  Embperl's MVC support is definitely limited, and  
> that's why I moved to Catalyst as an MVC platform. At some point a  
> version of Embperl that blocks out the code no longer needed in that  
> environment might be a good idea.
> 
> Syntax Additions
> 
> [% %]
>       Unescaped output. Much easier than [+ do { local($escmode) = 4; ... 
>       }  +], particularly useful for generating Javascript.
> 
> [$ set VARIABLE EXPRESSION $]
>        Sets a module-local "variable" (actually a method call) to the
>        passed-in value[s].  E.g.
> 
>          [$ set TITLE "My Web Page" $]
> 
>        The magic comes in retrieval.  The simple case works as
>        expected.
> 
>          <title>[+ $epreq->TITLE() +]</title>
> 
>        Will return the value appropriate for the current context.
>        Which means the value set in the current file, or (if this file
>        was a template (object_base), the file that is the actual
>        object.  In this sense it's just a slightly easier way to do
>        what is already possible.  More interesting, however is when
>        the method is passed a non-zero value.
> 
>        In our template, we define the following.
> 
>          [$ set CSS qw(template helper $]
> 
>        In our html file that it executes, we define this:
> 
>          [$ set CSS qw(index helper $]
> 
>        Back in the template, we have the following code. Note that
>        this can occur before any of the other files are included.
> 
>          <style type="text/css">
>          <!--
>              [$ foreach $file ($epreq->CSS(1)) $]
>                  @import url("/styles/[+ $file +].css");
>              [$ endforeach $]
>          -->
>          </style>
> 
>        The call with the "all" argument set to true will return all of
>        the values of of all of the "CSS()" methods (with non-unique
>        elements removed).  It will include all methods of all files
>        that list this file as an "ISA".
>              [- Execute({ isa => 'filename.epl' }) -] or the case of
>        "Execute('*')" where the ISA relationship is implicit.
> 
>        So the above code will generate:
> 
>          <style type="text/css">
>          <!--
>                  @import url("/styles/template.css");
>                  @import url("/styles/helper.css");
>                  @import url("/styles/index.css");
>          -->
>          </style>
> 
>       This allows you to create templates which will include CSS,  
> Javascript or
>       other elements that are required by individual Embperl files that  
> aren't
>       even known about at the time the template is created.
> 
> There are a few other additions I've made as well, but the [$ set $]  
> command is
> probably the most useful.
> 
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 

-- 
Happy random title from the Fox News Channel reading list:

'The Lies of George W. Bush: Mastering the Politics of Deception', by David Corn

(http://www.foxnews.com/story/0,2933,77956,00.html)


*******************************************************************
keep it between you and me: get my pgp key with
   gpg --keyserver wwwkeys.nl.pgp.net --recv-keys DEDDEE19
key fingerprint: 68B5 83BA 42CE 3305 F274 3D9E 71BF 4E42 DEDD EE19
*******************************************************************


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to