The run method has been broken up a bit but into __get_body and __get_runmode.&nbsp; Not particularly overridable but it has been broken out.&nbsp; The run method is almost nothing more than a list of callbacks now.<br><br>Mark did change from Class::ISA to Class::MOP (Moose underpinings) to examine the parent classess of the currently running app (which was used when doing callbacks) but reverted back to Class::ISA after he determined there was a performance hit when using Class::MOP.&nbsp; I wasn&#39;t aware that he had been playing with a full Moose implementation though.<br>
<br>Also, I added a function for headers after reading Cees complaint in the comments of CGI::Application::Plugin::Session.&nbsp; That is, header_props clobbers all the current headers, header_add will merge together multiple headers of the same name if needed but doesn&#39;t clobber the previous values.&nbsp; I&#39;ve added header_set which is essentially the same as head_add but it does clobber each individual key.<br>
<br>For example if you did $self-&gt;header_add( -cookie =&gt; $cookie ) and then called $self-&gt;header_add( -cook =&gt; $another_cookie ), the two would be rolled together and both cookies set.&nbsp; With header_set, if you do $self-&gt;header_add( -cookie =&gt; $cookie ) and then later did $self-&gt;header_set( -cookie =&gt; $another_cookie ), the $cookie gets clobbered.&nbsp; This way you don&#39;t have to do a full header_props call to replace one particular header.&nbsp; The adapted version of CAP::Plugin::Session actually uses that now.<br>
<br>As to HTML::Template coupling... shall I incorporate CAP::Plugin::AnyTemplate into the core? :)&nbsp; My shamelessness and theivery knows no bounds.<br><br>D<br><br><br><div class="gmail_quote">On Fri, Oct 31, 2008 at 4:05 PM, Michael Graham <span dir="ltr">&lt;<a href="mailto:magog@the-wire.com">magog@the-wire.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="Ih2E3d"><br>
&gt; So, anyone have a part of CGI::App that they particularly hate? :)<br>
<br>
</div>I can&#39;t remember all the details of what people were talking about. &nbsp;I<br>
do remember:<br>
<br>
 &nbsp;* the run method does too much and is hard to override - it should be<br>
 &nbsp; &nbsp;broken up into smaller, easily-overridable methods. &nbsp;(This might<br>
 &nbsp; &nbsp;have been done already.)<br>
 &nbsp;* HTML::Template is too tightly coupled<br>
 &nbsp;* managing HTTP headers is a complete pain<br>
<div class="Ih2E3d"><br>
&gt; I&#39;m kinda terrified to mention it on the CGI::App mailing list for<br>
&gt; fears of getting back &quot;are you insane... lightweight web framework +<br>
&gt; moose = oxymoron!&quot;<br>
<br>
</div>As long as you&#39;re careful to label it a research project and not a<br>
replacement, I don&#39;t think you&#39;ll get much flamage on the CGI::App<br>
list.<br>
<br>
Also, I think Mark Stosberg started a rewrite of CGI::App awhile back in<br>
Moose, didn&#39;t he? &nbsp;Or was it in in Pugs?<br>
<br>
<br>
Michael<br>
<br>
<br>
<br>
On Fri, 31 Oct 2008 11:55:48 -0400<br>
<div><div></div><div class="Wj3C7c">&quot;Dave Doyle&quot; &lt;<a href="mailto:dave.s.doyle@gmail.com">dave.s.doyle@gmail.com</a>&gt; wrote:<br>
<br>
&gt; Well, I&#39;ve got virtually 100% now. &nbsp;The only thing it&#39;s not doing is<br>
&gt; allowing you to use QUERY, TMPL_PATH and PARAMS in the constructor<br>
&gt; (they must be lowercase).<br>
&gt;<br>
&gt; Full test suite is passing now. &nbsp;Any suggestions for improvement is<br>
&gt; more than welcome. :) &nbsp;As I said, I&#39;ve incorporated TT and a stash.<br>
&gt; I was thinking of chucking the callback system altogether since Moose<br>
&gt; allows you run code before/after/around any method. &nbsp;Roles/Plugins<br>
&gt; that compose into the main class can use these hooks as well. &nbsp;I&#39;m<br>
&gt; not sure if a plugin author would find that appealing though. &nbsp;I<br>
&gt; guess it depends. &nbsp;I&#39;ve also made some minor cosmetic changes as I&#39;m<br>
&gt; a fan of the ternary operator instead of if(condition) { x =<br>
&gt; something } else { x = something else}.<br>
&gt;<br>
&gt; So, anyone have a part of CGI::App that they particularly hate? :)<br>
&gt;<br>
&gt; I guess I&#39;ll see when i get my PAUSE id (how long does that take<br>
&gt; anyhow it&#39;s been a little bit but I haven&#39;t heard back?) i can throw<br>
&gt; it up on CPAN and see if anyone is interested. &nbsp;I&#39;m kinda terrified<br>
&gt; to mention it on the CGI::App mailing list for fears of getting back<br>
&gt; &quot;are you insane... lightweight web framework + moose = oxymoron!&quot;<br>
&gt; This is, after all, going to be the first thing I try and put on CPAN.<br>
&gt;<br>
&gt; D<br>
&gt;<br>
&gt; On Thu, Oct 30, 2008 at 5:08 PM, Michael Graham &lt;<a href="mailto:magog@the-wire.com">magog@the-wire.com</a>&gt;<br>
&gt; wrote:<br>
&gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; You have my blessing for anything you steal. &nbsp;I know you&#39;re going<br>
&gt; &gt; for 100% compatibility, but it might be a good project for doing<br>
&gt; &gt; some refactoring of some of the rough edges in cgiapp...<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; Michael<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; On Thu, 30 Oct 2008 15:21:17 -0400<br>
&gt; &gt; &quot;Dave Doyle&quot; &lt;<a href="mailto:dave.s.doyle@gmail.com">dave.s.doyle@gmail.com</a>&gt; wrote:<br>
&gt; &gt;<br>
&gt; &gt; &gt; Well... despite my message asking about the meeting it looks like<br>
&gt; &gt; &gt; I&#39;ll be unable to attend tonight.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; However, if we&#39;re running into a shortage of talks, I can<br>
&gt; &gt; &gt; volunteer to put something together about Moose for next month or<br>
&gt; &gt; &gt; whenever after. &nbsp;After my lightening talk and continued hacking<br>
&gt; &gt; &gt; on Moose::CAP I&#39;ve learned a lot more (and realized some stupid<br>
&gt; &gt; &gt; mistakes in what I was doing) and can probably help others get a<br>
&gt; &gt; &gt; start on things.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; I can also do more on what I&#39;ve done with Moose::CAP. &nbsp;I&#39;ve<br>
&gt; &gt; &gt; actually applied for a PAUSE id to upload it to CPAN. &nbsp;I&#39;ve<br>
&gt; &gt; &gt; actually renamed it Sanguine (provided the PAUSE admins accept me<br>
&gt; &gt; &gt; and approve the new namespace). &nbsp;I&#39;ve also incorporated<br>
&gt; &gt; &gt; CGI::Application::Plugin::Forward (sorry for stealing Michael...<br>
&gt; &gt; &gt; but I give credit!), CGI::Application::Plugin::Redirect (I&#39;m not<br>
&gt; &gt; &gt; sure if Cees is on here... but I&#39;ve stolen from him in other<br>
&gt; &gt; &gt; places too) as well as incorporated a stash and TT. &nbsp; I&#39;ve also<br>
&gt; &gt; &gt; ported:<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; CGI::Application::Plugin::DBH<br>
&gt; &gt; &gt; CGI::Application::Plugin::Session<br>
&gt; &gt; &gt; CGI::Application::Plugin::ValidateRM<br>
&gt; &gt; &gt; CGI::Application::Plugin::FillInForm<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; to Moose roles using different patterns depending on the needs of<br>
&gt; &gt; &gt; the plugin which could be of interest.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; So if any of that sounds of interest, let me know.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; Thanks,<br>
&gt; &gt; &gt; Dave<br>
&gt; &gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; --<br>
&gt; &gt; Michael Graham &lt;<a href="mailto:magog@the-wire.com">magog@the-wire.com</a>&gt;<br>
&gt; &gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
<br>
<br>
--<br>
</div></div><div><div></div><div class="Wj3C7c">Michael Graham &lt;<a href="mailto:magog@the-wire.com">magog@the-wire.com</a>&gt;<br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br><a href="mailto:dave.s.doyle@gmail.com">dave.s.doyle@gmail.com</a><br>