zones 0.5.0 → 0.6.0
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/.ruby-version +1 -1
- data/lib/zones.rb +66 -0
- data/zones.gemspec +1 -1
- metadata +6 -7
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9e885735f5b158bc128438382c99bab2319a1717e3bee2582240c241c6a97d5d
|
|
4
|
+
data.tar.gz: 4ec9636d438698c2ee257904e01e8b6f2a48389fb1bfc0df06a935a031bbbe61
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c7791eeed90e65b247d6a3a2a841e6f2774f5381b4d3ab3e7c6c010e11eb7c271eb2ddeaed587275e05bbbe8c42b94d65fe6b66d7d41ce9caf82aee801fe54fd
|
|
7
|
+
data.tar.gz: 6935b6b8c8f7e9e92f7f2bdb6c30ab4f5ea65b2da7e07e7094b0b5a61aec9cb6d4510492f164015649f4fb2d2342fdc039593cd09ecec47d13b064457e622144
|
data/.ruby-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
2.5
|
|
1
|
+
2.6.5
|
data/lib/zones.rb
CHANGED
|
@@ -1,5 +1,63 @@
|
|
|
1
1
|
require "tzinfo"
|
|
2
2
|
|
|
3
|
+
# ==[ Dart uses the folllowing ]==
|
|
4
|
+
|
|
5
|
+
# /*
|
|
6
|
+
# * date ::= yeardate time_opt timezone_opt
|
|
7
|
+
# * yeardate ::= year colon_opt month colon_opt day
|
|
8
|
+
# * year ::= sign_opt digit{4,6}
|
|
9
|
+
# * colon_opt :: <empty> | ':'
|
|
10
|
+
# * sign ::= '+' | '-'
|
|
11
|
+
# * sign_opt ::= <empty> | sign
|
|
12
|
+
# * month ::= digit{2}
|
|
13
|
+
# * day ::= digit{2}
|
|
14
|
+
# * time_opt ::= <empty> | (' ' | 'T') hour minutes_opt
|
|
15
|
+
# * minutes_opt ::= <empty> | colon_opt digit{2} seconds_opt
|
|
16
|
+
# * seconds_opt ::= <empty> | colon_opt digit{2} millis_opt
|
|
17
|
+
# * micros_opt ::= <empty> | ('.' | ',') digit+
|
|
18
|
+
# * timezone_opt ::= <empty> | space_opt timezone
|
|
19
|
+
# * space_opt :: ' ' | <empty>
|
|
20
|
+
# * timezone ::= 'z' | 'Z' | sign digit{2} timezonemins_opt
|
|
21
|
+
# * timezonemins_opt ::= <empty> | colon_opt digit{2}
|
|
22
|
+
# */
|
|
23
|
+
# static final RegExp _parseFormat =
|
|
24
|
+
# RegExp(r'^([+-]?\d{4,6})-?(\d\d)-?(\d\d)' // Day part.
|
|
25
|
+
# r'(?:[ T](\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d+))?)?)?' // Time part.
|
|
26
|
+
# r'( ?[zZ]| ?([-+])(\d\d)(?::?(\d\d))?)?)?$'); // Timezone part.
|
|
27
|
+
|
|
28
|
+
class Date
|
|
29
|
+
def self.parse_str(str)
|
|
30
|
+
case str
|
|
31
|
+
when %r!^((?:19|20)\d\d)(\d\d)(\d\d)(\d\d)!
|
|
32
|
+
ymd = [$1.to_i, $2.to_i, $3.to_i]
|
|
33
|
+
when %r!^
|
|
34
|
+
(?:(0[1-9]|[12]\d|3[01]|[1-9][-/ ])[-/ ]? # $1: day
|
|
35
|
+
((?>[a-z]{3,9}))[-/ ]? # $2: month
|
|
36
|
+
((?>19|20)\d\d) # $3: year
|
|
37
|
+
| # or...
|
|
38
|
+
((?>19|20)\d\d)[-/]? # $4: year
|
|
39
|
+
(0[1-9]|1[012]|[1-9][-/])[-/]? # $5: month
|
|
40
|
+
(0[1-9]|[12]\d|3[01]|[1-9][\sT]) # $6: day
|
|
41
|
+
| # or...
|
|
42
|
+
(0[1-9]|1[012]|[1-9][-/])[-/]? # $7: month
|
|
43
|
+
(0[1-9]|[12]\d|3[01]|[1-9][-/])[-/]? # $8: day
|
|
44
|
+
((?>19|20)\d\d) # $9: year
|
|
45
|
+
)
|
|
46
|
+
!iox
|
|
47
|
+
ymd = $1 ? [$3.to_i, month_num($2), $1.to_i] : $4 ? [$4.to_i, $5.to_i, $6.to_i] : [$9.to_i, $7.to_i, $8.to_i]
|
|
48
|
+
else
|
|
49
|
+
raise "can't parse: #{str}"
|
|
50
|
+
end
|
|
51
|
+
ymd
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# parse date
|
|
55
|
+
def self.to_day(str)
|
|
56
|
+
ymd = parse_str(str)
|
|
57
|
+
out = Date.new(*ymd)
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
3
61
|
class Time
|
|
4
62
|
def self.parse_str(str, ignore_offset=false)
|
|
5
63
|
case str
|
|
@@ -95,4 +153,12 @@ class String
|
|
|
95
153
|
def to_tz!(*args)
|
|
96
154
|
Time.to_tz!(self, *args)
|
|
97
155
|
end
|
|
156
|
+
|
|
157
|
+
def to_day
|
|
158
|
+
Date.to_day(self)
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
def to_day!(fmt="%Y-%m-%d")
|
|
162
|
+
to_day.strftime(fmt)
|
|
163
|
+
end
|
|
98
164
|
end
|
data/zones.gemspec
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: zones
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.6.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Steve Shreeve
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2021-09-18 00:00:00.000000000 Z
|
|
12
12
|
dependencies: []
|
|
13
13
|
description: This gem makes it easy to work with time zones.
|
|
14
14
|
email: steve.shreeve@gmail.com
|
|
@@ -26,7 +26,7 @@ homepage: https://github.com/shreeve/zones
|
|
|
26
26
|
licenses:
|
|
27
27
|
- MIT
|
|
28
28
|
metadata: {}
|
|
29
|
-
post_install_message:
|
|
29
|
+
post_install_message:
|
|
30
30
|
rdoc_options: []
|
|
31
31
|
require_paths:
|
|
32
32
|
- lib
|
|
@@ -41,9 +41,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
41
41
|
- !ruby/object:Gem::Version
|
|
42
42
|
version: '0'
|
|
43
43
|
requirements: []
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
signing_key:
|
|
44
|
+
rubygems_version: 3.2.16
|
|
45
|
+
signing_key:
|
|
47
46
|
specification_version: 4
|
|
48
47
|
summary: Easy time parsing and conversion between time zones
|
|
49
48
|
test_files: []
|