lib/knj/datarow_custom.rb in knjrbfw-0.0.23 vs lib/knj/datarow_custom.rb in knjrbfw-0.0.24

- old
+ new

@@ -70,30 +70,40 @@ data = d.data if data.is_a?(Hash) @data = Knj::ArrayExt.hash_sym(data) else - data = d.data raise "No 'data_from_id'-event connected to class." if !self.class.events.connected?(:data_from_id) data = self.class.events.call(:data_from_id, Knj::Hash_methods.new(:id => data)) raise "No data was received from the event: 'data_from_id'." if !data + raise "Data expected to be a hash but wasnt: '#{data.class.name}'." if !data.is_a?(Hash) @data = Knj::ArrayExt.hash_sym(data) end end def update(data) return self.class.events.call(:update, Knj::Hash_methods.new(:object => self, :data => data)) end + #Returns a key from the hash that this object is holding or raises an error if it doesnt exist. def [](key) - raise "No such key: '#{key}'." if !@data or !@data.key?(key) + if !@data + raise "No data spawned on object." + end + + if !@data.key?(key) + raise "No such key: '#{key}'. Available keys are: '#{@data.keys.sort.join(", ")}'." + end + return @data[key] end + #Returns the ID of the object. def id return self[:id] end + #Returns the name of the object, which can be taken from various data or various defined methods. def name if @data.key?(:title) return @data[:title] elsif @data.key?(:name) return @data[:name] \ No newline at end of file