Class: RubyHome::ServiceTemplate

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby_home/factories/templates/service_template.rb

Constant Summary collapse

FILENAMES =
%w[services.yml manual_services.yml].freeze
FILEPATHS =
FILENAMES.map { |filename| File.join(__dir__, "..", "..", "config", filename) }.freeze
DATA =
FILEPATHS.flat_map { |filepath| YAML.load_file(filepath) }.freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name:, description:, uuid:, optional_characteristic_names:, required_characteristic_names:) ⇒ ServiceTemplate

Returns a new instance of ServiceTemplate.



19
20
21
22
23
24
25
# File 'lib/ruby_home/factories/templates/service_template.rb', line 19

def initialize(name:, description:, uuid:, optional_characteristic_names:, required_characteristic_names:)
  @name = name
  @description = description
  @uuid = uuid
  @optional_characteristic_names = optional_characteristic_names
  @required_characteristic_names = required_characteristic_names
end

Instance Attribute Details

#descriptionObject (readonly)

Returns the value of attribute description.



27
28
29
# File 'lib/ruby_home/factories/templates/service_template.rb', line 27

def description
  @description
end

#nameObject (readonly)

Returns the value of attribute name.



27
28
29
# File 'lib/ruby_home/factories/templates/service_template.rb', line 27

def name
  @name
end

#optional_characteristic_namesObject (readonly)

Returns the value of attribute optional_characteristic_names.



27
28
29
# File 'lib/ruby_home/factories/templates/service_template.rb', line 27

def optional_characteristic_names
  @optional_characteristic_names
end

#required_characteristic_namesObject (readonly)

Returns the value of attribute required_characteristic_names.



27
28
29
# File 'lib/ruby_home/factories/templates/service_template.rb', line 27

def required_characteristic_names
  @required_characteristic_names
end

#uuidObject (readonly)

Returns the value of attribute uuid.



27
28
29
# File 'lib/ruby_home/factories/templates/service_template.rb', line 27

def uuid
  @uuid
end

Class Method Details

.allObject



7
8
9
# File 'lib/ruby_home/factories/templates/service_template.rb', line 7

def self.all
  @all ||= DATA.map { |data| new(**data) }
end

.find_by(options) ⇒ Object



11
12
13
14
15
16
17
# File 'lib/ruby_home/factories/templates/service_template.rb', line 11

def self.find_by(options)
  all.find do |characteristic|
    options.all? do |key, value|
      characteristic.send(key) == value
    end
  end
end

Instance Method Details

#optional_characteristicsObject



29
30
31
32
33
# File 'lib/ruby_home/factories/templates/service_template.rb', line 29

def optional_characteristics
  @optional_characteristics ||= optional_characteristic_names.map do |name|
    CharacteristicTemplate.find_by(name: name)
  end
end

#required_characteristicsObject



35
36
37
38
39
# File 'lib/ruby_home/factories/templates/service_template.rb', line 35

def required_characteristics
  @required_characteristics ||= required_characteristic_names.map do |name|
    CharacteristicTemplate.find_by(name: name)
  end
end