Class: Exegesis::DocumentCollection
- Inherits:
-
Object
- Object
- Exegesis::DocumentCollection
- Includes:
- Enumerable
- Defined in:
- lib/exegesis/document/collection.rb
Instance Attribute Summary collapse
-
#index ⇒ Object
readonly
Returns the value of attribute index.
-
#parent ⇒ Object
readonly
Returns the value of attribute parent.
-
#rows ⇒ Object
readonly
Returns the value of attribute rows.
Instance Method Summary collapse
- #[](key) ⇒ Object
- #database ⇒ Object
- #documents ⇒ Object
- #each(&block) ⇒ Object
-
#initialize(docs = [], master = nil, index = 0) ⇒ DocumentCollection
constructor
A new instance of DocumentCollection.
- #keys ⇒ Object
- #size ⇒ Object
- #to_s ⇒ Object (also: #inspect)
- #values ⇒ Object
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
#index ⇒ Object (readonly)
Returns the value of attribute index.
5 6 7 |
# File 'lib/exegesis/document/collection.rb', line 5 def index @index end |
#parent ⇒ Object (readonly)
Returns the value of attribute parent.
5 6 7 |
# File 'lib/exegesis/document/collection.rb', line 5 def parent @parent end |
#rows ⇒ Object (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 |
#database ⇒ Object
22 23 24 |
# File 'lib/exegesis/document/collection.rb', line 22 def database @database || @parent.database end |
#documents ⇒ Object
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 |
#keys ⇒ Object
30 31 32 |
# File 'lib/exegesis/document/collection.rb', line 30 def keys @keys ||= rows.map {|r| r['key'] }.uniq end |
#size ⇒ Object
26 27 28 |
# File 'lib/exegesis/document/collection.rb', line 26 def size @rows.length end |
#to_s ⇒ Object 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 |
#values ⇒ Object
34 35 36 |
# File 'lib/exegesis/document/collection.rb', line 34 def values @values ||= rows.map {|r| r['value'] } end |