calcpace 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 11ad12749e77c35206d4753b60f3db604ea548ab75724d1602606c9cb9eca196
4
+ data.tar.gz: fb65325f6210995dd7f64f0b1707e328a77e08b83a85dbfc0644bec1de7e6548
5
+ SHA512:
6
+ metadata.gz: 61b82828b6d43b293744526ac4f34e434df820c19be0a8378e3cbfbe0995e357aaefb6a1caedb50831f5b7c81a9776d64ac599a5a3e858979b7b549737a6d5b9
7
+ data.tar.gz: e4d9c623fbf2c0a9ab4d9953cadbed377b7867a3c3b0be494fd572860bf467c5ae88cfbd80d038e4157fcea44b799f2cc4d476598a6f621b2d85057fca51958e
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Calculator
4
+ def pace(time, distance)
5
+ check_digits(time, distance)
6
+ convert_to_clocktime(convert_to_seconds(time) / distance.to_f)
7
+ end
8
+
9
+ def total_time(pace, distance)
10
+ check_digits(pace, distance)
11
+ convert_to_clocktime(convert_to_seconds(pace) * distance.to_f)
12
+ end
13
+
14
+ def distance(time, pace)
15
+ check_digits_time(time)
16
+ check_digits_time(pace)
17
+ convert_to_seconds(time).to_f / convert_to_seconds(pace).round(2)
18
+ end
19
+
20
+ def convert_distance(distance, unit)
21
+ check_digits_distance(distance)
22
+ check_unit(unit)
23
+ convert(distance, unit)
24
+ end
25
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Checker
4
+ def check_digits(time, distance)
5
+ check_digits_time(time)
6
+ check_digits_distance(distance)
7
+ end
8
+
9
+ def check_digits_distance(distance)
10
+ raise 'It must be a X.X positive number' unless distance.positive?
11
+ end
12
+
13
+ def check_digits_time(time_string)
14
+ raise 'It must be a XX:XX:XX time' unless time_string =~ /\d{0,2}(:)*?\d{1,2}(:)\d{1,2}/
15
+ end
16
+
17
+ def check_unit(unit)
18
+ raise 'It must be km or mi' unless %w[km mi].include?(unit)
19
+ end
20
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Converter
4
+ def convert_to_seconds(time)
5
+ hour, minute, seconds = time.split(':').map(&:to_i)
6
+ (hour * 3600) + (minute * 60) + seconds
7
+ end
8
+
9
+ def convert_to_clocktime(seconds)
10
+ Time.at(seconds).utc.strftime('%H:%M:%S')
11
+ end
12
+
13
+ # tem que chamar as checagens de digitos antes de chamar o convert_distance
14
+ def convert(distance, unit)
15
+ case unit
16
+ when 'km'
17
+ (distance * 0.621371).round(2)
18
+ when 'mi'
19
+ (distance * 1.60934).round(2)
20
+ end
21
+ end
22
+ end
data/lib/calcpace.rb ADDED
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'calcpace/calculator'
4
+ require_relative 'calcpace/checker'
5
+ require_relative 'calcpace/converter'
6
+
7
+ class Calcpace
8
+ include Calculator
9
+ include Checker
10
+ include Converter
11
+
12
+ def initialize; end
13
+ end
metadata ADDED
@@ -0,0 +1,47 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: calcpace
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Joao Gilberto Saraiva
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2024-05-25 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Calculate pace, time, distance, and convert distances for running and
14
+ cycling.
15
+ email: joaogilberto@tuta.io
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/calcpace.rb
21
+ - lib/calcpace/calculator.rb
22
+ - lib/calcpace/checker.rb
23
+ - lib/calcpace/converter.rb
24
+ homepage: https://github.com/0jonjo/calcpace
25
+ licenses:
26
+ - MIT
27
+ metadata: {}
28
+ post_install_message:
29
+ rdoc_options: []
30
+ require_paths:
31
+ - lib
32
+ required_ruby_version: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: '0'
37
+ required_rubygems_version: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ requirements: []
43
+ rubygems_version: 3.2.33
44
+ signing_key:
45
+ specification_version: 4
46
+ summary: Calcpace
47
+ test_files: []