time_calc 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: '079469c094dfa9462e10854c885d962aeb8f047c'
4
- data.tar.gz: c7f5d1d7d6f665b490ec48bb2d85a4830a030761
2
+ SHA256:
3
+ metadata.gz: 277cc038ff0318d9b8aacb51c60ae7fda0730e24e913f89fd145dc4abb8420c4
4
+ data.tar.gz: 233d29d03a7d4be6bf6656ca567b16066096af9c4a47f102dc9aafdd52691759
5
5
  SHA512:
6
- metadata.gz: ba7158a430d4968675210fe5e981d203178d59aca4c2aadfd0de26fa856fff23740aa4b6280b9ce67d6e507f5c78ca8a1ee519cd0d74ffb5a6678fecd66209fd
7
- data.tar.gz: c874789108c36d802ea023a7ea6dbb0956d4f835a05ca2318232f0cbddee5b3f942ded7f37d1373eec191ad7ab6b09aaca5df1a354db204e83b7a6a22d345bd7
6
+ metadata.gz: 1977f5b4e572a304ef4ccb440c1b7ecc16cfe922d7e34f1163b85507cc4143fcfb8607c1a5f8b66b677986b6926af97cbd548560f0c4c056aabcb6e9faa34de1
7
+ data.tar.gz: 0f53ed256fa451adb9f30ccf256ac957c5370f0d0cbeba8d8dbe648066051ccbcea3ca45475a0a1234cd092014dd0059a14a21aa088f416b94c4efa341ad9295
data/Changelog.md ADDED
@@ -0,0 +1,10 @@
1
+ # TimeCalc changelog
2
+
3
+ ## 0.0.2 / 2019-07-08
4
+
5
+ * Alias `TimeCalc[tm]` for those who disapporve on `TimeCalc.(tm)`;
6
+ * More accurate zone infor preservation when time is in local timezone of current machine.
7
+
8
+ ## 0.0.1 / 2019-07-05
9
+
10
+ First release. Rip-off of [time_math2](https://github.com/zverok/time_math2) with full API redesign and dropping of some less-used features ("resamplers").
@@ -28,10 +28,8 @@ class TimeCalc
28
28
 
29
29
  def merge_time(value, **attrs)
30
30
  _merge(value, **attrs)
31
- .tap { |h|
32
- h[:sec] += h.delete(:subsec)
33
- h[:utc_offset] = value.zone if value.zone.respond_to?(:utc_to_local) # Ruby 2.6 real timezones
34
- }
31
+ .tap { |h| h[:sec] += h.delete(:subsec) }
32
+ .then { |h| fix_time_zone(h, value) }
35
33
  .values.then { |components| Time.new(*components) }
36
34
  end
37
35
 
@@ -50,6 +48,20 @@ class TimeCalc
50
48
 
51
49
  private
52
50
 
51
+ REAL_TIMEZONE = ->(z) { z.respond_to?(:utc_to_local) } # Ruby 2.6 real timezones
52
+
53
+ def fix_time_zone(attrs, origin)
54
+ case origin.zone
55
+ when nil, '' # "" is JRuby's way to say "no zone known"
56
+ attrs
57
+ when String
58
+ # Y U NO Hash#except, Ruby???
59
+ attrs.slice(*attrs.keys.-([:utc_offset])) # Then it would be default, then it would set system's zone
60
+ when REAL_TIMEZONE
61
+ attrs.merge(utc_offset: origin.zone) # When passed in place of utc_offset, timezone object becomes Time's zone
62
+ end
63
+ end
64
+
53
65
  def _merge(value, attrs)
54
66
  attr_names = ATTRS.fetch(value.class)
55
67
  attr_names.to_h { |u| [u, value.public_send(u)] }.merge(**attrs.slice(*attr_names))
@@ -2,5 +2,5 @@
2
2
 
3
3
  class TimeCalc
4
4
  # @private
5
- VERSION = '0.0.1'
5
+ VERSION = '0.0.2'
6
6
  end
data/lib/time_calc.rb CHANGED
@@ -60,6 +60,7 @@ require_relative 'time_calc/value'
60
60
  class TimeCalc
61
61
  class << self
62
62
  alias call new
63
+ alias [] new
63
64
 
64
65
  # Shortcut for `TimeCalc.(Time.now)`
65
66
  # @return [TimeCalc]
@@ -118,6 +119,9 @@ class TimeCalc
118
119
  # ```ruby
119
120
  # TimeCalc.(Time.now).round(:hour)
120
121
  # # => 2019-07-03 23:00:00 +0300
122
+ #
123
+ # # There is another shortcut for those who disapprove on `.()`
124
+ # TimeCalc[Time.now].+(1, :month)
121
125
  # ```
122
126
  #
123
127
  # See {.from} if you need to perform several math operations on same value.
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: time_calc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Victor Shepelev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-07-06 00:00:00.000000000 Z
11
+ date: 2019-07-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: backports
@@ -173,6 +173,7 @@ executables: []
173
173
  extensions: []
174
174
  extra_rdoc_files: []
175
175
  files:
176
+ - Changelog.md
176
177
  - LICENSE.txt
177
178
  - README.md
178
179
  - lib/time_calc.rb
@@ -203,8 +204,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
203
204
  - !ruby/object:Gem::Version
204
205
  version: '0'
205
206
  requirements: []
206
- rubyforge_project:
207
- rubygems_version: 2.6.14
207
+ rubygems_version: 3.0.3
208
208
  signing_key:
209
209
  specification_version: 4
210
210
  summary: Easy time math