Class: Coradoc::Query::ResultSet

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/coradoc/query.rb

Overview

Query result set - collection of matched elements

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(elements = []) ⇒ ResultSet

Returns a new instance of ResultSet.



233
234
235
# File 'lib/coradoc/query.rb', line 233

def initialize(elements = [])
  @elements = Array(elements).compact
end

Instance Attribute Details

#elementsObject (readonly)

Returns the value of attribute elements.



231
232
233
# File 'lib/coradoc/query.rb', line 231

def elements
  @elements
end

Instance Method Details

#[](index) ⇒ Object



241
242
243
# File 'lib/coradoc/query.rb', line 241

def [](index)
  @elements[index]
end

#each(&block) ⇒ Object



237
238
239
# File 'lib/coradoc/query.rb', line 237

def each(&block)
  @elements.each(&block)
end

#empty?Boolean

Returns:

  • (Boolean)


250
251
252
# File 'lib/coradoc/query.rb', line 250

def empty?
  @elements.empty?
end

#filter(selector) ⇒ Object



262
263
264
265
266
# File 'lib/coradoc/query.rb', line 262

def filter(selector)
  parsed = Selector.parse(selector)
  filtered = @elements.select { |e| parsed.matches?(e) }
  ResultSet.new(filtered)
end

#firstObject



254
255
256
# File 'lib/coradoc/query.rb', line 254

def first
  @elements.first
end

#inspectObject



291
292
293
# File 'lib/coradoc/query.rb', line 291

def inspect
  "#<Coradoc::Query::ResultSet count=#{length}>"
end

#lastObject



258
259
260
# File 'lib/coradoc/query.rb', line 258

def last
  @elements.last
end

#lengthObject Also known as: size



245
246
247
# File 'lib/coradoc/query.rb', line 245

def length
  @elements.length
end

#map(&block) ⇒ Object



275
276
277
# File 'lib/coradoc/query.rb', line 275

def map(&block)
  ResultSet.new(@elements.map(&block))
end

#query(selector) ⇒ Object



268
269
270
271
272
273
# File 'lib/coradoc/query.rb', line 268

def query(selector)
  results = @elements.flat_map do |element|
    Query.query_within(element, selector).to_a
  end
  ResultSet.new(results.uniq)
end

#reject(&block) ⇒ Object



283
284
285
# File 'lib/coradoc/query.rb', line 283

def reject(&block)
  ResultSet.new(@elements.reject(&block))
end

#select(&block) ⇒ Object



279
280
281
# File 'lib/coradoc/query.rb', line 279

def select(&block)
  ResultSet.new(@elements.select(&block))
end

#to_aObject



287
288
289
# File 'lib/coradoc/query.rb', line 287

def to_a
  @elements.dup
end