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.
For more options, visit https://groups.google.com/d/optout.

Reply via email to