Sha256: 54eefe73d658e36af64c7108a2eb5d75c428e34948d75c98d6271533fe1b0766

Contents?: true

Size: 1.48 KB

Versions: 11

Compression:

Stored size: 1.48 KB

Contents

module ResourceController
  module Urligence
    def smart_url(*objects)
      urligence(*objects.push(:url))
    end

    def smart_path(*objects)
      urligence(*objects.push(:path))
    end

    def hash_for_smart_url(*objects)
      urligence(*objects.unshift(:hash_for).push(:url).push({:type => :hash}))
    end

    def hash_for_smart_path(*objects)
      urligence(*objects.unshift(:hash_for).push(:path).push({:type => :hash}))
    end

    def urligence(*objects)
      config = {}
      config.merge!(objects.pop) if objects.last.is_a?(Hash)

      objects.reject! { |object| object.nil? }

      url_fragments = objects.collect do |obj|
        if obj.is_a? Symbol
          obj
        elsif obj.is_a? Array
          obj.first
        else
          obj.class.name.underscore.to_sym
        end
      end

      unless config[:type] == :hash
        send url_fragments.join("_"), *objects.flatten.select { |obj| !obj.is_a? Symbol }
      else
        params = {}
        unparsed_params = objects.select { |obj| !obj.is_a? Symbol }
        unparsed_params.each_with_index do |obj, i|
          unless i == (unparsed_params.length-1)
            params.merge!((obj.is_a? Array) ? {"#{obj.first}_id".to_sym => obj[1].to_param} : {"#{obj.class.name.underscore}_id".to_sym => obj.to_param})
          else
            params.merge!((obj.is_a? Array) ? {:id => obj[1].to_param} : {:id => obj.to_param})
          end
        end

        send url_fragments.join("_"), params
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 3 rubygems

Version Path
makandra_resource_controller-0.8.0 lib/urligence.rb
resources_controller-1.0.4 lib/urligence.rb
resources_controller-1.0.3 lib/urligence.rb
resources_controller-1.0.2 lib/urligence.rb
makandra_resource_controller-0.7.3 lib/urligence.rb
makandra_resource_controller-0.7.2 lib/urligence.rb
rd_resource_controller-1.0.1 lib/urligence.rb
rd_resource_controller-1.0.0 lib/urligence.rb
makandra_resource_controller-0.7.1 lib/urligence.rb
makandra_resource_controller-0.7.0 lib/urligence.rb
rd_resource_controller-1.0.0.rc lib/urligence.rb