Class: Dimelo::CCP::API::LazzyCollection
- Inherits:
-
BasicObject
- Includes:
- Enumerable
- Defined in:
- lib/dimelo/ccp/api/lazzy_collection.rb
Defined Under Namespace
Classes: Paginator
Constant Summary
Constants inherited
from BasicObject
BasicObject::KEEP_METHODS
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from BasicObject
remove_methods!
Constructor Details
#initialize(params = {}, &block) ⇒ LazzyCollection
Returns a new instance of LazzyCollection.
23
24
25
|
# File 'lib/dimelo/ccp/api/lazzy_collection.rb', line 23
def initialize(params={}, &block)
@paginator = Paginator.new(params, &block)
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(name, *args, &block) ⇒ Object
/!\ Fetch all API, please avoid this behavior
58
59
60
61
62
63
|
# File 'lib/dimelo/ccp/api/lazzy_collection.rb', line 58
def method_missing(name, *args, &block)
super unless respond_to?(name)
warn %{WARNING: Method '#{name}` called on LazzyCollection object from #{Kernel.caller.first}.
All API items might be fetched, so please verify that you are a consenting adult.}
self.to_a.send(name, *args, &block)
end
|
Instance Attribute Details
#paginator ⇒ Object
Returns the value of attribute paginator.
21
22
23
|
# File 'lib/dimelo/ccp/api/lazzy_collection.rb', line 21
def paginator
@paginator
end
|
Class Method Details
.new(params, &block) ⇒ Object
10
11
12
13
14
15
16
17
|
# File 'lib/dimelo/ccp/api/lazzy_collection.rb', line 10
def new(params, &block)
if (params.has_key?(:offset) || params.has_key?('offset'))
yield params
else
instance = super(params, &block)
instance.paginator.first.is_a?(Enumerable) ? instance : instance.paginator.first
end
end
|
Instance Method Details
#[](index) ⇒ Object
27
28
29
|
# File 'lib/dimelo/ccp/api/lazzy_collection.rb', line 27
def [](index)
paginator.get_item_at(index)
end
|
#each(&block) ⇒ Object
40
41
42
43
44
45
46
47
48
49
|
# File 'lib/dimelo/ccp/api/lazzy_collection.rb', line 40
def each(&block)
index = 0
while true
item = paginator.get_item_at(index)
break if item.nil?
yield item if block.present?
index += 1
end
paginator.flatten
end
|
#inspect ⇒ Object
51
52
53
|
# File 'lib/dimelo/ccp/api/lazzy_collection.rb', line 51
def inspect
"<Dimelo::CCP::API::LazzyCollection instance>"
end
|
#respond_to?(method) ⇒ Boolean
36
37
38
|
# File 'lib/dimelo/ccp/api/lazzy_collection.rb', line 36
def respond_to?(method)
super || Array.public_instance_methods.include?(method.to_s)
end
|
#to_a ⇒ Object
Also known as:
to_ary
31
32
33
|
# File 'lib/dimelo/ccp/api/lazzy_collection.rb', line 31
def to_a
@to_a ||= each
end
|