Module: YFantasy::Subresourceable::ClassMethods
- Defined in:
- lib/y_fantasy/concerns/subresourceable.rb
Instance Method Summary collapse
- #add_to_subresource_tree(subresource, klass) ⇒ Object
- #check_inheritance ⇒ Object
- #dependent_subresources ⇒ Object
- #fetch_subresource(key, subresource) ⇒ Object
- #has_subresource(sub, klass:) ⇒ Object
-
#primary_subresources ⇒ Object
TODO: may not need these first 3 methods if the subresource_tree works the way I want it to.
- #subresource_tree ⇒ Object
- #subresources ⇒ Object
Instance Method Details
#add_to_subresource_tree(subresource, klass) ⇒ Object
68 69 70 71 |
# File 'lib/y_fantasy/concerns/subresourceable.rb', line 68 def add_to_subresource_tree(subresource, klass) @subresource_tree ||= {} @subresource_tree[subresource] = klass.subresources end |
#check_inheritance ⇒ Object
77 78 79 80 81 |
# File 'lib/y_fantasy/concerns/subresourceable.rb', line 77 def check_inheritance return if superclass == YFantasy::BaseResource || superclass == YFantasy::BaseSubresource raise YFantasy::Subresourceable::Error.new("#{self} does not inherit from BaseResource") end |
#dependent_subresources ⇒ Object
39 40 41 |
# File 'lib/y_fantasy/concerns/subresourceable.rb', line 39 def dependent_subresources @dependent_subresources ||= [] end |
#fetch_subresource(key, subresource) ⇒ Object
63 64 65 66 |
# File 'lib/y_fantasy/concerns/subresourceable.rb', line 63 def fetch_subresource(key, subresource) resource = find(key, with: [subresource]) resource.send(subresource) end |
#has_subresource(sub, klass:) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/y_fantasy/concerns/subresourceable.rb', line 47 def has_subresource(sub, klass:) check_inheritance # This smells klass.dependent? ? (dependent_subresources << sub) : (primary_subresources << sub) add_to_subresource_tree(sub, klass) define_method(sub) do ivar = :"@#{sub}" value = instance_variable_get(ivar) return value if (value && value != []) || fetched_subresources.include?(sub) value = instance_variable_set(ivar, self.class.fetch_subresource(key, sub)) add_fetched_subresources(sub) value end end |
#primary_subresources ⇒ Object
TODO: may not need these first 3 methods if the subresource_tree works the way I want it to
35 36 37 |
# File 'lib/y_fantasy/concerns/subresourceable.rb', line 35 def primary_subresources @primary_subresources ||= [] end |
#subresource_tree ⇒ Object
73 74 75 |
# File 'lib/y_fantasy/concerns/subresourceable.rb', line 73 def subresource_tree @subresource_tree || {} end |
#subresources ⇒ Object
43 44 45 |
# File 'lib/y_fantasy/concerns/subresourceable.rb', line 43 def subresources primary_subresources | dependent_subresources end |