From: Frank Ederveen Date: Thu, 25 Jul 2013 10:26:55 +0000 (+0100) Subject: Generate of options to parse in the correct order from @resource_map X-Git-Tag: 0.5.0~24^2~2 X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=6dbdbb458a8ac996ee20c8e50dff60d7c48664b5;p=puppet-modules%2Fpuppetlabs-firewall.git Generate of options to parse in the correct order from @resource_map --- diff --git a/lib/puppet/provider/firewall/iptables.rb b/lib/puppet/provider/firewall/iptables.rb index 1e8617e..a2e3a5d 100644 --- a/lib/puppet/provider/firewall/iptables.rb +++ b/lib/puppet/provider/firewall/iptables.rb @@ -178,12 +178,27 @@ Puppet::Type.type(:firewall).provide :iptables, :parent => Puppet::Provider::Fir end end + ############ + # Populate parser_list with used value, in the correct order + ############ + map_index={} + @resource_map.each_pair do |map_k,map_v| + map_v.each do |v| + ind=values.index(/\s#{v}/) + next unless ind + map_index[map_k]=ind + end + end + # Generate parser_list based on the index of the found option + parser_list=[] + map_index.sort_by{|k,v| v}.each{|mapi| parser_list << mapi.first } + ############ # MAIN PARSE ############ # Here we iterate across our values to generate an array of keys - @resource_list.reverse.each do |k| + parser_list.reverse.each do |k| resource_map_key = @resource_map[k] [resource_map_key].flatten.each do |opt| if values.slice!(/\s#{opt}/)