Sha256: a488228962335d578e1197226f9838cd85dec8af3f206dcf7c526c8f45a937bf
Contents?: true
Size: 1.47 KB
Versions: 1
Compression:
Stored size: 1.47 KB
Contents
module Hyperclient # Public: A helper class to wrapp a collection of elements and provide # Hash-like access or via a method call. # # Examples # # collection['value'] # collection.value # class Collection include Enumerable # Public: Initializes the Collection. # # collection - The Hash to be wrapped. def initialize(collection) @collection = collection end # Public: Each implementation to allow the class to use the Enumerable # benefits. # # Returns an Enumerator. def each(&block) @collection.each(&block) end # Public: Provides Hash-like access to the collection. # # name - A String or Symbol of the value to get from the collection. # # Returns an Object. def [](name) @collection[name.to_s] end # Public: Returns the wrapped collection as a hash. # # Returns a Hash. def to_hash @collection.to_hash end # Public: Provides method access to the collection values. # # It allows accessing a value as `collection.name` instead of # `collection['name']` # # Returns an Object. def method_missing(method_name, *args, &block) @collection.fetch(method_name.to_s) { super } end # Internal: Accessory method to allow the collection respond to the # methods that will hit method_missing. def respond_to_missing?(method_name, include_private = false) @collection.include?(method_name.to_s) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
hyperclient-0.2.0 | lib/hyperclient/collection.rb |