go_time 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +13 -2
- data/exe/gotime +9 -0
- data/lib/go_time/convert_table.rb +80 -81
- data/lib/go_time/ext/ja.rb +130 -0
- data/lib/go_time/refine.rb +7 -9
- data/lib/go_time/strftime.rb +11 -11
- data/lib/go_time/version.rb +1 -3
- data/lib/go_time.rb +16 -11
- data/sig/go_time.rbs +23 -0
- metadata +8 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4c88d500abb89a086a286c4b5047e410698d50a1917584953be6f16b6e91d91d
|
4
|
+
data.tar.gz: e1c296ab35fff78ac469519e71eab6f86c4911f2c30247ccf87e6082264d306e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a708b3775da86dfa900a1fc114acf1cfe95de36ad3fed214c9279232fbf74c990a3a2e27458184803bc7366757ef28cd2c05051911081ca4b17f26cf5b50f535
|
7
|
+
data.tar.gz: fbfc04046241439299223854ead51cf2c60ad4327576a3c66920078f8c3d7b9358fdbd85226aebcc530b25388a1d3e251bb400d1fcbc6072ec987574ee5efd22
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# GoTime - formats Time like Golang
|
2
2
|
|
3
|
-
Do you remember the format of strftime? Wouldn't you like to use a concrete and understandable format
|
3
|
+
Do you remember the format of strftime? Wouldn't you like to use a concrete and understandable format for example "01/02 03:04:05PM '06 -0700" like in the Golang?
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
@@ -46,7 +46,18 @@ time.strftime("Mon Jan _2 15:04:05 2006")
|
|
46
46
|
# => "Sun Mar 4 17:06:07 2012"
|
47
47
|
```
|
48
48
|
|
49
|
-
For more information, please refer to the [Golang source code](https://golang.org/src/time/format.go).
|
49
|
+
For more information about format, please refer to the [Golang source code](https://golang.org/src/time/format.go).
|
50
|
+
|
51
|
+
## Extensions
|
52
|
+
|
53
|
+
GoTime has extensions that support date and time representations in various languages.
|
54
|
+
|
55
|
+
```ruby
|
56
|
+
require "go_time/ext/ja" # Japanese
|
57
|
+
time = Time.utc(2019, 5, 6, 7, 8, 9)
|
58
|
+
time.strftime("平成十八年(二〇〇六年)一月二日(火) 午後三時四分五秒")
|
59
|
+
# => "令和元年(二〇一九年)五月六日(月) 午前七時八分九秒"
|
60
|
+
```
|
50
61
|
|
51
62
|
## Development
|
52
63
|
|
data/exe/gotime
ADDED
@@ -1,81 +1,80 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module GoTime
|
4
|
-
BASIC_CONVERT_TABLE = {
|
5
|
-
"2006" => "%Y",
|
6
|
-
"06" => "%y",
|
7
|
-
"15" => "%H",
|
8
|
-
"03" => "%I",
|
9
|
-
"3" => "%-I",
|
10
|
-
"January" => "%B",
|
11
|
-
"Jan" => "%b",
|
12
|
-
"01" => "%m",
|
13
|
-
"1" => "%-m",
|
14
|
-
"Monday" => "%A",
|
15
|
-
"Mon" => "%a",
|
16
|
-
"__2" => "%_j",
|
17
|
-
"002" => "%j",
|
18
|
-
"_2" => "%e",
|
19
|
-
"02" => "%d",
|
20
|
-
"2" => "%-d",
|
21
|
-
"04" => "%M",
|
22
|
-
"4" => "%-M",
|
23
|
-
"05" => "%S",
|
24
|
-
"5" => "%-S",
|
25
|
-
"PM" => "%p",
|
26
|
-
"pm" => "%P",
|
27
|
-
"MST" => "%Z",
|
28
|
-
"-07:00:00" => "%::z",
|
29
|
-
"-07:00" => "%:z",
|
30
|
-
"-0700" => "%z",
|
31
|
-
".000000000" => ".%9N",
|
32
|
-
".00000000" => ".%8N",
|
33
|
-
".0000000" => ".%7N",
|
34
|
-
".000000" => ".%6N",
|
35
|
-
".00000" => ".%5N",
|
36
|
-
".0000" => ".%4N",
|
37
|
-
".000" => ".%3N",
|
38
|
-
".00" => ".%2N",
|
39
|
-
".0" => ".%1N",
|
40
|
-
",000000000" => ",%9N",
|
41
|
-
",00000000" => ",%8N",
|
42
|
-
",0000000" => ",%7N",
|
43
|
-
",000000" => ",%6N",
|
44
|
-
",00000" => ",%5N",
|
45
|
-
",0000" => ",%4N",
|
46
|
-
",000" => ",%3N",
|
47
|
-
",00" => ",%2N",
|
48
|
-
",0" => ",%1N"
|
49
|
-
}.freeze
|
50
|
-
BASIC_CONVERT_REGEXP = Regexp.union(BASIC_CONVERT_TABLE.keys)
|
51
|
-
|
52
|
-
@convert_table = {
|
53
|
-
"Z07:00:00" => ->(t, _s) { t.utc? ? "Z" : t.strftime("%::z") },
|
54
|
-
"Z07:00" => ->(t, _s) { t.utc? ? "Z" : t.strftime("%:z") },
|
55
|
-
"Z070000" => ->(t, _s) { t.utc? ? "Z" : t.strftime("%::z").delete(":") },
|
56
|
-
"Z0700" => ->(t, _s) { t.utc? ? "Z" : t.strftime("%z") },
|
57
|
-
"Z07" => ->(t, _s) { t.utc? ? "Z" : t.strftime("%z").slice(0, 3) },
|
58
|
-
"-070000" => ->(t, _s) { t.strftime("%::z").delete(":") }
|
59
|
-
}.merge(BASIC_CONVERT_TABLE).merge({
|
60
|
-
"-07" => ->(t, _s) { t.strftime("%z").slice(0, 3) }
|
61
|
-
})
|
62
|
-
@convert_table[".999999999"] = ->(t, s) { s[0] + t.strftime("%#{s.length - 1}N").sub(/0+$/, "") }
|
63
|
-
@convert_table[".99999999"] = @convert_table[".999999999"]
|
64
|
-
@convert_table[".9999999"] = @convert_table[".999999999"]
|
65
|
-
@convert_table[".999999"] = @convert_table[".999999999"]
|
66
|
-
@convert_table[".99999"] = @convert_table[".999999999"]
|
67
|
-
@convert_table[".9999"] = @convert_table[".999999999"]
|
68
|
-
@convert_table[".999"] = @convert_table[".999999999"]
|
69
|
-
@convert_table[".99"] = @convert_table[".999999999"]
|
70
|
-
@convert_table[".9"] = @convert_table[".999999999"]
|
71
|
-
@convert_table[",999999999"] = @convert_table[".999999999"]
|
72
|
-
@convert_table[",99999999"] = @convert_table[".999999999"]
|
73
|
-
@convert_table[",9999999"] = @convert_table[".999999999"]
|
74
|
-
@convert_table[",999999"] = @convert_table[".999999999"]
|
75
|
-
@convert_table[",99999"] = @convert_table[".999999999"]
|
76
|
-
@convert_table[",9999"] = @convert_table[".999999999"]
|
77
|
-
@convert_table[",999"] = @convert_table[".999999999"]
|
78
|
-
@convert_table[",99"] = @convert_table[".999999999"]
|
79
|
-
@convert_table[",9"] = @convert_table[".999999999"]
|
80
|
-
|
81
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module GoTime
|
4
|
+
BASIC_CONVERT_TABLE = {
|
5
|
+
"2006" => "%Y",
|
6
|
+
"06" => "%y",
|
7
|
+
"15" => "%H",
|
8
|
+
"03" => "%I",
|
9
|
+
"3" => "%-I",
|
10
|
+
"January" => "%B",
|
11
|
+
"Jan" => "%b",
|
12
|
+
"01" => "%m",
|
13
|
+
"1" => "%-m",
|
14
|
+
"Monday" => "%A",
|
15
|
+
"Mon" => "%a",
|
16
|
+
"__2" => "%_j",
|
17
|
+
"002" => "%j",
|
18
|
+
"_2" => "%e",
|
19
|
+
"02" => "%d",
|
20
|
+
"2" => "%-d",
|
21
|
+
"04" => "%M",
|
22
|
+
"4" => "%-M",
|
23
|
+
"05" => "%S",
|
24
|
+
"5" => "%-S",
|
25
|
+
"PM" => "%p",
|
26
|
+
"pm" => "%P",
|
27
|
+
"MST" => "%Z",
|
28
|
+
"-07:00:00" => "%::z",
|
29
|
+
"-07:00" => "%:z",
|
30
|
+
"-0700" => "%z",
|
31
|
+
".000000000" => ".%9N",
|
32
|
+
".00000000" => ".%8N",
|
33
|
+
".0000000" => ".%7N",
|
34
|
+
".000000" => ".%6N",
|
35
|
+
".00000" => ".%5N",
|
36
|
+
".0000" => ".%4N",
|
37
|
+
".000" => ".%3N",
|
38
|
+
".00" => ".%2N",
|
39
|
+
".0" => ".%1N",
|
40
|
+
",000000000" => ",%9N",
|
41
|
+
",00000000" => ",%8N",
|
42
|
+
",0000000" => ",%7N",
|
43
|
+
",000000" => ",%6N",
|
44
|
+
",00000" => ",%5N",
|
45
|
+
",0000" => ",%4N",
|
46
|
+
",000" => ",%3N",
|
47
|
+
",00" => ",%2N",
|
48
|
+
",0" => ",%1N"
|
49
|
+
}.freeze
|
50
|
+
BASIC_CONVERT_REGEXP = Regexp.union(BASIC_CONVERT_TABLE.keys)
|
51
|
+
|
52
|
+
@convert_table = {
|
53
|
+
"Z07:00:00" => ->(t, _s) { t.utc? ? "Z" : t.strftime("%::z") },
|
54
|
+
"Z07:00" => ->(t, _s) { t.utc? ? "Z" : t.strftime("%:z") },
|
55
|
+
"Z070000" => ->(t, _s) { t.utc? ? "Z" : t.strftime("%::z").delete(":") },
|
56
|
+
"Z0700" => ->(t, _s) { t.utc? ? "Z" : t.strftime("%z") },
|
57
|
+
"Z07" => ->(t, _s) { t.utc? ? "Z" : t.strftime("%z").slice(0, 3) },
|
58
|
+
"-070000" => ->(t, _s) { t.strftime("%::z").delete(":") }
|
59
|
+
}.merge(BASIC_CONVERT_TABLE).merge({
|
60
|
+
"-07" => ->(t, _s) { t.strftime("%z").slice(0, 3) }
|
61
|
+
})
|
62
|
+
@convert_table[".999999999"] = ->(t, s) { s[0] + t.strftime("%#{s.length - 1}N").sub(/0+$/, "") }
|
63
|
+
@convert_table[".99999999"] = @convert_table[".999999999"]
|
64
|
+
@convert_table[".9999999"] = @convert_table[".999999999"]
|
65
|
+
@convert_table[".999999"] = @convert_table[".999999999"]
|
66
|
+
@convert_table[".99999"] = @convert_table[".999999999"]
|
67
|
+
@convert_table[".9999"] = @convert_table[".999999999"]
|
68
|
+
@convert_table[".999"] = @convert_table[".999999999"]
|
69
|
+
@convert_table[".99"] = @convert_table[".999999999"]
|
70
|
+
@convert_table[".9"] = @convert_table[".999999999"]
|
71
|
+
@convert_table[",999999999"] = @convert_table[".999999999"]
|
72
|
+
@convert_table[",99999999"] = @convert_table[".999999999"]
|
73
|
+
@convert_table[",9999999"] = @convert_table[".999999999"]
|
74
|
+
@convert_table[",999999"] = @convert_table[".999999999"]
|
75
|
+
@convert_table[",99999"] = @convert_table[".999999999"]
|
76
|
+
@convert_table[",9999"] = @convert_table[".999999999"]
|
77
|
+
@convert_table[",999"] = @convert_table[".999999999"]
|
78
|
+
@convert_table[",99"] = @convert_table[".999999999"]
|
79
|
+
@convert_table[",9"] = @convert_table[".999999999"]
|
80
|
+
end
|
@@ -0,0 +1,130 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "go_time"
|
4
|
+
|
5
|
+
module GoTime
|
6
|
+
module Ja
|
7
|
+
CHINESE_NUMERALS = %w[
|
8
|
+
〇 一 二 三 四 五 六 七 八 九
|
9
|
+
十 十一 十二 十三 十四 十五 十六 十七 十八 十九
|
10
|
+
二十 二十一 二十二 二十三 二十四 二十五 二十六 二十七 二十八 二十九
|
11
|
+
三十 三十一 三十二 三十三 三十四 三十五 三十六 三十七 三十八 三十九
|
12
|
+
四十 四十一 四十二 四十三 四十四 四十五 四十六 四十七 四十八 四十九
|
13
|
+
五十 五十一 五十二 五十三 五十四 五十五 五十六 五十七 五十八 五十九
|
14
|
+
六十 六十一 六十二 六十三 六十四 六十五 六十六 六十七 六十八 六十九
|
15
|
+
七十 七十一 七十二 七十三 七十四 七十五 七十六 七十七 七十八 七十九
|
16
|
+
八十 八十一 八十二 八十三 八十四 八十五 八十六 八十七 八十八 八十九
|
17
|
+
九十 九十一 九十二 九十三 九十四 九十五 九十六 九十七 九十八 九十九
|
18
|
+
].freeze
|
19
|
+
|
20
|
+
FULLWIDTH_NUMBERS = %w[
|
21
|
+
0 1 2 3 4 5 6 7 8 9
|
22
|
+
10 11 12 13 14 15 16 17 18 19
|
23
|
+
20 21 22 23 24 25 26 27 28 29
|
24
|
+
30 31 32 33 34 35 36 37 38 39
|
25
|
+
40 41 42 43 44 45 46 47 48 49
|
26
|
+
50 51 52 53 54 55 56 57 58 59
|
27
|
+
60 61 62 63 64 65 66 67 68 69
|
28
|
+
70 71 72 73 74 75 76 77 78 79
|
29
|
+
80 81 82 83 84 85 86 87 88 89
|
30
|
+
90 91 92 93 94 95 96 97 98 99
|
31
|
+
].freeze
|
32
|
+
|
33
|
+
ERA_REPRESENTATIONS = {
|
34
|
+
"令和" => { "平成" => "令和", "㍻" => "㋿", "H" => "R", "H" => "R" }.freeze,
|
35
|
+
"平成" => { "平成" => "平成", "㍻" => "㍻", "H" => "H", "H" => "H" }.freeze,
|
36
|
+
"昭和" => { "平成" => "昭和", "㍻" => "㍼", "H" => "S", "H" => "S" }.freeze,
|
37
|
+
"大正" => { "平成" => "大正", "㍻" => "㍽", "H" => "T", "H" => "T" }.freeze,
|
38
|
+
"明治" => { "平成" => "明治", "㍻" => "㍾", "H" => "M", "H" => "M" }.freeze
|
39
|
+
}.freeze
|
40
|
+
|
41
|
+
def self.japanese_year(time)
|
42
|
+
if time >= Time.new(2019, 4, 30)
|
43
|
+
["令和", time.year - 2018]
|
44
|
+
elsif time >= Time.new(1989, 1, 8)
|
45
|
+
["平成", time.year - 1988]
|
46
|
+
elsif time >= Time.new(1926, 12, 25)
|
47
|
+
["昭和", time.year - 1925]
|
48
|
+
elsif time >= Time.new(1912, 7, 30)
|
49
|
+
["大正", time.year - 1911]
|
50
|
+
elsif time >= Time.new(1868, 1, 25)
|
51
|
+
["明治", time.year - 1867]
|
52
|
+
else
|
53
|
+
raise RangeError
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
@convert_table["二〇〇六"] = lambda { |t, _s|
|
59
|
+
t.year.to_s.tr("0123456789", "〇一二三四五六七八九")
|
60
|
+
}
|
61
|
+
@convert_table["2006"] = lambda { |t, _s|
|
62
|
+
t.year.to_s.tr("0123456789", "0123456789")
|
63
|
+
}
|
64
|
+
@convert_table["06"] = lambda { |t, _s|
|
65
|
+
t.year.to_s[-2, 2].tr("0123456789", "0123456789")
|
66
|
+
}
|
67
|
+
@convert_table["平成"] = @convert_table["㍻"] = lambda { |t, s|
|
68
|
+
era, _year = Ja.japanese_year(t)
|
69
|
+
Ja::ERA_REPRESENTATIONS[era][s]
|
70
|
+
}
|
71
|
+
@convert_table["H18"] = @convert_table["H18"] = lambda { |t, s|
|
72
|
+
era, year = Ja.japanese_year(t)
|
73
|
+
"#{Ja::ERA_REPRESENTATIONS[era][s[0]]}#{Ja::FULLWIDTH_NUMBERS[year]}"
|
74
|
+
}
|
75
|
+
@convert_table["H18"] = lambda { |t, _s|
|
76
|
+
era, year = Ja.japanese_year(t)
|
77
|
+
"#{Ja::ERA_REPRESENTATIONS[era]['H']}#{sprintf('%02d', year)}"
|
78
|
+
}
|
79
|
+
@convert_table["十八年"] = lambda { |t, _s|
|
80
|
+
_era, year = Ja.japanese_year(t)
|
81
|
+
"#{year == 1 ? '元' : Ja::CHINESE_NUMERALS.at(year)}年"
|
82
|
+
}
|
83
|
+
@convert_table["18年"] = lambda { |t, _s|
|
84
|
+
_era, year = Ja.japanese_year(t)
|
85
|
+
"#{year == 1 ? '元' : Ja::FULLWIDTH_NUMBERS.at(year)}年"
|
86
|
+
}
|
87
|
+
@convert_table["18年"] = lambda { |t, _s|
|
88
|
+
_era, year = Ja.japanese_year(t)
|
89
|
+
"#{year == 1 ? '元' : sprintf('%02d', year)}年"
|
90
|
+
}
|
91
|
+
@convert_table["十八"] = lambda { |t, _s|
|
92
|
+
_era, year = Ja.japanese_year(t)
|
93
|
+
Ja::CHINESE_NUMERALS.at(year)
|
94
|
+
}
|
95
|
+
@convert_table["18"] = lambda { |t, _s|
|
96
|
+
_era, year = Ja.japanese_year(t)
|
97
|
+
Ja::FULLWIDTH_NUMBERS.at(year)
|
98
|
+
}
|
99
|
+
@convert_table["18"] = lambda { |t, _s|
|
100
|
+
_era, year = Ja.japanese_year(t)
|
101
|
+
sprintf("%02d", year)
|
102
|
+
}
|
103
|
+
@convert_table["十五"] = ->(t, _s) { Ja::CHINESE_NUMERALS.at(t.hour) }
|
104
|
+
@convert_table["15"] = ->(t, _s) { "0#{Ja::FULLWIDTH_NUMBERS.at(t.hour)}"[-2, 2] }
|
105
|
+
@convert_table["一"] = ->(t, _s) { Ja::CHINESE_NUMERALS.at(t.month) }
|
106
|
+
@convert_table["01"] = ->(t, _s) { "0#{Ja::FULLWIDTH_NUMBERS.at(t.month)}"[-2, 2] }
|
107
|
+
@convert_table["1"] = ->(t, _s) { Ja::FULLWIDTH_NUMBERS.at(t.month) }
|
108
|
+
@convert_table["睦月"] = lambda { |t, _s|
|
109
|
+
%w[睦月 如月 弥生 卯月 皐月 水無月 文月 葉月 長月 神無月 霜月 師走].at(t.month - 1)
|
110
|
+
}
|
111
|
+
@convert_table["二"] = ->(t, _s) { Ja::CHINESE_NUMERALS.at(t.mday) }
|
112
|
+
@convert_table["02"] = ->(t, _s) { "0#{Ja::FULLWIDTH_NUMBERS.at(t.mday)}"[-2, 2] }
|
113
|
+
@convert_table["_2"] = ->(t, _s) { " #{Ja::FULLWIDTH_NUMBERS.at(t.mday)}"[-2, 2] }
|
114
|
+
@convert_table["2"] = ->(t, _s) { Ja::FULLWIDTH_NUMBERS.at(t.mday) }
|
115
|
+
@convert_table["火"] = ->(t, _s) { %w[日 月 火 水 木 金 土].at(t.wday) }
|
116
|
+
@convert_table["午後"] = ->(t, _s) { t.hour < 12 ? "午前" : "午後" }
|
117
|
+
@convert_table["PM"] = ->(t, _s) { t.hour < 12 ? "AM" : "PM" }
|
118
|
+
@convert_table["pm"] = ->(t, _s) { t.hour < 12 ? "am" : "pm" }
|
119
|
+
@convert_table["三"] = ->(t, _s) { Ja::CHINESE_NUMERALS.at(t.hour % 12) }
|
120
|
+
@convert_table["03"] = ->(t, _s) { "0#{Ja::FULLWIDTH_NUMBERS.at(t.hour % 12)}"[-2, 2] }
|
121
|
+
@convert_table["3"] = ->(t, _s) { Ja::FULLWIDTH_NUMBERS.at(t.hour % 12) }
|
122
|
+
@convert_table["四"] = ->(t, _s) { Ja::CHINESE_NUMERALS.at(t.min) }
|
123
|
+
@convert_table["04"] = ->(t, _s) { "0#{Ja::FULLWIDTH_NUMBERS.at(t.min)}"[-2, 2] }
|
124
|
+
@convert_table["4"] = ->(t, _s) { Ja::FULLWIDTH_NUMBERS.at(t.min) }
|
125
|
+
@convert_table["五"] = ->(t, _s) { Ja::CHINESE_NUMERALS.at(t.sec) }
|
126
|
+
@convert_table["05"] = ->(t, _s) { "0#{Ja::FULLWIDTH_NUMBERS.at(t.sec)}"[-2, 2] }
|
127
|
+
@convert_table["5"] = ->(t, _s) { Ja::FULLWIDTH_NUMBERS.at(t.sec) }
|
128
|
+
|
129
|
+
update_convert_regexp
|
130
|
+
end
|
data/lib/go_time/refine.rb
CHANGED
data/lib/go_time/strftime.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "go_time"
|
4
|
-
|
5
|
-
class Time
|
6
|
-
|
7
|
-
|
8
|
-
def strftime(fmt)
|
9
|
-
GoTime.strftime(self, fmt)
|
10
|
-
end
|
11
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "go_time"
|
4
|
+
|
5
|
+
class Time
|
6
|
+
alias _orig_strftime strftime
|
7
|
+
|
8
|
+
def strftime(fmt)
|
9
|
+
GoTime.strftime(self, fmt)
|
10
|
+
end
|
11
|
+
end
|
data/lib/go_time/version.rb
CHANGED
data/lib/go_time.rb
CHANGED
@@ -9,12 +9,10 @@ require_relative "go_time/version"
|
|
9
9
|
module GoTime
|
10
10
|
# Formats time according to Go-like format string
|
11
11
|
#
|
12
|
-
# @param [Time]
|
13
|
-
# @param [String]
|
12
|
+
# @param time [Time]
|
13
|
+
# @param fmt [String] Go-like format string
|
14
14
|
# @return [String] formatted string
|
15
15
|
def self.format(time, fmt)
|
16
|
-
update_convert_regexp unless @convert_regexp
|
17
|
-
|
18
16
|
fmt.gsub(@convert_regexp) do |matched|
|
19
17
|
conv = @convert_table[matched]
|
20
18
|
case conv
|
@@ -28,12 +26,10 @@ module GoTime
|
|
28
26
|
|
29
27
|
# Formats time according to Go-like format or strftime format string
|
30
28
|
#
|
31
|
-
# @param [Time]
|
32
|
-
# @param [String]
|
29
|
+
# @param time [Time]
|
30
|
+
# @param fmt [String] Go-like format or strftime format string
|
33
31
|
# @return [String] formatted string
|
34
32
|
def self.strftime(time, fmt)
|
35
|
-
update_convert_regexp unless @convert_regexp
|
36
|
-
|
37
33
|
converted_fmt = fmt.gsub(@convert_regexp) do |matched|
|
38
34
|
conv = @convert_table[matched]
|
39
35
|
case conv
|
@@ -49,13 +45,22 @@ module GoTime
|
|
49
45
|
|
50
46
|
# Converts Go-like format string to strftime format string
|
51
47
|
#
|
52
|
-
# @param [String]
|
48
|
+
# @param fmt [String] Go-like format string
|
49
|
+
# @param exception [Boolean] If true, raise ArgumentError when there is a syntax that does not support Time#strftime.
|
53
50
|
# @return [String] strftime format string
|
54
|
-
def self.convert(fmt)
|
55
|
-
fmt.gsub(BASIC_CONVERT_REGEXP, BASIC_CONVERT_TABLE)
|
51
|
+
def self.convert(fmt, exception: false)
|
52
|
+
ret = fmt.gsub(BASIC_CONVERT_REGEXP, BASIC_CONVERT_TABLE)
|
53
|
+
if exception
|
54
|
+
matched = ret.match(@convert_regexp)
|
55
|
+
raise ArgumentError, %(unsupported syntax "#{matched}") if matched
|
56
|
+
end
|
57
|
+
ret
|
56
58
|
end
|
57
59
|
|
58
60
|
def self.update_convert_regexp
|
59
61
|
@convert_regexp = Regexp.union(@convert_table.keys)
|
60
62
|
end
|
63
|
+
|
64
|
+
private_class_method :update_convert_regexp
|
65
|
+
update_convert_regexp
|
61
66
|
end
|
data/sig/go_time.rbs
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# formats Time like Golang
|
2
|
+
module GoTime
|
3
|
+
# Formats time according to Go-like format string
|
4
|
+
#
|
5
|
+
# @param time [Time]
|
6
|
+
# @param fmt [String] Go-like format string
|
7
|
+
# @return [String] formatted string
|
8
|
+
def self.format: (Time time, String fmt) -> String
|
9
|
+
|
10
|
+
# Formats time according to Go-like format or strftime format string
|
11
|
+
#
|
12
|
+
# @param time [Time]
|
13
|
+
# @param fmt [String] Go-like format or strftime format string
|
14
|
+
# @return [String] formatted string
|
15
|
+
def self.strftime: (Time time, String fmt) -> String
|
16
|
+
|
17
|
+
# Converts Go-like format string to strftime format string
|
18
|
+
#
|
19
|
+
# @param fmt [String] Go-like format string
|
20
|
+
# @param exception [Boolean] If true, raise ArgumentError when there is a syntax that does not support Time#strftime.
|
21
|
+
# @return [String] strftime format string
|
22
|
+
def self.convert: (String fmt, ?exception: bool) -> String
|
23
|
+
end
|
metadata
CHANGED
@@ -1,19 +1,20 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: go_time
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- nodai2hITC
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-29 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Formats Time according to Go-like format like "01/02 03:04:05PM '06 -0700"
|
14
14
|
email:
|
15
15
|
- nodai2h.itc@gmail.com
|
16
|
-
executables:
|
16
|
+
executables:
|
17
|
+
- gotime
|
17
18
|
extensions: []
|
18
19
|
extra_rdoc_files: []
|
19
20
|
files:
|
@@ -24,13 +25,16 @@ files:
|
|
24
25
|
- Rakefile
|
25
26
|
- bin/console
|
26
27
|
- bin/setup
|
28
|
+
- exe/gotime
|
27
29
|
- go_time.gemspec
|
28
30
|
- lib/go_time.rb
|
29
31
|
- lib/go_time/constants.rb
|
30
32
|
- lib/go_time/convert_table.rb
|
33
|
+
- lib/go_time/ext/ja.rb
|
31
34
|
- lib/go_time/refine.rb
|
32
35
|
- lib/go_time/strftime.rb
|
33
36
|
- lib/go_time/version.rb
|
37
|
+
- sig/go_time.rbs
|
34
38
|
homepage: https://github.com/nodai2hITC/go_time
|
35
39
|
licenses:
|
36
40
|
- MIT
|
@@ -52,7 +56,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
52
56
|
- !ruby/object:Gem::Version
|
53
57
|
version: '0'
|
54
58
|
requirements: []
|
55
|
-
rubygems_version: 3.
|
59
|
+
rubygems_version: 3.3.5
|
56
60
|
signing_key:
|
57
61
|
specification_version: 4
|
58
62
|
summary: formats Time like Golang
|