Module: Marquery::Query

Extended by:
Forwardable
Includes:
Enumerable
Defined in:
lib/marquery/query.rb

Defined Under Namespace

Modules: ClassMethods

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#entriesObject (readonly)

Returns the value of attribute entries.



119
120
121
# File 'lib/marquery/query.rb', line 119

def entries
  @entries
end

Class Method Details

.included(base) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/marquery/query.rb', line 15

def self.included(base)
  base.extend(ClassMethods)
  base.instance_variable_set(:@marquery_model, Marquery::Entry)
  base.instance_variable_set(:@marquery_index, Marquery::Index)
  base.instance_variable_set(:@order_field, :date)
  base.instance_variable_set(:@order_direction, Marquery::Order::DESC)
  base.instance_variable_set(:@dir, nil)
  base.instance_variable_set(:@assets_dir, nil)
  base.instance_variable_set(:@marquery_data, nil)
  base.instance_variable_set(:@loaded, false)
  Marquery::Registry.register(base)
end

Instance Method Details

#allObject



132
# File 'lib/marquery/query.rb', line 132

def all = entries

#each(&block) ⇒ Object



125
126
127
128
129
130
# File 'lib/marquery/query.rb', line 125

def each(&block)
  return enum_for(:each) unless block

  entries.each(&block)
  self
end

#filter(&block) ⇒ Object Also known as: select



144
145
146
147
148
# File 'lib/marquery/query.rb', line 144

def filter(&block)
  return self unless block

  new_query(entries.select(&block))
end

#find(slug) ⇒ Object



136
137
138
# File 'lib/marquery/query.rb', line 136

def find(slug)
  find_by_slug(slug) || raise(Marquery::EntryNotFound.new(slug))
end

#find_by_slug(slug) ⇒ Object



140
141
142
# File 'lib/marquery/query.rb', line 140

def find_by_slug(slug)
  entries.find { |entry| entry.slug == slug }
end

#initialize(entries = nil) ⇒ Object



121
122
123
# File 'lib/marquery/query.rb', line 121

def initialize(entries = nil)
  @entries = (entries || self.class.all_entries).freeze
end

#next(entry) ⇒ Object



176
177
178
179
180
181
# File 'lib/marquery/query.rb', line 176

def next(entry)
  idx = entries.index(entry)
  return nil if idx.nil?

  entries[idx + 1]
end

#previous(entry) ⇒ Object



169
170
171
172
173
174
# File 'lib/marquery/query.rb', line 169

def previous(entry)
  idx = entries.index(entry)
  return nil if idx.nil? || idx.zero?

  entries[idx - 1]
end

#reject(&block) ⇒ Object



151
152
153
154
155
# File 'lib/marquery/query.rb', line 151

def reject(&block)
  return self unless block

  new_query(entries.reject(&block))
end

#reverseObject



161
162
163
# File 'lib/marquery/query.rb', line 161

def reverse
  new_query(entries.reverse)
end

#shuffle(random: Random.new) ⇒ Object



165
166
167
# File 'lib/marquery/query.rb', line 165

def shuffle(random: Random.new)
  new_query(entries.shuffle(random: random))
end

#sort_by(&block) ⇒ Object



157
158
159
# File 'lib/marquery/query.rb', line 157

def sort_by(&block)
  new_query(entries.sort_by(&block))
end