Sha256: a5794ded33c4ee35723537b55922fec86562194b848a972d4a95ceb8b630c20f

Contents?: true

Size: 892 Bytes

Versions: 8

Compression:

Stored size: 892 Bytes

Contents

require 'rest-core/middleware'

class RestCore::Defaults
  def self.members; [:defaults]; end
  include RestCore::Middleware

  # the use of singleton_class is making serialization hard!
  # def initialize app, defaults
  #   super
  #   singleton_class.module_eval do
  #     defaults.each{ |(key, value)|
  #       define_method(key) do |env|
  #         if value.respond_to?(:call)
  #           value.call
  #         else
  #           value
  #         end
  #       end
  #     }
  #   end
  # end

  def method_missing msg, *args, &block
    env = args.first
    if env.kind_of?(Hash) && (d = defaults(env)) && d.key?(msg)
      if (value = defaults(env)[msg]).respond_to?(:call)
        value.call
      else
        value
      end
    else
      super
    end
  end

  def respond_to? msg
    if (d = defaults({})) && d.key?(msg)
      true
    else
      super
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
rest-core-0.3.0.pre.2 lib/rest-core/middleware/defaults.rb
rest-core-0.3.0.pre.1 lib/rest-core/middleware/defaults.rb
rest-core-0.3.0.pre.0 lib/rest-core/middleware/defaults.rb
rest-core-0.2.3 lib/rest-core/middleware/defaults.rb
rest-core-0.2.2 lib/rest-core/middleware/defaults.rb
rest-core-0.2.1 lib/rest-core/middleware/defaults.rb
rest-core-0.2.0 lib/rest-core/middleware/defaults.rb
rest-core-0.0.1 lib/rest-core/middleware/defaults.rb