et-orbi 1.2.2 → 1.2.6
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/CHANGELOG.md +21 -0
- data/CREDITS.md +2 -0
- data/LICENSE.txt +1 -1
- data/Makefile +1 -1
- data/README.md +50 -3
- data/et-orbi.gemspec +1 -1
- data/lib/et-orbi/make.rb +39 -19
- data/lib/et-orbi/time.rb +1 -1
- data/lib/et-orbi/zones.rb +1 -1
- data/lib/et-orbi.rb +1 -1
- metadata +9 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 187fde2e940f4644e296f434208de71ceeced5bacd257fcc7a799e08e5b3fc2f
|
4
|
+
data.tar.gz: 7c9425490c4cb365453031032faa159fe1111d5bc606a2ad88d7a3cede16d660
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 00f33cb173d79780c87e68d16e4ba64187f37ac9bde5eeafef7169846a597bf1708eeb6cf053d18b74a3030d84c0bfa8ced97898edc9ec5a4886b8470e41d31c
|
7
|
+
data.tar.gz: a5878f8ae60c18404c53d38a58b347916236138af79c90c8a35fb170fc559e85d89336b08b6ea4453a9001b9a4405c8df8aeeed126202f4e6d379d2a443e20ca
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,27 @@
|
|
2
2
|
# CHANGELOG.md
|
3
3
|
|
4
4
|
|
5
|
+
## et-orbi 1.2.6 released 2021-10-30
|
6
|
+
|
7
|
+
- Favour IANA timezone name in EtOrbi.make_time
|
8
|
+
|
9
|
+
|
10
|
+
## et-orbi 1.2.5 released 2021-09-18
|
11
|
+
|
12
|
+
- Re-use the DateTime.parse result
|
13
|
+
|
14
|
+
|
15
|
+
## et-orbi 1.2.4 released 2020-03-18
|
16
|
+
|
17
|
+
- Do not call Chronic (even if enabled) from make_from_array, gh-28
|
18
|
+
- Be modern, use strftime '%6N', join Ruby 2.x :-)
|
19
|
+
|
20
|
+
|
21
|
+
## et-orbi 1.2.3 released 2020-03-06
|
22
|
+
|
23
|
+
- Introduce EtOrbi.chronic_enabled = false and EtOrbi.chronic_enabled?, gh-26
|
24
|
+
|
25
|
+
|
5
26
|
## et-orbi 1.2.2 released 2019-08-19
|
6
27
|
|
7
28
|
- Let EoTime#== accept EoTime or ::Time instances, gh-20, gh-7
|
data/CREDITS.md
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
|
2
2
|
# et-orbi credits
|
3
3
|
|
4
|
+
* adank92 (https://github.com/adank92) https://github.com/ondrejbartas/sidekiq-cron/issues/276 gh-28
|
5
|
+
* Stan Hu (https://github.com/stanhu) Chronic toubles, gh-24, gh-26, etc
|
4
6
|
* d-m-u (https://github.com/d-m-u) EoTime#==(Time), gh-20, gh-7
|
5
7
|
* Vais Salikhov (https://github.com/vais) missing US timezone aliases, gh-18 gh-19
|
6
8
|
* Wenhui Wang https://github.com/w11th .parse vs Chronic+ActiveSupport, fugit 11
|
data/LICENSE.txt
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
|
2
|
-
Copyright (c) 2017-
|
2
|
+
Copyright (c) 2017-2021, John Mettraux, jmettraux+flor@gmail.com
|
3
3
|
|
4
4
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
5
5
|
of this software and associated documentation files (the "Software"), to deal
|
data/Makefile
CHANGED
data/README.md
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
|
2
2
|
# et-orbi
|
3
3
|
|
4
|
-
[](https://ci.appveyor.com/project/jmettraux/et-orbi)
|
4
|
+
[](https://github.com/floraison/et-orbi/actions)
|
6
5
|
[](http://badge.fury.io/rb/et-orbi)
|
7
6
|
[](https://gitter.im/floraison/fugit?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
8
7
|
|
@@ -16,6 +15,8 @@ require 'et-orbi'
|
|
16
15
|
|
17
16
|
EtOrbi.now
|
18
17
|
# => #<EtOrbi::EoTime:0x007f94d94 ...>
|
18
|
+
EtOrbi.now('Asia/Singapore')
|
19
|
+
# => #<EtOrbi::EoTime:0x39c96e48 @time=nil, @zone=#<TZInfo::DataTimezone: Asia/Singapore>...>
|
19
20
|
EtOrbi.parse('2017-12-13 13:00:00 America/Jamaica')
|
20
21
|
# => #<EtOrbi::EoTime:0x007f94d90 @zone=#<TZInfo::DataTimezone: America/Jamaica>...>
|
21
22
|
EtOrbi.make_time(Time.now)
|
@@ -37,7 +38,7 @@ EtOrbi.parse('1970-01-01 03:00:00 Europe/Moscow')
|
|
37
38
|
```
|
38
39
|
|
39
40
|
More about `EtOrbi::EoTime` instances:
|
40
|
-
```
|
41
|
+
```ruby
|
41
42
|
eot = EtOrbi::EoTime.new(0, 'Europe/Moscow')
|
42
43
|
|
43
44
|
eot.to_local_time.class # => Time
|
@@ -69,6 +70,52 @@ EtOrbi.platform_info
|
|
69
70
|
# astz: ActiveSupport provided Time.zone
|
70
71
|
```
|
71
72
|
|
73
|
+
### Chronic integration
|
74
|
+
|
75
|
+
By default, et-orbi relies on [Chronic](https://github.com/mojombo/chronic) to parse strings like "tomorrow" or "friday 1pm", if `Chronic` is present.
|
76
|
+
|
77
|
+
```ruby
|
78
|
+
EtOrbi.parse('tomorrow')
|
79
|
+
# => #<EtOrbi::EoTime:0x007fbc6aa8a560
|
80
|
+
# @seconds=1575687600.0,
|
81
|
+
# @zone=#<TZInfo::TimezoneProxy: Asia/Tokyo>,
|
82
|
+
# @time=nil>
|
83
|
+
EtOrbi.parse('tomorrow').to_s
|
84
|
+
# => "2019-12-07 12:00:00 +0900"
|
85
|
+
```
|
86
|
+
|
87
|
+
This is a poor design choice I replicated from [rufus-scheduler](https://github.com/jmettraux/rufus-scheduler).
|
88
|
+
|
89
|
+
Of course this leads to [issues](https://gitlab.com/gitlab-org/gitlab/issues/37014).
|
90
|
+
|
91
|
+
It's probably better to have Chronic do its work outside of et-orbi, like in:
|
92
|
+
```ruby
|
93
|
+
EtOrbi.parse(Chronic.parse('tomorrow').to_s).to_s
|
94
|
+
# => "2019-12-07 12:00:00 +0900"
|
95
|
+
```
|
96
|
+
|
97
|
+
If one has Chronic present in their project but doesn't want it to interfere with et-orbi, it can be disabled at `parse` call:
|
98
|
+
```ruby
|
99
|
+
EtOrbi.parse('tomorrow')
|
100
|
+
# => #<EtOrbi::EoTime:0x007ffb5b2a2390
|
101
|
+
# @seconds=1575687600.0,
|
102
|
+
# @zone=#<TZInfo::TimezoneProxy: Asia/Tokyo>,
|
103
|
+
# @time=nil>
|
104
|
+
EtOrbi.parse('tomorrow', enable_chronic: false)
|
105
|
+
# ArgumentError: No time information in "tomorrow"
|
106
|
+
# from /home/jmettraux/w/et-orbi/lib/et-orbi/make.rb:31:in `rescue in parse'
|
107
|
+
```
|
108
|
+
or at the et-orbi level:
|
109
|
+
```ruby
|
110
|
+
irb(main):007:0> EtOrbi.chronic_enabled = false
|
111
|
+
# => false
|
112
|
+
irb(main):008:0> EtOrbi.chronic_enabled?
|
113
|
+
# => false
|
114
|
+
EtOrbi.parse('tomorrow')
|
115
|
+
# ArgumentError: No time information in "tomorrow"
|
116
|
+
# from /home/jmettraux/w/et-orbi/lib/et-orbi/make.rb:31:in `rescue in parse'
|
117
|
+
```
|
118
|
+
|
72
119
|
### Rails?
|
73
120
|
|
74
121
|
If Rails is present, `Time.zone` is provided and EtOrbi will use it, unless `ENV['TZ']` is set to a valid timezone name. Setting `ENV['TZ']` to nil can give back precedence to `Time.zone`.
|
data/et-orbi.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |s|
|
|
10
10
|
s.platform = Gem::Platform::RUBY
|
11
11
|
s.authors = [ 'John Mettraux' ]
|
12
12
|
s.email = [ 'jmettraux+flor@gmail.com' ]
|
13
|
-
s.homepage = '
|
13
|
+
s.homepage = 'https://github.com/floraison/et-orbi'
|
14
14
|
s.license = 'MIT'
|
15
15
|
s.summary = 'time with zones'
|
16
16
|
|
data/lib/et-orbi/make.rb
CHANGED
@@ -1,6 +1,15 @@
|
|
1
1
|
|
2
2
|
module EtOrbi
|
3
3
|
|
4
|
+
@chronic_enabled = true
|
5
|
+
#
|
6
|
+
def self.chronic_enabled?
|
7
|
+
@chronic_enabled
|
8
|
+
end
|
9
|
+
def self.chronic_enabled=(b)
|
10
|
+
@chronic_enabled = b
|
11
|
+
end
|
12
|
+
|
4
13
|
class << self
|
5
14
|
|
6
15
|
def now(zone=nil)
|
@@ -12,28 +21,29 @@ module EtOrbi
|
|
12
21
|
|
13
22
|
str, str_zone = extract_zone(str)
|
14
23
|
|
15
|
-
if
|
16
|
-
|
24
|
+
if t = chronic_parse(str, opts)
|
17
25
|
str = [ t.strftime('%F %T'), str_zone ].compact.join(' ')
|
18
26
|
end
|
19
27
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
#
|
28
|
-
|
28
|
+
dt =
|
29
|
+
begin
|
30
|
+
DateTime.parse(str)
|
31
|
+
rescue
|
32
|
+
fail ArgumentError, "No time information in #{str.inspect}"
|
33
|
+
end
|
34
|
+
#end if RUBY_VERSION < '1.9.0'
|
35
|
+
#end if RUBY_VERSION < '2.0.0'
|
36
|
+
#
|
37
|
+
# is necessary since Time.parse('xxx') in Ruby < 1.9 yields `now`
|
29
38
|
|
30
39
|
zone =
|
31
40
|
opts[:zone] ||
|
32
41
|
get_tzone(str_zone) ||
|
33
42
|
determine_local_tzone
|
34
43
|
|
35
|
-
local = Time.parse(str)
|
36
|
-
secs = zone.local_to_utc(local).to_f
|
44
|
+
#local = Time.parse(str)
|
45
|
+
#secs = zone.local_to_utc(local).to_f
|
46
|
+
secs = zone.local_to_utc(dt).to_time.to_f
|
37
47
|
|
38
48
|
EoTime.new(secs, zone)
|
39
49
|
end
|
@@ -60,13 +70,24 @@ module EtOrbi
|
|
60
70
|
|
61
71
|
protected
|
62
72
|
|
73
|
+
def chronic_parse(str, opts)
|
74
|
+
|
75
|
+
return false unless defined?(::Chronic)
|
76
|
+
return false unless opts.fetch(:enable_chronic) { self.chronic_enabled? }
|
77
|
+
|
78
|
+
os = opts
|
79
|
+
.select { |k, _| Chronic::Parser::DEFAULT_OPTIONS.keys.include?(k) }
|
80
|
+
|
81
|
+
::Chronic.parse(str, os)
|
82
|
+
end
|
83
|
+
|
63
84
|
def make_from_time(t, zone)
|
64
85
|
|
65
86
|
z =
|
66
87
|
zone ||
|
67
88
|
get_as_tzone(t) ||
|
68
|
-
|
69
|
-
|
89
|
+
get_local_tzone(t) ||
|
90
|
+
get_tzone(t.zone)
|
70
91
|
|
71
92
|
z ||= t.zone
|
72
93
|
# pass the abbreviation anyway,
|
@@ -86,10 +107,9 @@ module EtOrbi
|
|
86
107
|
|
87
108
|
def make_from_array(a, zone)
|
88
109
|
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
make_from_string(s, zone)
|
110
|
+
parse(
|
111
|
+
Time.utc(*a).strftime('%Y-%m-%d %H:%M:%S.%6N'), # not a Chronic string
|
112
|
+
zone: zone, enable_chronic: false)
|
93
113
|
end
|
94
114
|
|
95
115
|
def make_from_string(s, zone)
|
data/lib/et-orbi/time.rb
CHANGED
data/lib/et-orbi/zones.rb
CHANGED
data/lib/et-orbi.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: et-orbi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Mettraux
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-10-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: tzinfo
|
@@ -73,15 +73,15 @@ files:
|
|
73
73
|
- lib/et-orbi/zones.rb
|
74
74
|
- lib/et_orbi.rb
|
75
75
|
- lib/etorbi.rb
|
76
|
-
homepage:
|
76
|
+
homepage: https://github.com/floraison/et-orbi
|
77
77
|
licenses:
|
78
78
|
- MIT
|
79
79
|
metadata:
|
80
|
-
changelog_uri:
|
81
|
-
documentation_uri:
|
82
|
-
bug_tracker_uri:
|
83
|
-
homepage_uri:
|
84
|
-
source_code_uri:
|
80
|
+
changelog_uri: https://github.com/floraison/et-orbi/blob/master/CHANGELOG.md
|
81
|
+
documentation_uri: https://github.com/floraison/et-orbi
|
82
|
+
bug_tracker_uri: https://github.com/floraison/et-orbi/issues
|
83
|
+
homepage_uri: https://github.com/floraison/et-orbi
|
84
|
+
source_code_uri: https://github.com/floraison/et-orbi
|
85
85
|
post_install_message:
|
86
86
|
rdoc_options: []
|
87
87
|
require_paths:
|
@@ -97,8 +97,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
97
97
|
- !ruby/object:Gem::Version
|
98
98
|
version: '0'
|
99
99
|
requirements: []
|
100
|
-
|
101
|
-
rubygems_version: 2.7.6
|
100
|
+
rubygems_version: 3.1.2
|
102
101
|
signing_key:
|
103
102
|
specification_version: 4
|
104
103
|
summary: time with zones
|