Sha256: 1a500c4481285bc6574b012efd770dfee35df48eb361aee4186679c61377c562

Contents?: true

Size: 851 Bytes

Versions: 1

Compression:

Stored size: 851 Bytes

Contents

# Converts {'model[attribute]' => value} into {'model' => {'attribute' => value}}
module Rad
  module Processors
    class ScopedParams < Processor      
      def call
        if workspace.params?
          to_delete = []
          to_add = {}
          workspace.params.each do |name, value|
            name.to_s.scan /(.+)\[(.+)\]/ do |scope_name, name_in_scope|
              logger.warn "Owerriding :#{scope} param!" if workspace.params.include? scope_name              
              scope = to_add[scope_name.to_sym] ||= {}                          
              scope[name_in_scope] = value
              to_delete << name
            end
          end
          workspace.params.merge! to_add
          to_delete.each{|n| workspace.params.delete n}
        end
                
        next_processor.call
      end
    end
  end
end
      

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rad_core-0.0.13 lib/rad/html/processors/scoped_params.rb