class Rome2rio::EncodedFlags

Attributes

flags[RW]

Public Class Methods

new(flags = nil) click to toggle source
# File lib/rome2rio/helper/encoded_flags.rb, line 5
def initialize(flags = nil)
  @flags = flags
end
parse(str) click to toggle source
# File lib/rome2rio/helper/encoded_flags.rb, line 9
def self.parse(str)
  value = Integer(str)
  ret = new
  ret.flags = []
  self::FLAG_VALUES.each { |key, flag| ret.flags << key if (value & flag) == flag }
  ret
end

Public Instance Methods

method_missing(meth, *args, &block) click to toggle source
Calls superclass method
# File lib/rome2rio/helper/encoded_flags.rb, line 24
def method_missing(meth, *args, &block)
  if meth.to_s.end_with?("?") then
    key = meth.to_s.chop.to_sym

    return true if to_a.include?(key)

    #           return flags.include?(key) if flags.is_a?(Array)
    #           return flags[key] if flags.is_a?(Hash)
    #           return true if flags == key

  end

  super(meth, *args, &block)
end
to_a() click to toggle source
# File lib/rome2rio/helper/encoded_flags.rb, line 17
def to_a
  return flags.map { |k, v| k if v == true || v == 1 }.select { |k| k != nil } if flags.is_a?(Hash)
  return [ flags.to_sym ] if flags.is_a?(String)
  return [ flags ] if flags.is_a?(Symbol)
  flags
end
to_i() click to toggle source
# File lib/rome2rio/helper/encoded_flags.rb, line 43
def to_i
  keys = to_a

  ret = 0
  self.class::FLAG_VALUES.each { |key, flag| ret |= flag if keys.include?(key) }
  ret
end
to_s() click to toggle source
# File lib/rome2rio/helper/encoded_flags.rb, line 39
def to_s
  to_i.to_s
end