class RedditGet::Data

Allow to use method call chains instead of Hash keys navigation

Public Class Methods

new(data) click to toggle source
# File lib/reddit_get.rb, line 14
def initialize(data)
  @data = data
end

Public Instance Methods

[](key) click to toggle source
# File lib/reddit_get.rb, line 31
def [](key)
  @data.fetch(key)
end
method_missing(method, *_args) click to toggle source
# File lib/reddit_get.rb, line 35
def method_missing(method, *_args)
  @data.send(method)
rescue NoMethodError
  out = @data.fetch(method.to_s)
  case out
  when Hash
    Data.new(out)
  when Array
    out.map { |i| Data.new(i) }
  else
    out
  end
end
objectify(data) click to toggle source
# File lib/reddit_get.rb, line 18
def objectify(data)
  data.transform_values! do |v|
    case v
    when Hash
      Data.new(v)
    when Array
      v.map { |i| Data.new(i) }
    else
      v
    end
  end
end
respond_to_missing?(method) click to toggle source
Calls superclass method
# File lib/reddit_get.rb, line 49
def respond_to_missing?(method)
  @data.key?(method_name.to_s) || super
end