Sha256: fe41498ac4577300605c089f31a25877263538b951199489ebc0af6aa69787c8

Contents?: true

Size: 1.8 KB

Versions: 16

Compression:

Stored size: 1.8 KB

Contents

class Array
  def to_endeca_params
    join('&').to_endeca_params
  end
end

require 'benchmark'
class << Benchmark
  # Earlier Ruby had a slower implementation.
  if RUBY_VERSION < '1.8.7'
    remove_method :realtime

    def realtime
      r0 = Time.now
      yield
      r1 = Time.now
      r1.to_f - r0.to_f
    end
  end

  def ms
    1000 * realtime { yield }
  end
end


class Class
  def inherited_property(accessor, default = nil)
    instance_eval <<-RUBY, __FILE__, __LINE__ + 1
      @#{accessor} = default

      def set_#{accessor}(value)
        @#{accessor} = value
      end
      alias #{accessor} set_#{accessor}

      def get_#{accessor}
        return @#{accessor} if instance_variable_defined?(:@#{accessor})
        superclass.send(:get_#{accessor})
      end
    RUBY

    # @path = default
    #
    # def set_path(value)
    #   @path = value
    # end
    # alias_method path, set_path

    # def get_path
    #   return @path if instance_variable_defined?(:path)
    #   superclass.send(:path)
    # end
  end

  def inherited_accessor(accessor, default = nil)
    instance_eval <<-RUBY, __FILE__, __LINE__ + 1
      class << self; attr_writer :#{accessor}; end
      @#{accessor} = default

      def #{accessor}
        @#{accessor} ||= superclass.send(:#{accessor}).dup
      end
    RUBY
  end
end

class Hash
  def to_endeca_params
    map { |k, v|
      if v.instance_of?(Hash)
        v.map { |sk, sv|
          "#{k}[#{sk}]=#{sv}"
        }.join('&')
      else
        "#{k}=#{v}"
      end
    }.join('&').to_endeca_params
  end

  def symbolize_keys
    inject({}) do |options, (key, value)|
      options[(key.to_sym rescue key) || key] = value
      options
    end
  end

end

class NilClass
  def to_endeca_params
    ''
  end
end

class String
  def to_endeca_params
    Endeca.escape(self)
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
primedia-endeca-0.10.0 lib/core_ext.rb
primedia-endeca-0.10.1 lib/core_ext.rb
primedia-endeca-0.11.0 lib/core_ext.rb
primedia-endeca-0.12.0 lib/core_ext.rb
primedia-endeca-0.14.0 lib/core_ext.rb
primedia-endeca-0.9.26 lib/core_ext.rb
primedia-endeca-1.0.0 lib/core_ext.rb
primedia-endeca-1.1.0 lib/core_ext.rb
primedia-endeca-1.2.0 lib/core_ext.rb
primedia-endeca-1.3.0 lib/core_ext.rb
primedia-endeca-1.3.1 lib/core_ext.rb
primedia-endeca-1.3.2 lib/core_ext.rb
primedia-endeca-1.3.3 lib/core_ext.rb
primedia-endeca-1.3.4 lib/core_ext.rb
primedia-endeca-1.3.5 lib/core_ext.rb
primedia-endeca-1.3.6 lib/core_ext.rb