sstephenson / eco

Embedded CoffeeScript templates
MIT License
1.71k stars 70 forks source link

multi line coffeescipt in <% ... %> #41

Open sircambridge opened 12 years ago

sircambridge commented 12 years ago

being able to have multiple line coffeescript execute within <% %> would be awesome.

in erb and ejs, you can say

<%
  def something(arg)
    ...
  end
%>

or

<%
 function(){
 ...
}
%>

is there a workaround / somewhere i can hack this in ?

pehrlich commented 12 years ago

I've wondered this as well. Or is it intentionally so, to prevent complex templating?

ckihneman commented 12 years ago

+1. This would be a great feature, maybe it needs a special syntax of its own to trigger on so it knows indentation now matters...

<%*
    someVar = @something
    if someVar
      # do other stuff
*%>

Or something like that. I switched to eco from jQote2 and this is the only thing really giving me a large amount of frustration. Logic-less templates just are not in my cards for the project im on...

I made it work by wrapping everything in a <% someVar = @something %> for every line (and added : for any ifs/whatnot) - which is for sure not optimal when a couple lines of coffeescript do a lot better.

Thanks.

balupton commented 12 years ago

+1, I've wanted to do:

<%-
    data = @require('util').inspect @documentModel.getAttributes()
    delete data.fullPath
    delete data.outPath
    data
%>

but can't figure out how

pehrlich commented 12 years ago

As I use Eco, I'm getting a little bit torn on this, actually. I think it would encourage cluttery awful views, which would be bad, and my templates have actually been improved through this limitation. But at the same time, hashes would seem more acceptable to have multiline. They're essentially declarative, and can be quire useful.

For example, look at this formbuilder becomes frustrating to work with on a single line, (the alternative, assigning each argument to a variable, is also frustrating).

    <%- @select 'param_name', ['New York', 'San Francisco'], {class: 'my_class input-small', data: {toggle: 'dropdown'}, title: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit'} %>

hmm. thoughts?

asgeo1 commented 12 years ago

+1, this is really needed.

I try to keep my code to 80 chars wide, so I need to be able to start a new line. It looks awful when every line begins with <% for no reason.

AlexMost commented 12 years ago

+1 ... really need

manenko commented 12 years ago

+1

rprieto commented 12 years ago

Definitely interested in this too, especially for "declarative" sections, like hashes, arrays...

robhawkes commented 12 years ago

+1

Trying to do heredoc statements for multi-line variables but finding it impossible with eco.

nfour commented 12 years ago

Seems a developers has gone awol again. First coffeekup, now this?

I'd be happy to code in the changes myself though it's a little awkward putting time into a issue-accumulating repository. Where you at stephenson? :)

aseemk commented 12 years ago

(For reference, issues #13 and #15. Not sure if anything has changed.)

aseemk commented 12 years ago

But FWIW, @malgorithms's Toffee is an excellent alternative to Eco and supports multi-line blocks:

https://github.com/malgorithms/toffee

malgorithms commented 12 years ago

If someone wants to try to add this to Eco, I'd be happy to share the experiences I had making it work with Toffee. It was kind of a fun challenge. And difficult due to indentation considerations. You can find my contact info on my github page.

I think it'll be pretty deep down in the parser.

Thanks for the shoutout to Toffee, @aseemk . Not too many people know about it...yet :-)

tusharr commented 11 years ago

+1 This is one thing that I can't easily get over.

nfour commented 11 years ago

For anyone still wishing for this, ECT http://ectjs.com/ is still rather actively developed, and open to feature suggestions. Wrote a ST2/TM .tmLanguage for it too. Has multiline capabilities, and is much much faster than ECO.

gbouthenot commented 11 years ago

thank for these 2 alternatives : http://ectjs.com/ https://github.com/malgorithms/toffee

Unfortunately, none of these solutions are (yet) supported by Ruby on Rails.

jifka commented 11 years ago

++1

mbhnyc commented 11 years ago

what is needed to get some of the alternatives up and running? dived a little into ECO's gemfile and won't pretend to completely understand. ;)

cweezy commented 11 years ago

+1.There's cases where I just want a few lines for an if/else or something.

caiogondim commented 10 years ago

+1

sapegin commented 9 years ago

:+1: