class Tcxxxer::TcxParser
Public Class Methods
new(file)
click to toggle source
# File lib/tcxxxer/tcx_parser.rb, line 12 def initialize(file) @file = file end
open(file)
click to toggle source
# File lib/tcxxxer/tcx_parser.rb, line 6 def self.open(file) tcx_parser = self.new(file) tcx_parser.parse tcx_parser end
Public Instance Methods
courses()
click to toggle source
# File lib/tcxxxer/tcx_parser.rb, line 23 def courses() @doc.xpath('//Courses').map do |course_node| build_course(course_node) end end
parse()
click to toggle source
# File lib/tcxxxer/tcx_parser.rb, line 16 def parse f = File.open(@file) @doc = Nokogiri.XML(f.read) @doc.remove_namespaces! f.close end
Private Instance Methods
build_course(course_node)
click to toggle source
# File lib/tcxxxer/tcx_parser.rb, line 30 def build_course(course_node) course = Course.new course.name = course_node.xpath('//Name').first.inner_text.to_s course.lap = build_lap(course_node.xpath('//Lap')) course.track = build_track_point(course_node.xpath('//Track')) course end
build_lap(lap_node)
click to toggle source
# File lib/tcxxxer/tcx_parser.rb, line 39 def build_lap(lap_node) lap = Tcxxxer::Lap.new lap.total_time_seconds = lap_node.xpath('//TotalTimeSeconds').inner_text.to_s lap.distance_meters = lap_node.xpath('//DistanceMeters').inner_text.to_s lap.begin_lat = lap_node.xpath('//BeginPosition/LatitudeDegrees').inner_text.to_s lap.begin_lng = lap_node.xpath('//BeginPosition/LongitudeDegrees').inner_text.to_s lap.end_lat = lap_node.xpath('//EndPosition/LatitudeDegrees').inner_text.to_s lap.end_lng = lap_node.xpath('//EndPosition/LongitudeDegrees').inner_text.to_s lap end
build_track_point(track_point_node)
click to toggle source
# File lib/tcxxxer/tcx_parser.rb, line 50 def build_track_point(track_point_node) track_points = [] track_point_node.xpath('//Trackpoint').map do |track_node| track_point = Tcxxxer::TrackPoint.new track_point.latitude = track_node.xpath('Position/LatitudeDegrees').inner_text.to_f track_point.longitude = track_node.xpath('Position/LongitudeDegrees').inner_text.to_f track_point.altitude = track_node.xpath('AltitudeMeters').inner_text.to_f track_point.distance = track_node.xpath('DistanceMeters').inner_text.to_f track_point.heart_rate = track_node.xpath('HeartRateBpm').inner_text.to_i track_point.time = Time.parse(track_node.xpath('Time').inner_text) track_point.cadence = track_node.xpath('Cadence').inner_text.to_i track_point.watts = track_node.xpath('Watts').inner_text.to_i track_point.speed = track_node.xpath('Speed').inner_text.to_f track_points<< track_point end track_points end