<div class="gmail_quote">On Fri, Feb 13, 2009 at 4:52 PM, Patrick R. Michaud <span dir="ltr">&lt;<a href="mailto:pmichaud@pobox.com">pmichaud@pobox.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">On Fri, Feb 13, 2009 at 10:07:49AM +0100, Peter Bowers wrote:<br>
&gt; Right now pagelist is constructed somewhat as a chain link.<br>
&gt; FmtPageList calls $fmtfn (usually FPLTemplate()) which calls<br>
&gt; makepagelist(). &nbsp;No ifs, ands, or buts -- one calls the other<br>
&gt; which calls the last one. &nbsp;As a result there&#39;s very<br>
&gt; little possibility of any interaction in the process there...<br>
<br>
</div>False. &nbsp;One can easily change $fmtfn to call whatever sequence<br>
you prefer -- indeed, that&#39;s why it exists.</blockquote><div><br>Yes, and this is what I was referring to in the beginning of this thread wrt copying FPLTemplate and making changes to it.&nbsp; That&#39;s certainly a possibility.&nbsp; It has the unfortunate side effect of &quot;bloating&quot; a recipe with a significant amount of code which is simply copy/pasted from existing core functions [besides the disadvantage that when/if core features are added or bugs fixed it would be nice to not have to duplicate those changes in a redundant piece of code -- replace this sentence with all the usual arguments for avoiding duplicated code).&nbsp; That&#39;s what I&#39;m trying to get at -- if I want to use the *existing* FPLTemplate() as a developer (which I want to do because it is a great function which takes the messy and complicated job of virtually a report generator and does it all very nicely) then the way the code is structured becomes a barrier to the re-use of this code.&nbsp; So much of pmwiki has been designed with this type of re-use in mind (and the $fmtfn flexibility does provide a &quot;hook&quot; here) and I&#39;m just suggesting that the same sort of approach be considered here...<br>

</div><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; If it were structured like this (function names intended for<br>
&gt; self-documentation, not for actual use):<br>
&gt;<br>
&gt; function DoAPageList()<br>
&gt; {<br>
&gt; &nbsp; &nbsp;PageListOptionSetup();<br>
&gt; &nbsp; &nbsp;$matchlist = MakeListOfPages($selection_options);<br>
&gt; &nbsp; &nbsp;FormatPageList($matchlist, $formatting_options);<br>
&gt; }<br>
<br>
</div>The reason why FPLTemplate() does the call to MakePageList()<br>
is that we want it to be possible for the template to supply<br>
default options to the pagelist (via the (:template default ... :)<br>
markup). &nbsp;Thus the MakePageList() call has to occur _after_<br>
we start processing the template.<br>
<br>
&gt; Basically what I&#39;m suggesting [...] is<br>
<div class="Ih2E3d">&gt; to separate the functionality of a pagelist. &nbsp;(a) Part of it is setting up<br>
&gt; defaults and options. &nbsp;Another part (b) is getting the appropriate list of<br>
&gt; pages. &nbsp;The last part (c) is actually formatting said list.<br>
<br>
</div>Since the formatter has/wants the ability to influence the<br>
&quot;get the appropriate list of pages&quot; part, it&#39;s not quite as<br>
straightforward as this.<br>
<br>
I suppose it would be possible for us to parse the template<br>
page twice, or to try to otherwise breakup FPLTemplate into<br>
separate stages for &quot;getting options&quot; and &quot;generating the list&quot;,<br>
but when I mentally try to code it that way I get a bad feeling<br>
about the result.</blockquote><div><br>And you&#39;re the one with the big picture on the project.&nbsp; From my limited perspective it seems like the double-parse would be a small price to pay for significantly enhanced flexibility from a recipe developer&#39;s perspective.&nbsp; But the fact that I didn&#39;t even know (:template default ...:) existed points up the fact that I don&#39;t know what other pieces may be stepped on in that process... (i.e., whatever it is that is giving you the bad feeling is probably something I don&#39;t have a clue about and thus I feel just fine, thank you very much... :-)&nbsp; )&nbsp; I guess all I&#39;m saying is there would be significant value to it if the restructure were technically feasible without causing other problems elsewhere...<br>
<br>[All previous caveats about tightly optimized code and etc. still valid]<br><br>-Peter<br></div></div>