Class: Iface::ValueSet

Inherits:
Object
  • Object
show all
Defined in:
lib/iface/value_set.rb,
lib/iface/value_set/pair.rb

Overview

Represents a generic set of NAME=value pairs

Direct Known Subclasses

PrimaryInterface

Defined Under Namespace

Classes: IpV4Primary, IpV6Primary, IpV6Secondaries, Pair

Constant Summary collapse

VAR_HANDLERS =

rubocop:disable Style/MutableConstant

{ # rubocop:disable Style/MutableConstant
  'IPADDR' => IpV4Primary,
  'IPV6ADDR' => IpV6Primary,
  'IPV6ADDR_SECONDARIES' => IpV6Secondaries
}

Instance Method Summary collapse

Constructor Details

#initialize(io) ⇒ ValueSet

Returns a new instance of ValueSet.



8
9
10
11
12
13
14
15
16
# File 'lib/iface/value_set.rb', line 8

def initialize(io)
  @vars = {}
  io.each_line do |line|
    edited_line = line.sub(/#.*$/, '').strip
    next if edited_line.empty?
    pair = Pair.create(edited_line, value_set: self)
    @vars[pair.name] = pair
  end
end

Instance Method Details

#[](name) ⇒ Object



18
19
20
# File 'lib/iface/value_set.rb', line 18

def [](name)
  @vars[name.upcase]&.value
end

#[]=(name, value) ⇒ Object



22
23
24
25
26
27
28
29
# File 'lib/iface/value_set.rb', line 22

def []=(name, value)
  key = name.upcase
  if @vars.key?(key)
    @vars[key].value = value
  else
    @vars[key] = Pair.create(key, value, value_set: self)
  end
end

#fetch_raw(name) ⇒ Object



31
32
33
# File 'lib/iface/value_set.rb', line 31

def fetch_raw(name)
  @vars[name.upcase]&.raw_value
end

#key?(name) ⇒ Boolean Also known as: has_key?

Returns:

  • (Boolean)


35
36
37
# File 'lib/iface/value_set.rb', line 35

def key?(name)
  @vars.key?(name.upcase)
end

#to_sObject



40
41
42
# File 'lib/iface/value_set.rb', line 40

def to_s
  "#{@vars.values.map(&:to_s).join("\n")}\n"
end