class Pakyow::Data::Object

Wraps values for a data object returned by a source.

Attributes

name[R]
originating_source[RW]

@api private

values[R]

Public Class Methods

make(name, state: nil, parent: nil, **kwargs, &block) click to toggle source

@api private

Calls superclass method
# File lib/pakyow/data/object.rb, line 89
def make(name, state: nil, parent: nil, **kwargs, &block)
  super(name, state: state, parent: parent, **kwargs, &block)
end
new(values) click to toggle source
# File lib/pakyow/data/object.rb, line 25
def initialize(values)
  @values = Support::IndifferentHash.new(values).freeze
end
serialize(*methods) click to toggle source
# File lib/pakyow/data/object.rb, line 93
def serialize(*methods)
  @__serialized_methods.concat(methods.map(&:to_sym)).uniq!
end

Public Instance Methods

==(other) click to toggle source
# File lib/pakyow/data/object.rb, line 72
def ==(other)
  comparator = case other
  when self.class
    other
  when Result
    other.__getobj__
  else
    nil
  end

  comparator && comparator.class == self.class && comparator.values == @values
end
[](key) click to toggle source
# File lib/pakyow/data/object.rb, line 38
def [](key)
  key = key.to_s.to_sym
  if respond_to?(key)
    public_send(key)
  else
    @values[key]
  end
end
include?(key) click to toggle source
# File lib/pakyow/data/object.rb, line 33
def include?(key)
  respond_to?(key)
end
Also aliased as: key?
key?(key)
Alias for: include?
method_missing(name, *_args) click to toggle source
Calls superclass method
# File lib/pakyow/data/object.rb, line 47
def method_missing(name, *_args)
  if include?(name)
    @values[name]
  else
    super
  end
end
respond_to_missing?(name, *) click to toggle source
Calls superclass method
# File lib/pakyow/data/object.rb, line 55
def respond_to_missing?(name, *)
  @values.include?(name) || super
end
source() click to toggle source
# File lib/pakyow/data/object.rb, line 29
def source
  @originating_source.__object_name.name
end
to_h() click to toggle source
# File lib/pakyow/data/object.rb, line 59
def to_h
  hash = @values.dup
  self.class.__serialized_methods.each do |method|
    hash[method] = public_send(method)
  end

  hash
end
to_json(*) click to toggle source
# File lib/pakyow/data/object.rb, line 68
def to_json(*)
  @values.to_json
end