Module: ReferenceList
- Included in:
- Teambox::Resource, Teambox::ResultSet
- Defined in:
- lib/teambox-client/reference_list.rb
Overview
Methods for handling references list
Instance Method Summary collapse
-
#generate_references(data) ⇒ Object
Generate references hash from JSON data.
-
#get_or_make_reference(klass, data, field_id) ⇒ Object
get reference based on data.
-
#get_or_make_references(klass, data, field_id, field_data = nil) ⇒ Object
get a list of references based on data.
-
#get_reference(klass, id) ⇒ Object
Gets a referenced object.
-
#set_reference(klass, resource) ⇒ Object
References resource in the current Teambox::ResultSet.
Instance Method Details
#generate_references(data) ⇒ Object
Generate references hash from JSON data
4 5 6 7 |
# File 'lib/teambox-client/reference_list.rb', line 4 def generate_references(data) @references = {} @references.tap { |h| data.each {|ref| h[ref['type'] + ref['id'].to_s] = Teambox.create_model(ref['type'], ref, self) } } end |
#get_or_make_reference(klass, data, field_id) ⇒ Object
get reference based on data. Makes new resource if reference does not exist. e.g.
get_or_make_reference('User', @data, 'user_id')
29 30 31 |
# File 'lib/teambox-client/reference_list.rb', line 29 def get_or_make_reference(klass, data, field_id) get_reference(klass, data[field_id]) || set_reference(klass, {}.merge({'id' => data[field_id]})) end |
#get_or_make_references(klass, data, field_id, field_data = nil) ⇒ Object
get a list of references based on data. Makes a new resource for each references which doesnot exist.
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/teambox-client/reference_list.rb', line 34 def get_or_make_references(klass, data, field_id, field_data=nil) if data[field_data] data[field_data].map do |object| get_reference(klass, object['id']) || set_reference(klass, object) end elsif data[field_id] data[field_id].map do |object_id| get_reference(klass, object_id) || set_reference(klass, {'id' => object_id}) end else [] end end |
#get_reference(klass, id) ⇒ Object
Gets a referenced object. e.g:
get_reference('User', 1)
23 24 25 |
# File 'lib/teambox-client/reference_list.rb', line 23 def get_reference(klass, id) @references[klass.to_s + (id||'').to_s] end |
#set_reference(klass, resource) ⇒ Object
References resource in the current Teambox::ResultSet
10 11 12 13 14 15 16 17 18 19 |
# File 'lib/teambox-client/reference_list.rb', line 10 def set_reference(klass, resource) real_resource = if resource.is_a? Teambox::Resource resource else Teambox.const_get(klass).new(resource, self) end @references[klass.to_s + real_resource.id.to_s] = real_resource real_resource end |