parse_date 0.4.0 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop_todo.yml +3 -3
- data/README.md +12 -0
- data/lib/parse_date/int_from_string.rb +19 -2
- data/lib/parse_date/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 36071ca61e644a7abfeb616a883260772c05498c06d9d8974bd6bc077147397c
|
4
|
+
data.tar.gz: 13c12acb9740c601876cbde4ab46ef4a7b966b9bc2d9471481d7ab2cad29d52d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d7e538ce28565ddcc358f3985c540280bfde3703cf8b94c6debf830fbc27c9dda3639f325a0ad94cd70073d027c1a0b2d68ff8e32552a1b1a16274ca18b2644a
|
7
|
+
data.tar.gz: 21d322b522ada492336e0d521a38f17fabb118010b025b0e4f81e9e405b74533db468304e01100d841bfbba82fc194015f7e5040085ba4b65a1d0c1e9b87e8f5
|
data/.rubocop_todo.yml
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# This configuration was generated by
|
2
2
|
# `rubocop --auto-gen-config`
|
3
|
-
# on 2019-
|
3
|
+
# on 2019-11-05 16:05:23 -0800 using RuboCop version 0.74.0.
|
4
4
|
# The point is for the user to remove these configuration records
|
5
5
|
# one by one as the offenses are removed from the code base.
|
6
6
|
# Note that changes in the inspected code, or installation of new
|
@@ -8,7 +8,7 @@
|
|
8
8
|
|
9
9
|
# Offense count: 5
|
10
10
|
Metrics/AbcSize:
|
11
|
-
Max:
|
11
|
+
Max: 43
|
12
12
|
|
13
13
|
# Offense count: 4
|
14
14
|
Metrics/CyclomaticComplexity:
|
@@ -17,7 +17,7 @@ Metrics/CyclomaticComplexity:
|
|
17
17
|
# Offense count: 1
|
18
18
|
# Configuration parameters: CountComments.
|
19
19
|
Metrics/ModuleLength:
|
20
|
-
Max:
|
20
|
+
Max: 195
|
21
21
|
|
22
22
|
# Offense count: 4
|
23
23
|
Metrics/PerceivedComplexity:
|
data/README.md
CHANGED
@@ -40,6 +40,12 @@ ParseDate.parse_range('195-') # (1950..1959).to_a
|
|
40
40
|
ParseDate.parse_range('199u') # (1990..1999).to_a
|
41
41
|
ParseDate.parse_range('197?') # (1970..1979).to_a
|
42
42
|
ParseDate.parse_range('196x') # (1960..1969).to_a
|
43
|
+
ParseDate.parse_range('1990s') # (1990..1999).to_a
|
44
|
+
ParseDate.parse_range('1990s?') # (1990..1999).to_a
|
45
|
+
ParseDate.parse_range('ca. 1930s') # (1930..1939).to_a
|
46
|
+
ParseDate.parse_range('1928-1980s') # (1928..1989).to_a
|
47
|
+
ParseDate.parse_range('1940s-1990') # (1940..1990).to_a
|
48
|
+
ParseDate.parse_range('1980s-1990s') # (1980..1999).to_a
|
43
49
|
ParseDate.parse_range('18th century CE') # (1700..1799).to_a
|
44
50
|
ParseDate.parse_range('17uu') # (1700..1799).to_a
|
45
51
|
ParseDate.parse_range('between 1694 and 1799') # (1694..1799).to_a
|
@@ -112,6 +118,12 @@ ParseDate.latest_year('195-') # 1959
|
|
112
118
|
ParseDate.latest_year('199u') # 1999
|
113
119
|
ParseDate.latest_year('197?') # 1979
|
114
120
|
ParseDate.latest_year('196x') # 1969
|
121
|
+
ParseDate.latest_year('1990s') # 1999
|
122
|
+
ParseDate.latest_year('1990s?') # 1999
|
123
|
+
ParseDate.latest_year('ca. 1930s') # 1939
|
124
|
+
ParseDate.latest_year('1928-1980s') # 1989
|
125
|
+
ParseDate.latest_year('1940s-1990') # 1990
|
126
|
+
ParseDate.latest_year('1980s-1990s') # 1999
|
115
127
|
ParseDate.latest_year('18th century CE') # 1799
|
116
128
|
ParseDate.latest_year('17uu') # 1799
|
117
129
|
ParseDate.latest_year('between 1694 and 1799') # 1799
|
@@ -65,6 +65,7 @@ class ParseDate
|
|
65
65
|
result ||= ParseDate.send(:year_after_or, date_str)
|
66
66
|
result ||= ParseDate.send(:negative_4digits_after_hyphen, date_str)
|
67
67
|
result ||= ParseDate.send(:negative_first_four_digits, date_str)
|
68
|
+
result ||= ParseDate.send(:last_year_for_0s_decade, date_str)
|
68
69
|
result ||= ParseDate.send(:first_four_digits, date_str)
|
69
70
|
result ||= ParseDate.send(:year_from_mm_dd_yy, date_str)
|
70
71
|
result ||= ParseDate.send(:last_year_for_decade, date_str) # 198x or 201x
|
@@ -98,7 +99,7 @@ class ParseDate
|
|
98
99
|
date_str.delete('[]') if date_str.match(BRACKETS_BETWEEN_DIGITS_REGEX)
|
99
100
|
end
|
100
101
|
|
101
|
-
YYYY_HYPHEN_YYYY_REGEX = Regexp.new(/(?<first>\d{3,4})
|
102
|
+
YYYY_HYPHEN_YYYY_REGEX = Regexp.new(/(?<first>\d{3,4})s?\??\s*(-|—|–|to)\s*(?<last>\d{4}s?)\??/m)
|
102
103
|
|
103
104
|
# Integer value for latest year if we have "yyyy-yyyy" pattern
|
104
105
|
# @return [Integer, nil] yyyy if date_str matches pattern; nil otherwise
|
@@ -109,7 +110,13 @@ class ParseDate
|
|
109
110
|
# Integer value for latest year if we have "yyyy-yyyy" pattern
|
110
111
|
# @return [Integer, nil] yyyy if date_str matches pattern; nil otherwise
|
111
112
|
def hyphen_4digit_latest_year(date_str)
|
112
|
-
Regexp.last_match(:last)
|
113
|
+
latest = Regexp.last_match(:last) if date_str.match(YYYY_HYPHEN_YYYY_REGEX)
|
114
|
+
if ParseDate.year_int_valid?(latest.to_i)
|
115
|
+
ParseDate.latest_year(latest) # accommodates '1980s - 1990s'
|
116
|
+
else
|
117
|
+
# return the bad value; parse_range might need to complain about it
|
118
|
+
latest
|
119
|
+
end
|
113
120
|
end
|
114
121
|
|
115
122
|
YYYY_HYPHEN_YY_REGEX = Regexp.new(/(?<first>\d{3,4})\??\s*(-|—|–|to)\s*(?<last>\d{2})\??([^-0-9].*)?$/)
|
@@ -219,6 +226,16 @@ class ParseDate
|
|
219
226
|
nil # explicitly want nil if date won't parse
|
220
227
|
end
|
221
228
|
|
229
|
+
DECADE_0S_REGEX = Regexp.new('(^|\D)\d{3}0\'?s($|\D)', REGEX_OPTS)
|
230
|
+
|
231
|
+
# last year of decade (as String) if we have: yyy0s flavor pattern
|
232
|
+
# @return [String, nil] 4 digit year (e.g. 1869, 1959) if date_str matches pattern, nil otherwise
|
233
|
+
def last_year_for_0s_decade(date_str)
|
234
|
+
decade_matches = date_str.match(DECADE_0S_REGEX)
|
235
|
+
changed_to_nine = decade_matches.to_s.sub(/0\'?s/, '9') if decade_matches
|
236
|
+
ParseDate.first_four_digits(changed_to_nine) if changed_to_nine
|
237
|
+
end
|
238
|
+
|
222
239
|
DECADE_4CHAR_REGEX = Regexp.new('(^|\D)\d{3}[u\-?x]($|\D)', REGEX_OPTS)
|
223
240
|
|
224
241
|
# first year of decade (as String) if we have: yyyu, yyy-, yyy? or yyyx pattern
|
data/lib/parse_date/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: parse_date
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Naomi Dushay
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-11-
|
11
|
+
date: 2019-11-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: zeitwerk
|