class FeduxOrgStdlib::Models::BaseModel
Base model
Attributes
name[R]
Public Class Methods
all()
click to toggle source
# File lib/fedux_org_stdlib/models/base_model.rb, line 81 def all @instances.to_a end
all_names_as_string(connector = ', ')
click to toggle source
return all names as string
# File lib/fedux_org_stdlib/models/base_model.rb, line 86 def all_names_as_string(connector = ', ') find_all(enabled: true).map(&:name).sort.join(connector) end
clear()
click to toggle source
# File lib/fedux_org_stdlib/models/base_model.rb, line 77 def clear @instances = Set.new end
create(*args, &block)
click to toggle source
# File lib/fedux_org_stdlib/models/base_model.rb, line 61 def create(*args, &block) if block_given? register(new(*args, &block)) else register(new(*args)) end end
delete(val)
click to toggle source
# File lib/fedux_org_stdlib/models/base_model.rb, line 69 def delete(val) element = find(val.to_s.to_sym) fail FeduxOrgStdlib::Exceptions::InstanceNotFound unless element @instances.delete element element end
enable(name)
click to toggle source
enables a specific instance
# File lib/fedux_org_stdlib/models/base_model.rb, line 99 def enable(name) find(name: name).enable rescue NoMethodError raise FeduxOrgStdlib::Models::Exceptions::InvalidSearchCriteria, "Sorry I'm not able to enable \"#{name}\". You need to create an instance with name \"#{name}\" first." end
find(criteria = {})
click to toggle source
finds a single instance
# File lib/fedux_org_stdlib/models/base_model.rb, line 106 def find(criteria = {}) find_all(criteria).first end
find_all(criteria = {})
click to toggle source
finds all instances
# File lib/fedux_org_stdlib/models/base_model.rb, line 111 def find_all(criteria = {}) FeduxOrgStdlib.logger.debug(self) { "Criteria for search: #{ criteria }" } criteria = { name: criteria.to_sym } if criteria.is_a?(Symbol) || criteria.is_a?(String) FeduxOrgStdlib.logger.debug(self) { "Instances to be searched for: #{ @instances.map { |i| "#{i.name} (#{i.class})" }.join(', ') }" } @instances.select do |i| criteria.all? do |c, v| FeduxOrgStdlib.logger.debug(self) { "Check method for search: #{ c }" } i.send("#{c}?".to_sym, v) end end rescue NameError => e raise FeduxOrgStdlib::Models::Exceptions::InvalidSearchCriteria, e.message end
first()
click to toggle source
# File lib/fedux_org_stdlib/models/base_model.rb, line 90 def first @instances.to_a.first end
inherited(base)
click to toggle source
# File lib/fedux_org_stdlib/models/base_model.rb, line 17 def self.inherited(base) base.instance_variable_set(:@instances, Set.new) end
last()
click to toggle source
# File lib/fedux_org_stdlib/models/base_model.rb, line 94 def last @instances.to_a.last end
new(name)
click to toggle source
# File lib/fedux_org_stdlib/models/base_model.rb, line 21 def initialize(name) @name = name.to_sym @enabled = false end
register(element)
click to toggle source
attr_accessor :instances
# File lib/fedux_org_stdlib/models/base_model.rb, line 55 def register(element) @instances << element element end
Public Instance Methods
<=>(other)
click to toggle source
# File lib/fedux_org_stdlib/models/base_model.rb, line 40 def <=>(other) name <=> other.name end
enable()
click to toggle source
enable action
# File lib/fedux_org_stdlib/models/base_model.rb, line 27 def enable @enabled = true end
enabled?(val = true)
click to toggle source
check if action is enabled
# File lib/fedux_org_stdlib/models/base_model.rb, line 32 def enabled?(val = true) @enabled == val end
eql?(other)
click to toggle source
# File lib/fedux_org_stdlib/models/base_model.rb, line 44 def eql?(other) name == other.name end
hash()
click to toggle source
# File lib/fedux_org_stdlib/models/base_model.rb, line 48 def hash name.to_s.hash end
name?(name)
click to toggle source
# File lib/fedux_org_stdlib/models/base_model.rb, line 36 def name?(name) @name == name end