include LibXML
- attr_reader :possible_points
- attr_reader :actual_points
- attr_reader :tracksegs
+ attr_reader :possible_points, :actual_points, :tracksegs
def initialize(file)
@file = file
point = nil
while reader.read
- if reader.node_type == XML::Reader::TYPE_ELEMENT
+ case reader.node_type
+ when XML::Reader::TYPE_ELEMENT
if reader.name == "trkpt"
point = TrkPt.new(@tracksegs, reader["lat"].to_f, reader["lon"].to_f)
@possible_points += 1
elsif reader.name == "time" && point
point.timestamp = Time.parse(reader.read_string)
end
- elsif reader.node_type == XML::Reader::TYPE_END_ELEMENT
+ when XML::Reader::TYPE_END_ELEMENT
if reader.name == "trkpt" && point && point.valid?
point.altitude ||= 0
yield point
end
def points(&block)
- return enum_for(:points) unless block_given?
+ return enum_for(:points) unless block
@possible_points = 0
@actual_points = 0
rescue Archive::Error
io = ::File.open(@file)
- case MimeMagic.by_magic(io).type
+ case MimeMagic.by_magic(io)&.type
when "application/gzip" then io = Zlib::GzipReader.open(@file)
when "application/x-bzip" then io = Bzip2::FFI::Reader.open(@file)
end