I've update my haml fork for Universal Interplation to allow
interpolations at the beginning of a line, including a ton of
additional tests.
http://github.com/jcnetdev/haml/commit/6ba166c4840422e7fc55f9c06594a036e691c2ce
So just the line:
#{code}
is now valid haml.
%p #{code}
is also usable
Personally, I think this is going to make Haml completely awesome(r).
I also added test cases for all these scenarios, including this one:
#{var}
blah
Which should (naturally) turn an "Illegal nesting" error since it will
treat the #{} the same as if it were a "== #{var}"
I've also made an update on the universal interpolation code so that
only #{} with matching braces will be evaluated. This should make
things a bit more error tolerant.
So if I write:
%p #{blah
There wont be an error for unbalanced braces.
However if I write:
%p== #{blah
There will be the standard unmatched braces exception since the ==
will force the string evaluation on that line.
BTW.. I've tested this fix with all my Rails projects (10s of
thousands of lines of haml code). No problems that I can see yet. I
think the escaping issue is going to turn out to be a pretty minor one
since #{} isnt a common thing. But I can still see this requiring a
point release in order to allow for the warning for haml users to
check their templates for unescaped hash braces.
On Nov 23, 6:57 pm, railsjedi <[EMAIL PROTECTED]> wrote:
> What about a jelly bean
> pizza?http://www.raphaellowe.com/gallery/d/458-2/DSC00299.JPG
>
> On Nov 23, 6:49 pm, Chris Eppstein <[EMAIL PROTECTED]> wrote:
>
> > Pizza is good but I think jelly beans will make a better bribe.
>
> > Hunt & pecked on my iPhone... Sorry if it's brief!
>
> > On Nov 23, 2008, at 4:11 PM, railsjedi <[EMAIL PROTECTED]> wrote:
>
> > > As per Nathan's comments, I've rebased and update the commit to
> > > include everything needed for universal interpolation into a single
> > > commit:
> > >http://github.com/jcnetdev/haml/commit/7cf76917cfd21272ce41f00276a7d7...
>
> > > Additional comments welcome. If this gets added to Haml, I promise
> > > I'll scour all the documentation and make sure to both document the
> > > new change, and update existing docs so they are compatible. AND I'll
> > > buy Nathan a pizza if he includes this patch into his repository :-)
>
> > > On Nov 22, 10:48 pm, railsjedi <[EMAIL PROTECTED]> wrote:
> > >> The change for universal interpoliation has been implemented
> > >> here:http://gist.github.com/jcnetdev/haml/commit/55b0bb02572e8387fbf7b96d0
> > >> ...
>
> > >> This change allows any static text line with #{} in it to be
> > >> interpreted the same as if ==. It's done in the precompiler so it
> > >> should be wicked fast.
>
> > >> It was actually really easy to hook into the precompiler. Since we're
> > >> already doing this functionality for filters, I was able to use the
> > >> same helpers and apply it to lines of static text.
>
> > >> It includes 6 unit tests that verifies the functionality it every
> > >> scenario. Also, it includes a test that verifies escaped #{} display
> > >> as normal.
>
> > >> This change allows any static text line with #{} in it to be
> > >> interpreted the same as if ==. It's done in the precompiler so it
> > >> should be wicked fast.
>
> > >> It also works with auto-html escaping. So if you include an &, if
> > >> there's an #{} in that line, it will work that same as if it were an
> > >> &==.
>
> > >> I think %#{tag_name}= wouldn't be expected behavior because its not
> > >> in
> > >> a content block. Just like no one will expect %div{#{attr_name} =>
> > >> "blah"} to work. Haml seems to have an extremely clear separation
> > >> between tag definition and content.
>
> > >> Would love to get your guys thought on this change. I think it's an
> > >> hugely positive one as it'll make haml documents amazingly simple for
> > >> interpolation.
>
> > >> Thanks
>
> > >> -Jacques
>
> > >> On Oct 12, 11:43 am, Nathan Weizenbaum <[EMAIL PROTECTED]> wrote:
>
> > >>> I'm also a little worried about people taking it too far... someone
> > >>> recently posted a message about %#{tag_name}= ..., and I think
> > >>> allowing
> > >>> #{} to be ubiquitous within text would do more to encourage that.
>
> > >>> Chris Eppstein wrote:
> > >>>> Yes, if you change your double quotes to single quotes.
>
> > >>>> But \#{h @user.name} is more straight forward and already
> > >>>> supported in
> > >>>> == mode.
>
> > >>>> Btw, I'm still +1 on this despite the need to occasionally escape.
> > >>>> Unfortunately, the fact that escaping is necessary means that it is
> > >>>> not a backwards compatible change.
>
> > >>>> chris
>
> > >>>> On Sep 30, 5:13 pm, Lawrence Pit <[EMAIL PROTECTED]> wrote:
>
> > >>>>> An example interpolation is #{h @user.name}
>
> > >>>>> could be escaped as:
>
> > >>>>> An example interpolation is #{ "#{h @user.name}" }
>
> > >>>>> Lawrence
>
> > >>>>>> It should be noted that doing so would create a need for
> > >>>>>> escaping the
> > >>>>>> #{ sequence if it occurs naturally in text.
>
> > >>>>>> Chris
>
> > >>>>>> On Sep 30, 4:45 pm, Lawrence Pit <[EMAIL PROTECTED]> wrote:
>
> > >>>>>>> That's how I do it as well... I rarely use the == syntax. Only
> > >>>>>>> in cases
> > >>>>>>> like these:
>
> > >>>>>>> == Hello #{h @user.name},
>
> > >>>>>>> which is nicer compared to:
>
> > >>>>>>> Hello
> > >>>>>>> = succeed ',' do
> > >>>>>>> = h @user.name
>
> > >>>>>>> But of course simply this is even nicer:
>
> > >>>>>>> Hello #{h @user.name},
>
> > >>>>>>> As indeed is already possible when defined within a filter
> > >>>>>>> block.
>
> > >>>>>>> I vote +1 on the proposal.
>
> > >>>>>>> Lawrence
>
> > >>>>>>>> While I don't find anything conceptually wrong and would even
> > >>>>>>>> +1 this
> > >>>>>>>> because there's times it would be convenient, I simply do this:
>
> > >>>>>>>>http://gist.github.com/13840
>
> > >>>>>>>> -chris
>
> > >>>>>>>> On Sep 30, 6:16 am,JacquesCrocker<[EMAIL PROTECTED]> wrote:
>
> > >>>>>>>>> In the process of bombarding the world with open source haml
> > >>>>>>>>> rails
> > >>>>>>>>> apps (see here, here, here), I've definitely noticed a few
> > >>>>>>>>> small
> > >>>>>>>>> things haml could do to increase the readability of haml
> > >>>>>>>>> view code.
>
> > >>>>>>>>> The most important one that I would like to suggest is some
> > >>>>>>>>> kind of
> > >>>>>>>>> universal interpolation of #{} without the requirement of
> > >>>>>>>>> beginning
> > >>>>>>>>> the line with ==. I've been using == so much lately that its
> > >>>>>>>>> starting
> > >>>>>>>>> to look pretty ugly. Seems like it would help a lot if that
> > >>>>>>>>> it was the
> > >>>>>>>>> standard. So my question to haml users is: what would be the
> > >>>>>>>>> speed and
> > >>>>>>>>> functionality implications of allowing #{} to be used
> > >>>>>>>>> anywhere without
> > >>>>>>>>> the requirement of ==?
>
> > >>>>>>>>> Here's a quick code example:http://gist.github.com/13805
>
> > >>>>>>>>> I imagine automatically treating every static content line
> > >>>>>>>>> as if it
> > >>>>>>>>> were a == would make haml an order of magnitude slower. The
> > >>>>>>>>> trick
> > >>>>>>>>> would be to specifically recognize the existence of #{} in
> > >>>>>>>>> content
> > >>>>>>>>> blocks (hopefully via a super fast content eval) and
> > >>>>>>>>> automatically
> > >>>>>>>>> turn the evaluation of that line to ==.
>
> > >>>>>>>>> I spent a little time looking at the the haml codebase to
> > >>>>>>>>> verify my
> > >>>>>>>>> findings but things haven't clicked for me yet. Would love any
> > >>>>>>>>> feedback from someone who has a better handle on the parser
> > >>>>>>>>> on whether
> > >>>>>>>>> this is possible without a huge problem in performance.
> > >>>>>>>>> Aside from the
> > >>>>>>>>> implementation details, is there anyone who would object
> > >>>>>>>>> functionality-
> > >>>>>>>>> wise to being able to use #{} anywhere in normal content
> > >>>>>>>>> blocks? Since
> > >>>>>>>>> #{} is a rarely used html token I don't think it would
> > >>>>>>>>> conflict with
> > >>>>>>>>> peoples existing view code. And since this type of automatic
> > >>>>>>>>> interpolation is already done by default within Filters, it
> > >>>>>>>>> seems a
> > >>>>>>>>> natural extension to use it in normal content blocks.
>
> > >>>>>>>>> Would love feedback on anything regarding the idea or
> > >>>>>>>>> implementation
> > >>>>>>>>> challenges. Maybe I'm way off base here, but if it sounds like
> > >>>>>>>>> something that had a remote chance to be added to haml core,
> > >>>>>>>>> I can do
> > >>>>>>>>> some hacking on a fork and see how it goes.
>
> > >>>>>>>>> Thanks
>
> > >>>>>>>>> -Jacques
> > >>>>>>>>> railsjedi.com
>
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Haml" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/haml?hl=en
-~----------~----~----~----~------~----~------~--~---