Sha256: f36a42a8e8303e9e758531c89ec6f78a74b1a6ca220b14ddb322cd5b711e78b7
Contents?: true
Size: 1.1 KB
Versions: 11
Compression:
Stored size: 1.1 KB
Contents
require 'forwardable' module EfoNelfo class Collection include Enumerable extend Forwardable attr_reader :owner, :post_type def_delegators :@list, :[], :each, :last, :size, :empty? def initialize(owner, post_type) @owner = owner @post_type = post_type @list = [] end def <<(obj) obj = post_type_class.new(obj) if obj.is_a? Hash raise EfoNelfo::InvalidPostType if obj.nil? || (obj.is_a?(EfoNelfo::PostType) && obj.post_type != post_type) # Set the index if the post has an index property obj.index = size + 1 if obj.has_property?(:index) @list << obj end def delete(index) @list.delete_at index end def to_a map(&:to_a).flatten(1) end # find_by property_name: 'test' def find_by(args) key = args.keys.first; value = args.values.first @list.select { |l| l.respond_to?(key) && l.public_send(key) == value } end private attr_reader :list def post_type_class Kernel.const_get("EfoNelfo::V#{owner.class.version_from_class}::#{post_type}") end end end
Version data entries
11 entries across 11 versions & 1 rubygems