hour-ruby 0.0.1 → 0.0.2
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 +4 -4
- data/README.md +16 -3
- data/lib/hour.rb +17 -5
- data/spec/hour_spec.rb +3 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0a1be05c48e54df485856e200079e23f03e93ccdc785b9c5f20253cab6ef1918
|
4
|
+
data.tar.gz: 949992e1b0c54a94a17f964f4ad7114791ec95b83bd4ff3a8c6f15026be4ebb2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 99b789a3f010f5c95acff8bfae7d8a71a88a68d18261287d53b8b01859cdc84c0ee99dd7229c4a4a9e2d2329e3a761bf0eb17074081497bf731231238b79d668
|
7
|
+
data.tar.gz: 8bcba1a83adb64a842d9f4c51b802c003502239d93542b735508e7ef86670dd08db5de3e701c1653832d73915e5545a4cbc9f6c47cf3b455f74187bd0dbdf868
|
data/README.md
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
# About
|
2
|
+
|
3
|
+
[![Gem version][GV img]][Gem version]
|
2
4
|
[![Build status][BS img]][Build status]
|
5
|
+
[![Coverage status][CS img]][Coverage status]
|
6
|
+
[![CodeClimate status][CC img]][CodeClimate status]
|
7
|
+
[![YARD documentation][YD img]][YARD documentation]
|
3
8
|
|
4
|
-
Hour class to work with hours, minutes and seconds, convert between various units and format the output.
|
9
|
+
Hour class to work with hours, minutes and seconds, convert between various units and format the output. _Here's version of this library for Crystal: [hour-crystal](https://github.com/botanicus/hour-crystal)._
|
5
10
|
|
6
11
|
# Installation
|
7
12
|
|
@@ -11,7 +16,7 @@ gem install hour-ruby
|
|
11
16
|
|
12
17
|
# Usage
|
13
18
|
|
14
|
-
```
|
19
|
+
```ruby
|
15
20
|
require "hour"
|
16
21
|
|
17
22
|
hour = Hour.from(minutes: 85)
|
@@ -27,8 +32,16 @@ puts "The system time is #{Hour.now}!"
|
|
27
32
|
|
28
33
|
- Rubocop.
|
29
34
|
- Travis.
|
30
|
-
- Link hour-crystal.
|
31
35
|
- Release version 0.1.
|
32
36
|
|
37
|
+
[Gem version]: https://rubygems.org/gems/hour-ruby
|
33
38
|
[Build status]: https://travis-ci.org/botanicus/hour-ruby
|
39
|
+
[Coverage status]: https://coveralls.io/github/botanicus/hour-ruby
|
40
|
+
[CodeClimate status]: https://codeclimate.com/github/botanicus/hour-ruby/maintainability
|
41
|
+
[YARD documentation]: http://www.rubydoc.info/github/botanicus/hour-ruby/master
|
42
|
+
|
43
|
+
[GV img]: https://badge.fury.io/rb/hour-ruby.svg
|
34
44
|
[BS img]: https://travis-ci.org/botanicus/hour-ruby.svg?branch=master
|
45
|
+
[CS img]: https://img.shields.io/coveralls/botanicus/hour-ruby.svg
|
46
|
+
[CC img]: https://api.codeclimate.com/v1/badges/a99a88d28ad37a79dbf6/maintainability
|
47
|
+
[YD img]: http://img.shields.io/badge/yard-docs-blue.svg
|
data/lib/hour.rb
CHANGED
@@ -62,7 +62,7 @@ class Hour
|
|
62
62
|
|
63
63
|
# TODO: document and write tests.
|
64
64
|
def self.from_time(time)
|
65
|
-
self.new(
|
65
|
+
self.new(time.hour, time.min, time.sec)
|
66
66
|
end
|
67
67
|
|
68
68
|
# Build an hour instance from an hour string.
|
@@ -71,12 +71,12 @@ class Hour
|
|
71
71
|
# Hour.parse("1:00", "%h:%m?") # Will work with "1:00" or just "1".
|
72
72
|
#
|
73
73
|
# TODO: Implement me, test me and document me.
|
74
|
-
def self.parse(
|
75
|
-
|
74
|
+
def self.parse(serialised_hour, formatting_string = nil)
|
75
|
+
args = serialised_hour.split(':').map(&:to_i)
|
76
76
|
|
77
|
-
case
|
77
|
+
case args.length
|
78
78
|
when 3
|
79
|
-
self.new(*
|
79
|
+
self.new(*args)
|
80
80
|
when (0..2)
|
81
81
|
# TODO: if formatting_string ...
|
82
82
|
raise ArgumentError.new("If format is not H:M:S, formatting string must be provided.")
|
@@ -174,6 +174,18 @@ class Hour
|
|
174
174
|
Time.new(today.year, today.month, today.day, self.hours, self.minutes_over_the_hour)
|
175
175
|
end
|
176
176
|
|
177
|
+
[:==, :eql?, :<, :<=, :>, :>=, :<=>].each do |method_name|
|
178
|
+
define_method(method_name) do |anotherHour|
|
179
|
+
if anotherHour.is_a?(self.class)
|
180
|
+
self.seconds.total.send(method_name, anotherHour.seconds.total)
|
181
|
+
# elsif anotherHour.is_a?(Time)
|
182
|
+
# self.send(method_name, Hour.now)
|
183
|
+
else
|
184
|
+
raise TypeError.new("#{self.class}##{method_name} expects #{self.class} or Time object.")
|
185
|
+
end
|
186
|
+
end
|
187
|
+
end
|
188
|
+
|
177
189
|
private
|
178
190
|
def initialize_from_keyword_args(h: 0, m: 0, s: 0)
|
179
191
|
@h, @m, @s = h, m, s
|
data/spec/hour_spec.rb
CHANGED