module TTVDB::Parser

Constants

MAP

Public Instance Methods

parse() click to toggle source
# File lib/ttvdb/parser.rb, line 50
def parse
  raise "no data to parse" unless @data
  @data.each do |k, v|
    k = k.downcase
    v = v[0]
    unless MAP.include? k
      next
    end
    var = nil
    if MAP[k][:map].is_a? TrueClass
      var = k.to_sym
    else
      var = MAP[k][:map].to_sym
    end

    unless respond_to? var
      next
    end
    k, v = map k, v
    instance_variable_set("@#{k}", v)
  end
  @data = nil
end

Private Instance Methods

map(k, v) click to toggle source
# File lib/ttvdb/parser.rb, line 75
def map k, v
  case MAP[k][:cast]
    when :integer
      v = v.to_i rescue v
    when :float
      v = v.to_f rescue v
    when :array
      v = v.split("|").compact.reject { |c| c.empty? } rescue v
    when :time_at
      v = Time.at(v.to_i) rescue v
    when :time
      v = Time.parse(v) rescue v
    else
      v = v
  end
  if MAP[k][:map].is_a? TrueClass
    k = k.to_sym
  else
    k = MAP[k][:map].to_sym
  end
  v = (v.is_a? Hash and v.empty?) ? nil : v
  [k, v]
end
to_s() click to toggle source
# File lib/ttvdb/parser.rb, line 99
def to_s
  self.inspect
end