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/7cf76917cfd21272ce41f00276a7d78dbd4f54a2
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 -~----------~----~----~----~------~----~------~--~---
