[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

tagz and entities

Joel VanderWerf

4/2/2009 10:49:00 PM


Is this how tagz.<< is supposed to work? It seems that << and #concat
behave differently w.r.t. entity quoting.

require 'tagz'
include Tagz.globally

arrow = "&uarr;"
html = html_ {
___
tagz << arrow
___
tagz.concat arrow
___
___ arrow
}

puts html

__END__

Output:

<html>
&amp;uarr;
&uarr;

&uarr;
</html>

--
vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407

3 Answers

ara.t.howard

4/3/2009 5:00:00 AM

0


On Apr 2, 2009, at 4:48 PM, Joel VanderWerf wrote:

> Is this how tagz.<< is supposed to work? It seems that << and
> #concat behave differently w.r.t. entity quoting.



correct. escape in the normal case (<<) but concat works directly
without quoting.

cheers.

a @ http://codeforp...
--
we can deny everything, except that we have the possibility of being
better. simply reflect on that.
h.h. the 14th dalai lama




Joel VanderWerf

4/3/2009 5:55:00 PM

0

ara.t.howard wrote:
>
> On Apr 2, 2009, at 4:48 PM, Joel VanderWerf wrote:
>
>> Is this how tagz.<< is supposed to work? It seems that << and #concat
>> behave differently w.r.t. entity quoting.
>
>
>
> correct. escape in the normal case (<<) but concat works directly
> without quoting.

Thanks. That seems a bit arbitrary since these methods are the same for
strings. It's something you just have to remember, but then forget when
you come back to the code after a while.

Would it be possible for the object returned by #tagz to have a method,
say #literally or #unescaped, which returns an object which delegates
back to the original. On the original Tagz::Document, #<< and #concat
have the same quoting behavior. On the delegator, they do not quote.

Just a thought...

--
vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407

ara.t.howard

4/5/2009 3:30:00 PM

0


On Apr 3, 2009, at 11:54 AM, Joel VanderWerf wrote:

> Thanks. That seems a bit arbitrary since these methods are the same
> for strings. It's something you just have to remember, but then
> forget when you come back to the code after a while.
>

yeah i can see that. i was thinking more of erb's concat - which
appends literal objects.


> Would it be possible for the object returned by #tagz to have a
> method, say #literally or #unescaped, which returns an object which
> delegates back to the original. On the original Tagz::Document, #<<
> and #concat have the same quoting behavior. On the delegator, they
> do not quote.
>

that is kinds of how it works already.

def << string
case string
when Document
super string.to_s
else
super XChar.escape(string.to_s)
end
self
end


and anything returned by tagz *is* a document. you can even do

tagz << tagz('<blink> not escaped </blink>')


maybe i'll just reserver #write of unescaped writing - there needs to
be one shortcut i think.

a @ http://codeforp...
--
we can deny everything, except that we have the possibility of being
better. simply reflect on that.
h.h. the 14th dalai lama