Pardon my ignorance but what exactly _is_ the bug here? I was trying to help
Spongy on #rubyonrails with this problem. I'm willing to poke around more if
I understood why it's failing there. I use the same exact %tr{:colspan =>
6}= line in my code and it works fine. I couldn't figure out the problem.

RSL

On 7/23/07, Nathan Weizenbaum <[EMAIL PROTECTED]> wrote:
>
>
> Unfortunately, this is a known bug that's very hard to solve. Since we
> use a regular expression to parse tags, there's no way to handle
> balanced characters like '{' and '}'. The only way to really solve this
> would be to move to manually parsing the tag. This is something we'd be
> interested in, so if you want to work up a patch for it, go for it
> (check out render_tag in lib/haml/engine.rb).
>
> - Nathan
>
> Spongy wrote:
> > I've been having some problems with one of my templates.
> >
> > These are the template sections and errors I've been getting (also at
> > http://pastie.caboo.se/81401)
> >
> > ## HAML snippet
> >       - payment.invoices.each do |invoice|
> >         %tr.invoice
> >           %td{:colspan => "2"}= h("Invoice #{invoice.remote_number}")
> >           %td= number_to_currency(invoice.amount, :unit => "&pound;")
> >           %td
> >
> > ## Error
> > (eval):43:in `compile': compile error
> > (eval):32: syntax error, unexpected '}', expecting ')'
> > _hamlout.open_tag("td", nil, true, {}, nil, "\")", :colspan => "2"}=
> > h("Invoice #{invoice.remote_number)
> >                                                                    ^
> > (eval):32: syntax error, unexpected ')', expecting '}'
> > (eval):38: syntax error, unexpected kEND, expecting '}'
> > (eval):42: syntax error, unexpected kEND, expecting '}'
> >
> > ## Full Template
> > - page_title "Your Payments"
> >
> > %table
> >   %thead
> >     %tr
> >       %th ID
> >       %th Invoices
> >       %th Amount
> >       %th Paid on
> >   %tbody
> >     - @payments.each do |payment|
> >       %tr.payment
> >         %td= h "Payment #{payment.id}"
> >         %td= h payment.invoices.count
> >         %td= h payment.amount
> >         %td= payment.paid_at ? payment.paid_at.strftime("%m/%d/%Y") :
> > 'UNPAID'
> >       - payment.invoices.each do |invoice|
> >         %tr.invoice
> >           %td{:colspan => 2}= h("Invoice #{invoice.remote_number}")
> >           %td= number_to_currency(invoice.amount, :unit => "&pound;")
> >           %td blank
> >
> > ## Attempt 2 Template
> > - page_title "Your Payments"
> >
> > %table
> >   %thead
> >     %tr
> >       %th ID
> >       %th Invoices
> >       %th Amount
> >       %th Paid on
> >   %tbody
> >     - @payments.each do |payment|
> >       %tr.payment
> >         %td{:test => :thing}= h "Payment #{payment.id}"
> >         %td= h payment.invoices.count
> >         %td= h payment.amount
> >         %td= payment.paid_at ? payment.paid_at.strftime("%m/%d/%Y") :
> > 'UNPAID'
> >       - payment.invoices.each do |invoice|
> >         %tr.invoice
> >           %td{:colspan => 2}= h("Invoice #{invoice.remote_number}")
> >           %td= number_to_currency(invoice.amount, :unit => "&pound;")
> >           %td blank
> >
> > ## Attempt 2 Error
> > (eval):42:in `compile': compile error
> > (eval):13: syntax error, unexpected '}', expecting ')'
> > _hamlout.open_tag("td", nil, true, {}, nil, "\"", :test => :thing}= h
> > "Payment #{payment.id)
> >                                                                   ^
> > (eval):13: syntax error, unexpected ')', expecting '}'
> > (eval):28: syntax error, unexpected kDO_BLOCK, expecting '}'
> >  payment.invoices.each do |invoice|
> >                          ^
> > (eval):31: syntax error, unexpected '}', expecting ')'
> > _hamlout.open_tag("td", nil, true, {}, nil, "\")", :colspan => 2}=
> > h("Invoice #{invoice.remote_number)
> >                                                                  ^
> > (eval):31: syntax error, unexpected ')', expecting '}'
> > (eval):37: syntax error, unexpected kEND, expecting '}'
> > (eval):41: syntax error, unexpected kEND, expecting '}'
> >
> > Eventually I tried changing the "Payment" and "Invoice" strings to
> >     ["Payment", payment.id].join(' ')
> > and the errors have disappeared.
> >
> > I am using r570 and also had the same problem on r566
> >
> > Any ideas on how or what this is caused by and I can poke around in
> > the engine.
> >
> > Cheers,
> > Geoff
> >
> >
> > >
> >
> >
>
>
> >
>

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

Reply via email to