<HTML><BODY style="word-wrap: break-word; -khtml-nbsp-mode: space; -khtml-line-break: after-white-space; "><BR><DIV><DIV>On Nov 25, 2006, at 7:16 AM, Gaal Yahas wrote:</DIV><BR class="Apple-interchange-newline"><BLOCKQUOTE type="cite"><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">On Sat, Nov 25, 2006 at 02:00:11AM -0500, Jesse Vincent wrote:</DIV> <BLOCKQUOTE type="cite"><BLOCKQUOTE type="cite"><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">A form field object stringifies to "" but triggers writing its HTML to</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">the web output. Has it been considered to just return the HTML?<SPAN class="Apple-converted-space"> </SPAN></DIV> </BLOCKQUOTE><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Short answer: I'm very, very sorry and would like to improve matters.</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Patches are most welcome.<SPAN class="Apple-converted-space">  </SPAN>It was an early and expedient hack that never</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">got cleaned up.</DIV> </BLOCKQUOTE><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Here's a patch; not committing since a discussion on IRC brought up some</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">issues.</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">First of all, the historical reason for -&gt;out()ing fields and not</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">returning their text turns out to be that &lt;% $ff %&gt; escapes HTML by</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">default. Applying this patch directly would break a lot of existing</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">apps! And adding |n everywhere in the templates is a bit of a hassle.</DIV></BLOCKQUOTE><BLOCKQUOTE type="cite"><FONT class="Apple-style-span" color="#000000"><BR class="khtml-block-placeholder"></FONT><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Alex proposed a patch &lt;<A href="http://paste.husk.org/7240">http://paste.husk.org/7240</A>&gt; that overrides &lt;% %&gt;</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">blocks to not apply escapes to Jifty::Web::Form::Elements. If the code</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">below is to be taken in, it should be used in conjunction with Alex's.</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">But even then it doesn't Just Work yet; e.g. it breaks Wifty's title,</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">perhaps because of _("").</DIV></BLOCKQUOTE><DIV><BR class="khtml-block-placeholder"></DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>I have an idea that might hurt a little bit less heavyweight. Mason's &lt;% %&gt; tag evaluates in list context, whereas "my $x = ..." evaluates in scalar context.  </DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>What I'd recommend is having a single method that outputs if you're calling in list or void context but gives you back the value if you're asking politely. (in scalar context).</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>Thoughts?</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>This mason template:</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>&lt;% foo() %&gt;</DIV><DIV>&lt;% my $x=  foo() %&gt;</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>&lt;%init&gt;</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>sub foo {</DIV><DIV>    if (wantarray()) { </DIV><DIV>        warn "List context!";</DIV><DIV>    } elsif (defined wantarray()) {</DIV><DIV>        warn "Scalar context!";</DIV><DIV>    } else {</DIV><DIV>        warn "Void Context!";</DIV><DIV>    }</DIV><DIV>    </DIV><DIV>}</DIV><DIV>&lt;/%init&gt;</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>Gives this output:</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>WARN - List context! at /Users/jesse/svk/hiveminder-trunk/html/wanty line 6, &lt;DATA&gt; line 16.</DIV><DIV>WARN - Scalar context! at /Users/jesse/svk/hiveminder-trunk/html/wanty line 8, &lt;DATA&gt; line 16.</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV><BR class="khtml-block-placeholder"></DIV><BR></DIV></BODY></HTML>