Sha256: 9a61dee89e26bf087145a466c02609bb43c8768a79ed7bd439fcd441510070bb

Contents?: true

Size: 1004 Bytes

Versions: 17

Compression:

Stored size: 1004 Bytes

Contents

class Frenetic
  class HalJson < Faraday::Middleware
    # TODO: The API for this differs greatly from the `inspect` output.
    # Perhaps the Hash keys should be normalized and then aliased back to the original keys?
    class ResponseWrapper < RecursiveOpenStruct
      include Enumerable

      def []( key )
        self.send(key)
      end

      def members
        methods(false).grep(%r{_as_a_hash}).map { |m| m[0...-10] }
      end
      alias_method :keys, :members

      def each
        members.each do |method|
          yield method, send(method)
        end

        self
      end

      class << self
        # Do not define setters
        def define_setter( * ); end

        def define_getter( method_name, hash_key )
          method_name = case method_name
            when :_embedded then :resources
            when :_links    then :links
            when :href      then :url
            else method_name
            end

          super
        end
      end

    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
frenetic-0.0.12 lib/frenetic/hal_json/response_wrapper.rb
frenetic-0.0.11 lib/frenetic/hal_json/response_wrapper.rb
frenetic-0.0.10 lib/frenetic/hal_json/response_wrapper.rb
frenetic-0.0.9 lib/frenetic/hal_json/response_wrapper.rb
frenetic-0.0.8 lib/frenetic/hal_json/response_wrapper.rb
frenetic-0.0.7 lib/frenetic/hal_json/response_wrapper.rb
frenetic-0.0.6 lib/frenetic/hal_json/response_wrapper.rb
frenetic-0.0.5 lib/frenetic/hal_json/response_wrapper.rb
frenetic-0.0.4 lib/frenetic/hal_json/response_wrapper.rb
frenetic-0.0.3 lib/frenetic/hal_json/response_wrapper.rb
frenetic-0.0.2.alpha5 lib/frenetic/hal_json/response_wrapper.rb
frenetic-0.0.2.alpha4 lib/frenetic/hal_json/response_wrapper.rb
frenetic-0.0.2.alpha3 lib/frenetic/hal_json/response_wrapper.rb
frenetic-0.0.2.alpha2 lib/frenetic/hal_json/response_wrapper.rb
frenetic-0.0.2.alpha1 lib/frenetic/hal_json/response_wrapper.rb
frenetic-0.0.1.alpha1 lib/frenetic/hal_json/response_wrapper.rb
frenetic-0.0.1 lib/frenetic/hal_json/response_wrapper.rb