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