Class: Habdsl::Model::Equipment

Inherits:
Object
  • Object
show all
Defined in:
lib/habdsl/model/equipment.rb

Overview

Represents a piece of equipment in the DSL.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name:, label:, icon:, parent: nil) ⇒ Equipment

Returns a new instance of Equipment.



9
10
11
12
13
14
15
16
17
18
19
# File 'lib/habdsl/model/equipment.rb', line 9

def initialize(name:, label:, icon:, parent: nil)
  validate!(name, "name")
  validate!(icon, "icon")

  @name = name
  @label = label
  @icon = icon
  @parent = parent
  @points = []
  @sub_equipments = []
end

Instance Attribute Details

#iconObject (readonly)

Returns the value of attribute icon.



7
8
9
# File 'lib/habdsl/model/equipment.rb', line 7

def icon
  @icon
end

#labelObject (readonly)

Returns the value of attribute label.



7
8
9
# File 'lib/habdsl/model/equipment.rb', line 7

def label
  @label
end

#nameObject (readonly)

Returns the value of attribute name.



7
8
9
# File 'lib/habdsl/model/equipment.rb', line 7

def name
  @name
end

#parentObject (readonly)

Returns the value of attribute parent.



7
8
9
# File 'lib/habdsl/model/equipment.rb', line 7

def parent
  @parent
end

#pointsObject (readonly)

Returns the value of attribute points.



7
8
9
# File 'lib/habdsl/model/equipment.rb', line 7

def points
  @points
end

#sub_equipmentsObject (readonly)

Returns the value of attribute sub_equipments.



7
8
9
# File 'lib/habdsl/model/equipment.rb', line 7

def sub_equipments
  @sub_equipments
end

Instance Method Details

#equipment(name:, label:, icon:, parent: nil) ⇒ Object



21
22
23
24
25
# File 'lib/habdsl/model/equipment.rb', line 21

def equipment(name:, label:, icon:, parent: nil, &)
  eq = Equipment.new(name: name, label: label, icon: icon, parent: parent)
  eq.instance_eval(&) if block_given?
  @sub_equipments << eq
end

#locationObject



32
33
34
# File 'lib/habdsl/model/equipment.rb', line 32

def location(*)
  raise "Error: location cannot be nested inside equipment"
end

#point(name:, label:, type:, icon:, tags:, parent: nil, channel: nil) ⇒ Object



27
28
29
30
# File 'lib/habdsl/model/equipment.rb', line 27

def point(name:, label:, type:, icon:, tags:, parent: nil, channel: nil)
  @points << Point.new(name: name, label: label, type: type, icon: icon, tags: tags, parent: parent,
                       channel: channel)
end

#to_s(parent_name = nil) ⇒ Object



36
37
38
39
40
41
42
43
44
45
# File 'lib/habdsl/model/equipment.rb', line 36

def to_s(parent_name = nil)
  result = "Group #{@name} \"#{@label}\" <#{@icon}>"
  result += format_parent(parent_name, @parent)
  result += " [\"Equipment\"]\n"

  @sub_equipments.each {|sub_eq| result += sub_eq.to_s(@name) }
  @points.each {|pt| result += pt.to_s(@name) }

  result
end