eco icon indicating copy to clipboard operation
eco copied to clipboard

multi line coffeescipt in <% ... %>

Open sircambridge opened this issue 12 years ago • 21 comments

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 ?

sircambridge avatar Mar 09 '12 07:03 sircambridge

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

pehrlich avatar Mar 13 '12 05:03 pehrlich

+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.

ckihneman avatar Apr 17 '12 20:04 ckihneman

+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

balupton avatar Apr 22 '12 18:04 balupton

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?

pehrlich avatar Apr 28 '12 12:04 pehrlich

+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.

asgeo1 avatar May 04 '12 01:05 asgeo1

+1 ... really need

AlexMost avatar Jul 03 '12 21:07 AlexMost

+1

manenko avatar Jul 08 '12 21:07 manenko

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

rprieto avatar Jul 11 '12 02:07 rprieto

+1

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

robhawkes avatar Jul 11 '12 09:07 robhawkes

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? :)

nfour avatar Oct 18 '12 09:10 nfour

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

aseemk avatar Dec 04 '12 21:12 aseemk

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

https://github.com/malgorithms/toffee

aseemk avatar Dec 04 '12 21:12 aseemk

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 :-)

malgorithms avatar Dec 04 '12 22:12 malgorithms

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

tusharr avatar Feb 07 '13 21:02 tusharr

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.

nfour avatar Feb 21 '13 12:02 nfour

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.

gbouthenot avatar Mar 25 '13 15:03 gbouthenot

++1

jifka avatar Jul 14 '13 04:07 jifka

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. ;)

mbhnyc avatar Jul 15 '13 15:07 mbhnyc

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

cweezy avatar Oct 28 '13 18:10 cweezy

+1

caiogondim avatar Jan 13 '14 01:01 caiogondim

:+1:

sapegin avatar Jan 23 '15 08:01 sapegin