class LIFX::LAN::TagTable

@api private

Public Class Methods

new(entries: {}) click to toggle source
# File lib/lifx/lan/tag_table.rb, line 7
def initialize(entries: {})
  @entries = Hash.new { |h, k| h[k] = {} }
  entries.each do |k, v|
    @entries[k] = v
  end
end

Public Instance Methods

delete_entries_with(tag_id: nil, device_id: nil, label: nil) click to toggle source
# File lib/lifx/lan/tag_table.rb, line 33
def delete_entries_with(tag_id: nil, device_id: nil, label: nil)
  matching_entries = entries_with(tag_id: tag_id, device_id: device_id, label: label)
  matching_entries.each do |entry|
    @entries[entry.device_id].delete(entry.tag_id)
  end
end
entries() click to toggle source
# File lib/lifx/lan/tag_table.rb, line 44
def entries
  @entries.values.map(&:values).flatten
end
entries_with(tag_id: nil, device_id: nil, label: nil) click to toggle source
# File lib/lifx/lan/tag_table.rb, line 14
def entries_with(tag_id: nil, device_id: nil, label: nil)
  entries.select do |entry|
    ret = []
    ret << (entry.tag_id == tag_id) if tag_id
    ret << (entry.device_id == device_id) if device_id
    ret << (entry.label == label) if label
    ret.all?
  end
end
entry_with(**args) click to toggle source
# File lib/lifx/lan/tag_table.rb, line 24
def entry_with(**args)
  entries_with(**args).first
end
tags() click to toggle source
# File lib/lifx/lan/tag_table.rb, line 40
def tags
  entries.map(&:label).uniq
end
update_table(tag_id: self.tag_id, label: self.label, device_id: self.device_id) click to toggle source
# File lib/lifx/lan/tag_table.rb, line 28
def update_table(tag_id: self.tag_id, label: self.label, device_id: self.device_id)
  entry = @entries[device_id][tag_id] ||= Entry.new(tag_id, label, device_id)
  entry.label = label
end