class Lurch::Collection

Attributes

resources[R]

Public Class Methods

new(resources, paginator) click to toggle source
# File lib/lurch/collection.rb, line 7
def initialize(resources, paginator)
  @resources = resources
  @paginator = paginator
end

Public Instance Methods

each(&block) click to toggle source
# File lib/lurch/collection.rb, line 20
def each(&block)
  block_given? ? enum.each(&block) : enum
end
each_page(&block) click to toggle source
# File lib/lurch/collection.rb, line 24
def each_page(&block)
  block_given? ? page_enum.each(&block) : page_enum
end
fetch() click to toggle source
# File lib/lurch/collection.rb, line 16
def fetch
  self
end
first?() click to toggle source
# File lib/lurch/collection.rb, line 68
def first?
  @paginator ? @paginator.first? : false
end
first_collection() click to toggle source
# File lib/lurch/collection.rb, line 50
def first_collection
  return @first_collection if defined?(@first_collection)
  @first_collection = @paginator ? @paginator.first_collection : nil
end
inspect() click to toggle source
# File lib/lurch/collection.rb, line 76
def inspect
  suffix = @resources.first ? "[#{Inflector.classify(@resources.first.type)}]" : ""
  inspection = size ? ["size: #{size}"] : []
  inspection << ["pages: #{page_count}"] if page_count
  "#<#{self.class}#{suffix} #{inspection.join(', ')}>"
end
last?() click to toggle source
# File lib/lurch/collection.rb, line 72
def last?
  @paginator ? @paginator.last? : false
end
last_collection() click to toggle source
# File lib/lurch/collection.rb, line 55
def last_collection
  return @last_collection if defined?(@last_collection)
  @last_collection = @paginator ? @paginator.last_collection : nil
end
loaded?() click to toggle source
# File lib/lurch/collection.rb, line 12
def loaded?
  true
end
next?() click to toggle source
# File lib/lurch/collection.rb, line 60
def next?
  @paginator ? @paginator.next? : false
end
next_collection() click to toggle source
# File lib/lurch/collection.rb, line 40
def next_collection
  return @next_collection if defined?(@next_collection)
  @next_collection = @paginator ? @paginator.next_collection : nil
end
page_count() click to toggle source
# File lib/lurch/collection.rb, line 36
def page_count
  @paginator.page_count if @paginator
end
page_size() click to toggle source
# File lib/lurch/collection.rb, line 32
def page_size
  @resources.size
end
prev?() click to toggle source
# File lib/lurch/collection.rb, line 64
def prev?
  @paginator ? @paginator.prev? : false
end
prev_collection() click to toggle source
# File lib/lurch/collection.rb, line 45
def prev_collection
  return @prev_collection if defined?(@prev_collection)
  @prev_collection = @paginator ? @paginator.prev_collection : nil
end
size() click to toggle source
# File lib/lurch/collection.rb, line 28
def size
  @paginator ? @paginator.record_count : @resources.size
end

Private Instance Methods

enum() click to toggle source
# File lib/lurch/collection.rb, line 85
def enum
  Enumerator.new(-> { size }) do |yielder|
    @resources.each do |resource|
      yielder.yield(resource)
    end

    if next_collection
      next_collection.each do |resource|
        yielder.yield(resource)
      end
    end
  end
end
page_enum() click to toggle source
# File lib/lurch/collection.rb, line 99
def page_enum
  Enumerator.new(-> { page_count }) do |yielder|
    yielder.yield(@resources)

    if next_collection
      next_collection.each_page do |page|
        yielder.yield(page)
      end
    end
  end
end