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