et-orbi 1.2.2 → 1.2.6
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
-
[![
|
5
|
-
[![Build status](https://ci.appveyor.com/api/projects/status/6tbo9lk9qdor8ipl?svg=true)](https://ci.appveyor.com/project/jmettraux/et-orbi)
|
4
|
+
[![tests](https://github.com/floraison/et-orbi/workflows/test/badge.svg)](https://github.com/floraison/et-orbi/actions)
|
6
5
|
[![Gem Version](https://badge.fury.io/rb/et-orbi.svg)](http://badge.fury.io/rb/et-orbi)
|
7
6
|
[![Join the chat at https://gitter.im/floraison/fugit](https://badges.gitter.im/floraison/fugit.svg)](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
|