Sha256: e3a4e6f3eaf7f9c03eb93b0e6beeb00b1f6a947f8135e4e2efabff5d59f02a1b

Contents?: true

Size: 1.28 KB

Versions: 25

Compression:

Stored size: 1.28 KB

Contents

# frozen_string_literal: true

# An item is a concrete record.
# It can be part of another proxy like collection.
class LHS::Item < LHS::Proxy

  autoload :Destroy,
    'lhs/concerns/item/destroy'
  autoload :Save,
    'lhs/concerns/item/save'
  autoload :Update,
    'lhs/concerns/item/update'
  autoload :Validation,
    'lhs/concerns/item/validation'

  include Create
  include Destroy
  include Save
  include Update
  include Validation

  delegate :map, :present?, :blank?, :empty?, to: :_raw, allow_nil: true
  delegate :_raw, to: :_data

  def collection?
    false
  end

  def item?
    true
  end

  def respond_to?(sym, include_all = false)
    if sym == :to_ary
      false
    else
      super(sym, include_all)
    end
  end

  protected

  def method_missing(name, *args, &_block)
    return set(name, args.try(&:first)) if name.to_s[/=$/]
    get(name, *args)
  end

  def respond_to_missing?(name, _include_all = false)
    # We accept every message that does not belong to set of keywords
    !BLACKLISTED_KEYWORDS.include?(name.to_s)
  end

  def unwrap_nested_item
    return _data unless _record.item_key
    nested_data = _data.dig(*_record.item_key)
    return _data unless nested_data
    LHS::Data.new(nested_data, _data._parent, _record, _data._request, _data._endpoint)
  end
end

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
lhs-21.1.3 lib/lhs/item.rb
lhs-21.1.2 lib/lhs/item.rb
lhs-21.1.2.pre.keyfix.2 lib/lhs/item.rb
lhs-21.1.2.pre.keyfix.1 lib/lhs/item.rb
lhs-21.1.2.pre.fix.pre.cant.pre.add.pre.new.pre.key.pre.during.pre.iteration.1 lib/lhs/item.rb
lhs-21.1.1.pre.pre.fix.pre.cant.pre.add.pre.new.pre.key.pre.during.pre.iteration.1 lib/lhs/item.rb
lhs-21.1.0 lib/lhs/item.rb
lhs-21.0.0 lib/lhs/item.rb
lhs-20.1.4 lib/lhs/item.rb
lhs-20.1.3.pre.paginationfix.3 lib/lhs/item.rb
lhs-20.1.3.pre.paginationfix.2 lib/lhs/item.rb
lhs-20.1.3.pre.paginationfix.1 lib/lhs/item.rb
lhs-20.1.2 lib/lhs/item.rb
lhs-20.1.1 lib/lhs/item.rb
lhs-20.0.0 lib/lhs/item.rb
lhs-19.10.0 lib/lhs/item.rb
lhs-19.9.0 lib/lhs/item.rb
lhs-19.8.2 lib/lhs/item.rb
lhs-19.8.1 lib/lhs/item.rb
lhs-19.8.0 lib/lhs/item.rb