runby_pace 0.6.99 → 0.6.100

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.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YTExYzNkNjUyZTFlOWIyNTJhOGIwMWI2ODYyMzBiNmM1ZTQ4MDRjZg==
4
+ ZjFiOGZmNjc3Njg2NTQ0MDc0Y2JkZjM1NTk5YzBjZGRmMThiN2NlOA==
5
5
  data.tar.gz: !binary |-
6
- NzU3NWVmY2M5NWE1NGM1OTUzYzUwNDQ4M2NlY2E1NGVhOTZmMmFhMQ==
6
+ ZmNjNTY2ZjQyNTc1NzEyMjVhNGI5ODUxMDYxODc2ZDczMDgxMDY3MA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MGY3N2VlYmNjOGU4NDBiMzZjNjgyNmIyMTkyYWI0YTcwMGI4N2Q3YzY0MjYy
10
- MWE3ODM5ZmFlYmFjODRlM2Y4OWQ1YmMwYjQ4ZTE2MDYwYzU5MzQ2YTc0MmM2
11
- YzNhNmEyYTE2M2JhNmY3YmJhMzdiMzEzZTZlM2RkODgxMjBlYWY=
9
+ MGZkNTkwMWFlN2E5NTU4MTMwZDlmYzI2NWE2N2Y1NjJhNjQwNTU1M2YzNjU2
10
+ Yzk4NDA3MTkzZjIyMWFjMDcwYmRiNjIxODg4Mjc0MDIxOTQxMDYyYmE1MGJl
11
+ NWIzYjA1ZjdiMDZjNmFmMzA3NWUwZjQ4ZjcxZjZlMGM2MGZjYjk=
12
12
  data.tar.gz: !binary |-
13
- OTZlMjZiNmExODQwNjYxNmFkM2QxNzVlNzZlNDBmNzkxNmEzZTdmZjkyNjYx
14
- NDQ1MmU1YThhNzljMWYzY2EzZTAyMDRlNzY0NmYxZjY1M2QxYjg2M2MwNTNm
15
- MmVlYjU2NmM3NTU5OTQzNzE0MGEwYTYwM2Q4NDQyYTU0OGUyYzU=
13
+ NjUxNTdlOTJhNTcyODg5ZWQ3Nzg3YWZiMDQzNjdjYWE0M2QwMGEyNWQzOTFl
14
+ NWNlZjcwYzMyMWJhYTMxZmViN2UxOWI3NGUyOTFlYWQzODY2ODg3MWFkYzNm
15
+ ZjA2ZDM0NmJkODNhYmFjZDBkZmY3MmM1ZTE0NGJhYTkzMGM3MzM=
@@ -59,12 +59,17 @@ module Runby
59
59
 
60
60
  def pluralized_uom
61
61
  uom_description = @uom.description.downcase
62
- if @multiplier > 1 then
62
+ if @multiplier > 1
63
63
  uom_description += 's'
64
64
  end
65
65
  uom_description
66
66
  end
67
67
 
68
+ def ==(other)
69
+ raise "Cannot compare Runby::Distance to #{other.class}" unless other.is_a? Distance
70
+ @uom == other.uom && @multiplier == other.multiplier
71
+ end
72
+
68
73
  private
69
74
 
70
75
  def init_from_clone(distance)
@@ -47,6 +47,16 @@ module Runby
47
47
  @@_uom_definitions.has_key?(symbol)
48
48
  end
49
49
 
50
+ def ==(other)
51
+ if other.is_a? DistanceUnit
52
+ @symbol == other.symbol
53
+ elsif other.is_a? String
54
+ @symbol == DistanceUnit.parse(other)
55
+ else
56
+ raise "Error comparing DistanceUnit to #{other.class}"
57
+ end
58
+ end
59
+
50
60
  @@_uom_definitions =
51
61
  { km: { description: 'Kilometer', conversion_factor: 1.0, synonyms: %w(k km kms kilometer kilometers) },
52
62
  m: { description: 'Meter', conversion_factor: 0.001, synonyms: %w(m meter meters) },
@@ -1,15 +1,49 @@
1
1
  module Runby
2
2
  # Represents a pace consisting of a distance and a time in which that distance was covered
3
3
  class Pace
4
+ include Comparable
5
+
4
6
  attr_reader :time, :distance
5
7
 
6
- def initialize(time, distance = '1K')
7
- @time = Runby::RunbyTime.parse(time)
8
- @distance = Runby::Distance.new(distance)
8
+ def initialize(time_or_pace, distance = '1K')
9
+ if time_or_pace.is_a? Pace
10
+ init_from_clone time_or_pace
11
+ else
12
+ @time = Runby::RunbyTime.parse(time_or_pace)
13
+ @distance = Runby::Distance.new(distance)
14
+ end
9
15
  end
10
16
 
11
17
  def to_s
12
18
  "#{time} per #{distance.pluralized_uom}"
13
19
  end
20
+
21
+ def <=>(other)
22
+ if other.is_a? Pace
23
+ return nil unless @distance == other.distance
24
+ @time <=> other.time
25
+ elsif other.is_a? RunbyTime
26
+ @time <=> other.time
27
+ elsif other.is_a? String
28
+ @time <=> RunbyTime.parse(other)
29
+ end
30
+ end
31
+
32
+ def almost_equals?(other_pace, tolerance_time = '00:01')
33
+ if other_pace.is_a?(String)
34
+ other_pace = Pace.parse(other_pace)
35
+ end
36
+ tolerance = RunbyTime.new(tolerance_time)
37
+ # TODO: Clean this up by adding +- to Pace
38
+ self.time >= (other_pace.time - tolerance) && self.time <= (other_pace.time + tolerance)
39
+ end
40
+
41
+ private
42
+
43
+ def init_from_clone(other_pace)
44
+ raise "#{other_pace} is not a Runby::Pace" unless other_pace.is_a? Pace
45
+ @time = other_pace.time
46
+ @distance = other_pace.distance
47
+ end
14
48
  end
15
49
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: runby_pace
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.99
4
+ version: 0.6.100
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ty Walls
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-10-18 00:00:00.000000000 Z
11
+ date: 2016-10-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -100,7 +100,7 @@ homepage: https://github.com/tygerbytes/runby-pace
100
100
  licenses:
101
101
  - MIT
102
102
  metadata:
103
- commit-hash: 844c69d489d5a69e0df6749bfc466f98e85ba755
103
+ commit-hash: 5e175da0082d9fb644dfd56117271a8e51928cb2
104
104
  post_install_message:
105
105
  rdoc_options: []
106
106
  require_paths: