Sha256: 5bdd27eadb329a662a86b23d2eee8e60ad300ba85b8f8444b56332abec775d66

Contents?: true

Size: 1.2 KB

Versions: 3

Compression:

Stored size: 1.2 KB

Contents

module Wasserstand
  module Provider
=begin
  <item>
    <no>8</no>
    <psmgr>320</psmgr>
    <pegelname>KONSTANZ</pegelname>
    <messwert>380,7</messwert>
    <km>0</km>
    <pnp>391,89</pnp>
    <tendenz>Gleich</tendenz>
    <datum>13.09.2012</datum>
    <uhrzeit>20:00:00</uhrzeit>
    <pegelnummer>0906</pegelnummer>
  </item>
=end
    class LevelMapper
      class << self
        def map(item)
          level_name = item.xpath('pegelname').text

          Level.new(level_name).tap do |pegel|
            # The level class will resolve the name to a real object if required
            pegel.waterway = item.xpath('../name').text

            pegel.level_id = item.xpath('pegelnummer').text
            pegel.km = item.xpath('km').text.sub(',', '.').to_f
            datum = item.xpath('datum').text
            uhrzeit = item.xpath('uhrzeit').text

            messdatum = TZInfo::Timezone.get('Europe/Berlin').local_to_utc(Time.parse("#{datum} #{uhrzeit}"))
            wert = item.xpath('messwert').text.sub(',', '.').to_f
            tendenz = item.xpath('tendenz').text

            pegel.measurements << Measurement.new(messdatum, wert, Trend.new(tendenz))
          end
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
wasserstand-0.0.11 lib/wasserstand/provider/level_mapper.rb
wasserstand-0.0.10 lib/wasserstand/provider/level_mapper.rb
wasserstand-0.0.9 lib/wasserstand/provider/level_mapper.rb