class Megam::SensorsCollection

Attributes

iterator[R]

Public Class Methods

json_create(o) click to toggle source
# File lib/megam/core/sensors_collection.rb, line 101
def self.json_create(o)
  collection = new
  o['results'].each do |sensors_list|
    sensors_array = sensors_list.is_a?(Array) ? sensors_list : [sensors_list]
    sensors_array.each do |sensors|
      collection.insert(sensors)
    end
  end
  collection
end
new() click to toggle source
# File lib/megam/core/sensors_collection.rb, line 6
def initialize
  @sensors = []
  @sensors_by_name = {}
  @insert_after_idx = nil
end

Public Instance Methods

<<(*args) click to toggle source
# File lib/megam/core/sensors_collection.rb, line 26
def <<(*args)
  args.flatten.each do |a|
    is_megam_sensors(a)
    @sensors << a
    @sensors_by_name[a.id] = @sensors.length - 1
  end
  self
end
Also aliased as: push
[](index) click to toggle source
# File lib/megam/core/sensors_collection.rb, line 16
def [](index)
  @sensors[index]
end
[]=(index, arg) click to toggle source
# File lib/megam/core/sensors_collection.rb, line 20
def []=(index, arg)
  is_megam_sensors(arg)
  @sensors[index] = arg
  @sensors_by_name[arg.id] = index
end
all_sensor() click to toggle source
# File lib/megam/core/sensors_collection.rb, line 12
def all_sensor
  @sensors
end
each() { |sensors| ... } click to toggle source
# File lib/megam/core/sensors_collection.rb, line 57
def each
  @sensors.each do |sensors|
    yield sensors
  end
end
each_index() { |i| ... } click to toggle source
# File lib/megam/core/sensors_collection.rb, line 63
def each_index
  @sensors.each_index do |i|
    yield i
  end
end
empty?() click to toggle source
# File lib/megam/core/sensors_collection.rb, line 69
def empty?
  @sensors.empty?
end
for_json() click to toggle source
# File lib/megam/core/sensors_collection.rb, line 93
def for_json
  to_a.map { |item| item.to_s }
end
insert(sensors) click to toggle source
# File lib/megam/core/sensors_collection.rb, line 38
def insert(sensors)
  is_megam_sensors(sensors)
  if @insert_after_idx
    # in the middle of executing a run, so any predefs inserted now should
    # be placed after the most recent addition done by the currently executing
    # sensors
    @sensors.insert(@insert_after_idx + 1, sensors)
    # update name -> location mappings and register new sensors
    @sensors_by_name.each_key do |key|
      @sensors_by_name[key] += 1 if@sensors_by_name[key] > @insert_after_idx
    end
    @sensors_by_name[sensors.id] = @insert_after_idx + 1
    @insert_after_idx += 1
  else
    @sensors << sensors
    @sensors_by_name[sensors.id] = @sensors.length - 1
  end
end
lookup(sensors) click to toggle source
# File lib/megam/core/sensors_collection.rb, line 73
def lookup(sensors)
  lookup_by = nil
  if sensors.is_a?(Megam.sensors)
    lookup_by = sensors.id
  elsif sensors.is_a?(String)
    lookup_by = sensors
  else
    fail ArgumentError, 'Must pass a Megam::sensors or String to lookup'
  end
  res = @sensors_by_name[lookup_by]
  unless res
    fail ArgumentError, "Cannot find a sensors matching #{lookup_by} (did you define it first?)"
  end
  @sensors[res]
end
push(*args)

‘push’ is an alias method to <<s

Alias for: <<
to_json(*a) click to toggle source
# File lib/megam/core/sensors_collection.rb, line 97
def to_json(*a)
  Megam::JSONCompat.to_json(for_json, *a)
end
to_s() click to toggle source
# File lib/megam/core/sensors_collection.rb, line 89
def to_s
    @sensors.join(", ")
end

Private Instance Methods

is_megam_sensors(arg) click to toggle source
# File lib/megam/core/sensors_collection.rb, line 114
def is_megam_sensors(arg)
  unless arg.is_a?(Megam::Sensors)
    fail ArgumentError, "Members must be Megam::sensors's"
  end
  true
end