class Hachioji::Taikikanshi::WdClient
Public Instance Methods
parse()
click to toggle source
# File lib/hachioji/taikikanshi/wd_client.rb, line 9 def parse html = open(self.endpoint_url).read @doc = Nokogiri::HTML(html.toutf8) @areas = [] @values = {} @values_previous = {} got_date = false parsing_previous = false @doc.xpath("/html/body/table/tr").each_with_index do |tr,tri| if tri == 0 tr.xpath("./td/font").each_with_index do |font,fonti| next if fonti == 0 @areas << font.text @values[font.text] = MeasuredValue.new(area_name: font.text, value_type: measured_value_type) @values_previous[font.text] = MeasuredValue.new(area_name: font.text, value_type: measured_value_type) end else tdidx = 0 tr.xpath("./td").each do |td| if td["rowspan"] month, day = td.xpath("./font").first.text.scan(/(\d+)/(\d+)/).first if !got_date @areas.each do |area| @values[area].date = Date.new(Date.today.year, month.to_i, day.to_i) end got_date = true else @areas.each do |area| @values_previous[area].date = Date.new(Date.today.year, month.to_i, day.to_i) end parsing_previous = true end else val = td.xpath("./font").first.text.strip next if val.match(/\d+時/) value = measured_value(val) if parsing_previous @values_previous[@areas[tdidx]].values.insert(0, value) else @values[@areas[tdidx]].values.insert(0, value) end tdidx += 1 end end end end end