class Rozi::TrackFile

A thin wrapper around a file object made for reading and writing tracks

Public Instance Methods

write(enumerable) click to toggle source

Writes an enumerable of track points to the file

@param [Enumerable] enumerable

# File lib/rozi/tracks.rb, line 128
def write(enumerable)
  enumerable.each { |track_point|
    self.write_track_point(track_point)
  }

  nil
end
write_track_point(track_point) click to toggle source

Writes a track point to the file

@param [TrackPoint] track_point @return [nil]

# File lib/rozi/tracks.rb, line 114
def write_track_point(track_point)
  ensure_track_properties

  @file.write serialize_track_point(track_point)
  @file.write "\n"

  nil
end
write_track_properties(properties) click to toggle source

Writes track properties to the file

The file must be empty when this method is called!

@raise [RuntimeError] if the file isn’t empty @param [TrackProperties] properties @return [nil]

# File lib/rozi/tracks.rb, line 98
def write_track_properties(properties)
  if @file.size > 0
    raise "Can't write file properties, file is not empty"
  end

  @file.write serialize_track_properties(properties)

  nil
end

Private Instance Methods

ensure_track_properties() click to toggle source

Ensures that track properties has been written to the file

# File lib/rozi/tracks.rb, line 141
def ensure_track_properties
  return if @properties_written

  @properties_written = true

  if @file.size == 0
    write_track_properties TrackProperties.new
  end
end
serialize_track_point(track_point) click to toggle source
# File lib/rozi/tracks.rb, line 166
def serialize_track_point(track_point)
  "  %.6f,%.6f,%d,%.1f,%.7f,%s,%s" % track_point.to_a
end
serialize_track_properties(track_properties) click to toggle source
# File lib/rozi/tracks.rb, line 151
    def serialize_track_properties(track_properties)
      props = track_properties.to_a
      props.delete_at(0)   # The datum isn't a part of this list
      props.map! { |item| item.is_a?(String) ? escape_text(item) : item }

      <<-TEXT.gsub(/^[ ]{8}/, "") % props
        OziExplorer Track Point File Version 2.1
        #{track_properties.datum}
        Altitude is in Feet
        Reserved 3
        0,%d,%d,%s,%d,%d,%d,%d
        0
      TEXT
    end