Module: Ladder::Resource::Dynamic::InstanceMethods
- Defined in:
- lib/ladder/resource/dynamic.rb
Instance Method Summary collapse
-
#<<(data) ⇒ Object
Overload Ladder #<<.
-
#update_resource(opts = {}) ⇒ Object
Overload Ladder #update_resource.
Instance Method Details
#<<(data) ⇒ Object
Overload Ladder #<<
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/ladder/resource/dynamic.rb', line 77 def <<(data) # ActiveTriples::Resource expects: RDF::Statement, Hash, or Array data = RDF::Statement.from(data) unless data.is_a? RDF::Statement unless resource_class.properties.values.map(&:predicate).include? data.predicate # Generate a dynamic field name qname = data.predicate.qname field_name = (respond_to? qname.last or :name == qname.last) ? qname.join('_').to_sym : qname.last # Define property on class property field_name, predicate: data.predicate end super(data) end |
#update_resource(opts = {}) ⇒ Object
Overload Ladder #update_resource
58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/ladder/resource/dynamic.rb', line 58 def update_resource(opts = {}) # NB: super has to go first or AT clobbers properties super(opts) if self._context self._context.each do |field_name, uri| value = self.send(field_name) cast_uri = RDF::URI.new(value) resource.set_value(RDF::Vocabulary.find_term(uri), cast_uri.valid? ? cast_uri : value) end end resource end |