Class: Exegesis::DocumentCollection

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/exegesis/document/collection.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(docs = [], master = nil, index = 0) ⇒ DocumentCollection

Returns a new instance of DocumentCollection.



7
8
9
10
11
12
13
14
15
# File 'lib/exegesis/document/collection.rb', line 7

def initialize docs=[], master=nil, index=0
  @rows = docs
  if master.is_a?(Exegesis::DocumentCollection)
    @parent = master
  else
    @database = master
  end
  @index = index
end

Instance Attribute Details

#indexObject (readonly)

Returns the value of attribute index.



5
6
7
# File 'lib/exegesis/document/collection.rb', line 5

def index
  @index
end

#parentObject (readonly)

Returns the value of attribute parent.



5
6
7
# File 'lib/exegesis/document/collection.rb', line 5

def parent
  @parent
end

#rowsObject (readonly)

Returns the value of attribute rows.



5
6
7
# File 'lib/exegesis/document/collection.rb', line 5

def rows
  @rows
end

Instance Method Details

#[](key) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/exegesis/document/collection.rb', line 42

def [] key
  @keymaps ||= {}
  filtered_rows = rows.select do |row|
    if row['key'].is_a?(Array)
      row['key'][index] == key
    else
      row['key'] == key
    end
  end
  new_index = index + 1
  @keymaps[key] ||= self.class.new(filtered_rows, self, new_index)
end

#databaseObject



22
23
24
# File 'lib/exegesis/document/collection.rb', line 22

def database
  @database || @parent.database
end

#documentsObject



38
39
40
# File 'lib/exegesis/document/collection.rb', line 38

def documents
  @documents ||= load_documents
end

#each(&block) ⇒ Object



55
56
57
58
59
# File 'lib/exegesis/document/collection.rb', line 55

def each &block
  rows.each do |row|
    yield row['key'], row['value'], documents[row['id']]
  end
end

#keysObject



30
31
32
# File 'lib/exegesis/document/collection.rb', line 30

def keys
  @keys ||= rows.map {|r| r['key'] }.uniq
end

#sizeObject



26
27
28
# File 'lib/exegesis/document/collection.rb', line 26

def size
  @rows.length
end

#to_sObject Also known as: inspect



17
18
19
# File 'lib/exegesis/document/collection.rb', line 17

def to_s
  "#<Exegesis::DocumentCollection:#{object_id} database=#{database.uri} rows=#{size} depth=#{index}>"
end

#valuesObject



34
35
36
# File 'lib/exegesis/document/collection.rb', line 34

def values
  @values ||= rows.map {|r| r['value'] }
end