class Ouidb::MacRange

Attributes

manufacturer[R]

Public Class Methods

[](addr) click to toggle source
# File lib/ouidb/mac_range.rb, line 9
def [](addr)
  if self == MacRange
    Range36[addr] || Range24[addr]
  else
    all[str_to_int(addr)]
  end
end
all() click to toggle source
# File lib/ouidb/mac_range.rb, line 17
def all
  raise NotImplementedError if self == MacRange # Must be called on a subclass
  @all ||= {}
end
find_or_create(addr, manufacturer = nil) click to toggle source
# File lib/ouidb/mac_range.rb, line 22
def find_or_create(addr, manufacturer = nil)
  raise NotImplementedError if self == MacRange # Must be called on a subclass
  addr      = str_to_int(addr)
  all[addr] ||= new(addr, manufacturer)
end
new(addr, manufacturer) click to toggle source
# File lib/ouidb/mac_range.rb, line 37
def initialize(addr, manufacturer)
  raise NotImplementedError if self.class == MacRange # Must be called on a subclass
  @addr         = addr
  @manufacturer = manufacturer
end
new_by_number(addr, manufacturer) click to toggle source
# File lib/ouidb/mac_range.rb, line 28
def new_by_number(addr, manufacturer)
  klass           = addr < 0 ? Range36 : Range24
  addr            = addr.abs
  klass.all[addr] = klass.new(addr, manufacturer)
end
str_to_int(str) click to toggle source
# File lib/ouidb/mac_range.rb, line 4
def str_to_int(str)
  raise NotImplementedError if self == MacRange # Must be called on a subclass
  str.gsub(/[^a-f\d]/i, '')[0...(self::SIZE / 4)].to_i(16)
end

Public Instance Methods

as_json() click to toggle source
# File lib/ouidb/mac_range.rb, line 48
def as_json
  @addr
end
inspect() click to toggle source
# File lib/ouidb/mac_range.rb, line 52
def inspect
  "#<Range#{self.class::SIZE} #{to_s}>"
end
to_s() click to toggle source
# File lib/ouidb/mac_range.rb, line 43
def to_s
  size = self.class::SIZE
  @addr.to_s(16).rjust(size / 4, '0').ljust(12, '0').chars.each_slice(2).map(&:join).join(':') << '/' << size.to_s << ' ' << manufacturer.to_s
end