On Wed, Apr 16, 2014 at 11:53 AM, Andy Parker <[email protected]> wrote:
> On Tue, Apr 15, 2014 at 1:20 PM, Erik Dalén > <[email protected]>wrote: > >> Another way to improve it would be if the % and-or <> flags were passed >> to the ERB builder. % enables Ruby code processing for lines beginning with >> %. <> omit newline for lines starting with <% and ending in %>. They would >> allow you to skip a lot of the <%- -%> tags. >> >> > I'm not too keen on this. I think that I'd rather keep the single way to > do it instead of branching out into various aliases for functionality. > > I am considering Joshua's request for the concat function. It would > provide a way to emit text from within the embedded code in the template, > and might help in some situations. But it another case where it adds a bit > of special stuff to do something that that already be achieved with a > little refactoring. > ERB already has a concat function natively with Ruby string syntax. Given this template: <% foo = 'FOO' arg = '99' options = 'WHAT' %> <%= "#{foo} -d bar #{arg.to_i} -- #{options}" %> Yields: FOO -d bar 99 -- WHAT > Obviously this would be a backwards incompatible change for the regular >> template function. But for EPP we could do it. >> >> >> On 15 April 2014 21:28, John Bollinger <[email protected]> wrote: >> >>> >>> >>> On Tuesday, April 15, 2014 1:38:53 PM UTC-5, Joshua Hoblitt wrote: >>>> >>>> I see the "Non Goals" section at the top of the arm but... >>>> >>>> The biggest frustration I have with ERB is when you end up needing >>>> nested flow control logic. As example, to walk through a >>>> hash/array/etc. nested inside some conditional logic. The result is an >>>> eye gouging mix of nested <% ... %> and <% end %> tags that are either >>>> unindented or you have have to salt all the tags with -'s to try and >>>> properly eat the whitespace. >>>> >>>> Here's a snippet from a template I was working on yesterday: >>>> >>>> ``` >>>> <% if megaraid_device and megaraid_device != '' and >>>> @megaraid_adapters and @megaraid_adapters.to_i > 0 -%> >>>> <%- unless @megaraid_physical_drives_sata.nil? -%> >>>> <%- @megaraid_physical_drives_sata.split(/,/).sort.each do >>>> |drive| -%> >>>> <%= megaraid_device %> -d sat+megaraid,<%= drive.to_i -%> >>>> <%- if megaraid_options %><%= ' ' + megaraid_options %><% >>>> end %> >>>> <%- end -%> >>>> <%- end -%> >>>> <%- unless @megaraid_physical_drives_sas.nil? -%> >>>> <%- @megaraid_physical_drives_sas.split(/,/).sort.each do >>>> |drive| -%> >>>> <%= megaraid_device %> -d megaraid,<%= drive.to_i -%> >>>> <%- if megaraid_options %><%= ' ' + megaraid_options %><% >>>> end %> >>>> <%- end -%> >>>> <%- end -%> >>>> <% end -%> >>>> ``` >>>> >>>> >>> >>> You are complaining about a problem partially of your own making: you >>> break up the Ruby a lot more than you need to do. Obviously you *can*do it >>> like that, but why? >>> >>> Here's an alternative that I like a lot better: >>> >>> <% >>> if megaraid_device and megaraid_device != '' and >>> @megaraid_adapters and @megaraid_adapters.to_i > 0 >>> option_str = (megaraid_options ? ' ' + megaraid_options : '') >>> unless @megaraid_physical_drives_sata.nil? >>> @megaraid_physical_drives_sata.split(/,/).sort.each do |drive| >>> -%> >>> <%= megaraid_device %> -d sat+megaraid,<%= drive.to_i %><%= option_str %> >>> <% >>> end >>> end >>> unless @megaraid_physical_drives_sas.nil? >>> @megaraid_physical_drives_sas.split(/,/).sort.each do |drive| >>> -%> >>> <%= megaraid_device %> -d megaraid,<%= drive.to_i %><%= option_str %> >>> <% >>> end >>> end >>> end >>> -%> >>> >>> >>> Or I don't like this one as much, but it's still better than what you >>> started with: >>> >>> <% if megaraid_device and megaraid_device != '' and @megaraid_adapters >>> and @megaraid_adapters.to_i > 0 -%> >>> <% unless @megaraid_physical_drives_sata.nil? -%> >>> <% @megaraid_physical_drives_sata.split(/,/).sort.each do >>> |drive| -%> >>> <%= megaraid_device %> -d sat+megaraid,<%= drive.to_i -%> >>> <% if megaraid_options %><%= ' ' + megaraid_options %><% end >>> %> >>> <% end -%> >>> <% end -%> >>> <% unless @megaraid_physical_drives_sas.nil? -%> >>> <% @megaraid_physical_drives_sas.split(/,/).sort.each do |drive| >>> -%> >>> <%= megaraid_device %> -d megaraid,<%= drive.to_i -%> >>> <% if megaraid_options %><%= ' ' + megaraid_options %><% end >>> %> >>> <% end -%> >>> <% end -%> >>> <% end -%> >>> >>> >>> John >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Puppet Developers" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/puppet-dev/3c46642a-5ede-42e5-ac69-7a8ac438ea43%40googlegroups.com<https://groups.google.com/d/msgid/puppet-dev/3c46642a-5ede-42e5-ac69-7a8ac438ea43%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> >> >> -- >> Erik Dalén >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Puppet Developers" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/puppet-dev/CAAAzDLc_ZZxfrSfb5XjK6XTLqttcZDXFKG5Zc2a0BrLKMVs_3A%40mail.gmail.com<https://groups.google.com/d/msgid/puppet-dev/CAAAzDLc_ZZxfrSfb5XjK6XTLqttcZDXFKG5Zc2a0BrLKMVs_3A%40mail.gmail.com?utm_medium=email&utm_source=footer> >> . >> >> For more options, visit https://groups.google.com/d/optout. >> > > > > -- > Andrew Parker > [email protected] > Freenode: zaphod42 > Twitter: @aparker42 > Software Developer > > *Join us at PuppetConf 2014 <http://www.puppetconf.com/>, September > 22-24 in San Francisco* > *Register by May 30th to take advantage of the Early Adopter discount > <http://links.puppetlabs.com/puppetconf-early-adopter> **--**save $349!* > > -- > You received this message because you are subscribed to the Google Groups > "Puppet Developers" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/puppet-dev/CANhgQXvka6QBhdx2unib-6pW7nspTbeT0VEkKZ_ZVG3SpJOD1Q%40mail.gmail.com<https://groups.google.com/d/msgid/puppet-dev/CANhgQXvka6QBhdx2unib-6pW7nspTbeT0VEkKZ_ZVG3SpJOD1Q%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Puppet Developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-dev/CAEdAYKU3icCCbLOo2k8ZP9ogfHDiVB59%3DjBEm%2Bcq5_2VUZUsew%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
