lib/baza/model_custom.rb in baza-0.0.19 vs lib/baza/model_custom.rb in baza-0.0.20
- old
+ new
@@ -1,153 +1,155 @@
require "#{$knjpath}event_handler"
class Baza::ModelCustom
- #Used to determine if this is a knj-datarow-object.
+ # Used to determine if this is a knj-datarow-object.
def is_knj?
- return true
+ true
end
-
- #Initializes variables on the class from objects.
+
+ # Initializes variables on the class from objects.
def self.datarow_init(d)
@@ob = d.ob
@@db = d.db
end
-
+
def self.has_one(arr)
arr.each do |val|
methodname = nil
colname = nil
classname = nil
-
+
if val.is_a?(Symbol)
classname = val
methodname = val.to_s.downcase.to_sym
colname = "#{val.to_s.downcase}_id".to_sym
elsif val.is_a?(Array)
classname, colname, methodname = *val
elsif val.is_a?(Hash)
- classname, colname, methodname = val[:class], val[:col], val[:method]
+ classname = val[:class]
+ colname = val[:col]
+ methodname = val[:method]
else
raise "Unknown argument-type: '#{arr.class.name}'."
end
-
- methodname = classname.to_s.downcase if !methodname
- colname = "#{classname.to_s.downcase}_id".to_sym if !colname
-
+
+ methodname = classname.to_s.downcase unless methodname
+ colname = "#{classname.to_s.downcase}_id".to_sym unless colname
+
define_method(methodname) do
return @@ob.get_try(self, colname, classname)
end
-
- methodname_html = "#{methodname.to_s}_html".to_sym
+
+ methodname_html = "#{methodname}_html".to_sym
define_method(methodname_html) do |*args|
- obj = self.send(methodname)
- return @@ob.events.call(:no_html, classname) if !obj
-
- raise "Class '#{classname}' does not have a 'html'-method." if !obj.respond_to?(:html)
+ obj = send(methodname)
+ return @@ob.events.call(:no_html, classname) unless obj
+
+ raise "Class '#{classname}' does not have a 'html'-method." unless obj.respond_to?(:html)
return obj.html(*args)
end
end
end
-
+
def self.events
- if !@events
+ unless @events
@events = Knj::Event_handler.new
- @events.add_event(:name => :add, :connections_max => 1)
- @events.add_event(:name => :update, :connections_max => 1)
- @events.add_event(:name => :data_from_id, :connections_max => 1)
- @events.add_event(:name => :delete, :connections_max => 1)
+ @events.add_event(name: :add, connections_max: 1)
+ @events.add_event(name: :update, connections_max: 1)
+ @events.add_event(name: :data_from_id, connections_max: 1)
+ @events.add_event(name: :delete, connections_max: 1)
end
-
- return @events
+
+ @events
end
-
+
def self.classname
- self.name.split("::").last
+ name.split("::").last
end
-
+
def self.add(d)
- return @events.call(:add, d)
+ @events.call(:add, d)
end
-
+
def self.table
- return self.name.split("::").last
+ name.split("::").last
end
-
+
def deleted?
- return true if !@data
- return false
+ return true unless @data
+ false
end
-
+
def table
- return self.class.table
+ self.class.table
end
-
- def initialize(data, args)
+
+ def initialize(data, _args)
if data.is_a?(Hash)
@data = Knj::ArrayExt.hash_sym(data)
- @id = self.id
+ @id = id
else
@id = data
- self.reload
+ reload
end
end
-
+
def reload
- 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 => @id))
- 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)
+ raise "No 'data_from_id'-event connected to class." unless self.class.events.connected?(:data_from_id)
+ data = self.class.events.call(:data_from_id, Knj::Hash_methods.new(id: @id))
+ raise "No data was received from the event: 'data_from_id'." unless data
+ raise "Data expected to be a hash but wasnt: '#{data.class.name}'." unless data.is_a?(Hash)
@data = Knj::ArrayExt.hash_sym(data)
end
-
+
def update(data)
- ret = self.class.events.call(:update, Knj::Hash_methods.new(:object => self, :data => data))
- self.reload
- return ret
+ ret = self.class.events.call(:update, Knj::Hash_methods.new(object: self, data: data))
+ reload
+ ret
end
-
- #Returns a key from the hash that this object is holding or raises an error if it doesnt exist.
+
+ # Returns a key from the hash that this object is holding or raises an error if it doesnt exist.
def [](key)
- raise "No data spawned on object." if !@data
- raise "No such key: '#{key}'. Available keys are: '#{@data.keys.sort.join(", ")}'." if !@data.key?(key)
- return @data[key]
+ raise "No data spawned on object." unless @data
+ raise "No such key: '#{key}'. Available keys are: '#{@data.keys.sort.join(", ")}'." unless @data.key?(key)
+ @data[key]
end
-
- #Returns the ID of the object.
+
+ # Returns the ID of the object.
def id
- return self[:id]
+ self[:id]
end
-
- #Returns the name of the object, which can be taken from various data or various defined methods.
+
+ # 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]
end
-
+
obj_methods = self.class.instance_methods(false)
[:name, :title].each do |method_name|
- return self.method(method_name).call if obj_methods.index(method_name)
+ return method(method_name).call if obj_methods.index(method_name)
end
-
+
raise "Couldnt figure out the title/name of the object on class #{self.class.name}."
end
-
- alias :title :name
-
+
+ alias_method :title, :name
+
def delete
- self.class.events.call(:delete, Knj::Hash_methods.new(:object => self))
+ self.class.events.call(:delete, Knj::Hash_methods.new(object: self))
end
-
+
def destroy
@data = nil
end
-
+
def each(&args)
- return @data.each(&args)
+ @data.each(&args)
end
-
+
def to_hash
- return @data.clone
+ @data.clone
end
-end
\ No newline at end of file
+end