tcx 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +14 -2
  3. data/README.md +32 -5
  4. data/lib/tcx/extensions/activity_extension/v2/activity_lap.rb +21 -0
  5. data/lib/tcx/extensions/activity_extension/v2/activity_trackpoint.rb +22 -0
  6. data/lib/tcx/extensions/activity_extension/v2/base.rb +16 -0
  7. data/lib/tcx/extensions/activity_extension/v2/cadence_sensor_type.rb +16 -0
  8. data/lib/tcx/extensions/activity_extension/v2.rb +6 -0
  9. data/lib/tcx/extensions.rb +3 -0
  10. data/lib/tcx/file.rb +30 -0
  11. data/lib/tcx/types/abstract_source.rb +7 -0
  12. data/lib/tcx/{models → types}/activity.rb +6 -0
  13. data/lib/tcx/types/activity_list.rb +25 -0
  14. data/lib/tcx/types/activity_reference.rb +7 -0
  15. data/lib/tcx/types/application.rb +13 -0
  16. data/lib/tcx/types/base.rb +135 -0
  17. data/lib/tcx/types/boolean_type.rb +10 -0
  18. data/lib/tcx/types/build.rb +10 -0
  19. data/lib/tcx/types/build_type.rb +12 -0
  20. data/lib/tcx/types/cadence.rb +9 -0
  21. data/lib/tcx/types/cadence_target.rb +8 -0
  22. data/lib/tcx/types/calories_burned.rb +7 -0
  23. data/lib/tcx/{models → types}/course_folder.rb +5 -0
  24. data/lib/tcx/types/course_list.rb +21 -0
  25. data/lib/tcx/{models → types}/course_point.rb +1 -1
  26. data/lib/tcx/types/custom_speed_zone.rb +9 -0
  27. data/lib/tcx/types/database.rb +48 -0
  28. data/lib/tcx/{models/abstract_source.rb → types/device.rb} +5 -2
  29. data/lib/tcx/types/distance.rb +7 -0
  30. data/lib/tcx/types/duration.rb +10 -0
  31. data/lib/tcx/types/extensions_list.rb +9 -0
  32. data/lib/tcx/types/first_sport.rb +7 -0
  33. data/lib/tcx/types/folders.rb +9 -0
  34. data/lib/tcx/types/heart_rate.rb +7 -0
  35. data/lib/tcx/types/heart_rate_above.rb +7 -0
  36. data/lib/tcx/types/heart_rate_as_percent_of_max.rb +9 -0
  37. data/lib/tcx/types/heart_rate_below.rb +7 -0
  38. data/lib/tcx/types/heart_rate_bpm.rb +9 -0
  39. data/lib/tcx/types/heart_rate_in_beats_per_minute.rb +9 -0
  40. data/lib/tcx/types/history.rb +11 -0
  41. data/lib/tcx/types/history_folder.rb +19 -0
  42. data/lib/tcx/{models → types}/lap.rb +6 -2
  43. data/lib/tcx/types/multi_sport_folder.rb +16 -0
  44. data/lib/tcx/types/multisport_session.rb +10 -0
  45. data/lib/tcx/types/next_sport.rb +8 -0
  46. data/lib/tcx/types/none.rb +9 -0
  47. data/lib/tcx/types/plan.rb +14 -0
  48. data/lib/tcx/types/predefined_speed_zone.rb +7 -0
  49. data/lib/tcx/types/quick_workout.rb +8 -0
  50. data/lib/tcx/types/repeat.rb +8 -0
  51. data/lib/tcx/types/speed.rb +7 -0
  52. data/lib/tcx/types/speed_type.rb +10 -0
  53. data/lib/tcx/types/time.rb +11 -0
  54. data/lib/tcx/{models → types}/trackpoint.rb +2 -2
  55. data/lib/tcx/types/training.rb +14 -0
  56. data/lib/tcx/types/training_type.rb +10 -0
  57. data/lib/tcx/{models/duration.rb → types/user_initiated.rb} +1 -1
  58. data/lib/tcx/types/week.rb +12 -0
  59. data/lib/tcx/{models → types}/workout.rb +6 -0
  60. data/lib/tcx/types/workout_folder.rb +14 -0
  61. data/lib/tcx/types/workout_list.rb +21 -0
  62. data/lib/tcx/types/workouts.rb +10 -0
  63. data/lib/tcx/types/zone.rb +9 -0
  64. data/lib/tcx/types.rb +73 -0
  65. data/lib/tcx/version.rb +1 -1
  66. data/lib/tcx.rb +9 -4
  67. metadata +81 -41
  68. data/lib/tcx/models/activity_list.rb +0 -9
  69. data/lib/tcx/models/base.rb +0 -30
  70. data/lib/tcx/models/cadence.rb +0 -9
  71. data/lib/tcx/models/course_list.rb +0 -9
  72. data/lib/tcx/models/database.rb +0 -11
  73. data/lib/tcx/models/extensions.rb +0 -6
  74. data/lib/tcx/models/folders.rb +0 -7
  75. data/lib/tcx/models/heart_rate_as_percent_of_max.rb +0 -9
  76. data/lib/tcx/models/heart_rate_bpm.rb +0 -9
  77. data/lib/tcx/models/heart_rate_in_beats_per_minute.rb +0 -9
  78. data/lib/tcx/models/value.rb +0 -9
  79. data/lib/tcx/models/workout_list.rb +0 -9
  80. data/lib/tcx/models.rb +0 -40
  81. /data/lib/tcx/{models → types}/course.rb +0 -0
  82. /data/lib/tcx/{models → types}/course_lap.rb +0 -0
  83. /data/lib/tcx/{models → types}/course_point_type.rb +0 -0
  84. /data/lib/tcx/{models → types}/courses.rb +0 -0
  85. /data/lib/tcx/{models → types}/custom_heart_rate_zone.rb +0 -0
  86. /data/lib/tcx/{models → types}/gender.rb +0 -0
  87. /data/lib/tcx/{models → types}/heart_rate_value.rb +0 -0
  88. /data/lib/tcx/{models → types}/intensity.rb +0 -0
  89. /data/lib/tcx/{models → types}/name_key_reference.rb +0 -0
  90. /data/lib/tcx/{models → types}/position.rb +0 -0
  91. /data/lib/tcx/{models → types}/predefined_heart_rate_zone.rb +0 -0
  92. /data/lib/tcx/{models → types}/sensor_state.rb +0 -0
  93. /data/lib/tcx/{models → types}/sport.rb +0 -0
  94. /data/lib/tcx/{models → types}/step.rb +0 -0
  95. /data/lib/tcx/{models → types}/target.rb +0 -0
  96. /data/lib/tcx/{models → types}/track.rb +0 -0
  97. /data/lib/tcx/{models → types}/trigger_method.rb +0 -0
  98. /data/lib/tcx/{models → types}/version.rb +0 -0
@@ -1,30 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Tcx
4
- class Base < Hashie::Trash
5
- include Hashie::Extensions::IgnoreUndeclared
6
-
7
- def self.parse(xml)
8
- attributes = xml.attributes.to_h
9
-
10
- xml.children.each do |child|
11
- next unless child.is_a?(Nokogiri::XML::Element)
12
-
13
- attributes[child.name] = if attributes.key?(child.name)
14
- to_array(attributes[child.name]) + [child]
15
- elsif child.children.one? && child.children.first.is_a?(Nokogiri::XML::Text)
16
- child.text
17
- else
18
- child
19
- end
20
- end
21
-
22
- new attributes
23
- end
24
-
25
- # Transform an XmlElement into [XmlElement], cannot be used with Array or causes a coercion error
26
- def self.to_array(value)
27
- value.is_a?(Array) ? value : [value]
28
- end
29
- end
30
- end
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Tcx
4
- class Cadence < Value
5
- def self.parse(node)
6
- Value.parse(node).to_i
7
- end
8
- end
9
- end
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Tcx
4
- class CourseList
5
- def self.parse(list)
6
- list.xpath('xmlns:Course').map { |el| Course.parse(el) }
7
- end
8
- end
9
- end
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Tcx
4
- class Database < Base
5
- property 'folders', from: 'Folders', transform_with: ->(arr) { Folders.parse(arr) }
6
- property 'activities', from: 'Activities', transform_with: ->(arr) { ActivityList.parse(arr) }
7
- property 'workouts', from: 'Workouts', transform_with: ->(arr) { WorkoutList.parse(arr) }
8
- property 'courses', from: 'Courses', transform_with: ->(arr) { CourseList.parse(arr) }
9
- property 'author', from: 'Author', transform_with: ->(el) { AbstractSource.parse(el) }
10
- end
11
- end
@@ -1,6 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Tcx
4
- class Extensions < Base
5
- end
6
- end
@@ -1,7 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Tcx
4
- class Folders < Base
5
- property 'folders', from: 'Folder', transform_with: ->(v) { to_array(v).map { |el| CourseFolder.parse(el) } }
6
- end
7
- end
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Tcx
4
- class HeartRateAsPercentOfMax < Value
5
- def self.parse(node)
6
- Value.parse(node).to_i
7
- end
8
- end
9
- end
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Tcx
4
- class HeartRateBpm < Value
5
- def self.parse(node)
6
- Value.parse(node).to_i
7
- end
8
- end
9
- end
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Tcx
4
- class HeartRateInBeatsPerMinute < Value
5
- def self.parse(node)
6
- Value.parse(node).to_i
7
- end
8
- end
9
- end
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Tcx
4
- class Value
5
- def self.parse(node)
6
- node.xpath('xmlns:Value').text
7
- end
8
- end
9
- end
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Tcx
4
- class WorkoutList
5
- def self.parse(list)
6
- list.xpath('xmlns:Workout').map { |el| Workout.parse(el) }
7
- end
8
- end
9
- end
data/lib/tcx/models.rb DELETED
@@ -1,40 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative 'models/base'
4
- require_relative 'models/value'
5
- require_relative 'models/abstract_source'
6
- require_relative 'models/activity'
7
- require_relative 'models/activity_list'
8
- require_relative 'models/cadence'
9
- require_relative 'models/course'
10
- require_relative 'models/course_folder'
11
- require_relative 'models/course_lap'
12
- require_relative 'models/course_list'
13
- require_relative 'models/course_point'
14
- require_relative 'models/course_point_type'
15
- require_relative 'models/courses'
16
- require_relative 'models/custom_heart_rate_zone'
17
- require_relative 'models/database'
18
- require_relative 'models/duration'
19
- require_relative 'models/extensions'
20
- require_relative 'models/folders'
21
- require_relative 'models/gender'
22
- require_relative 'models/heart_rate_as_percent_of_max'
23
- require_relative 'models/heart_rate_bpm'
24
- require_relative 'models/heart_rate_in_beats_per_minute'
25
- require_relative 'models/heart_rate_value'
26
- require_relative 'models/intensity'
27
- require_relative 'models/lap'
28
- require_relative 'models/name_key_reference'
29
- require_relative 'models/position'
30
- require_relative 'models/predefined_heart_rate_zone'
31
- require_relative 'models/sensor_state'
32
- require_relative 'models/sport'
33
- require_relative 'models/step'
34
- require_relative 'models/target'
35
- require_relative 'models/track'
36
- require_relative 'models/trackpoint'
37
- require_relative 'models/trigger_method'
38
- require_relative 'models/version'
39
- require_relative 'models/workout'
40
- require_relative 'models/workout_list'
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes