parse_date 0.3.1 → 0.3.2
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/.rubocop.yml +1 -1
- data/.rubocop_todo.yml +3 -3
- data/README.md +7 -1
- data/lib/parse_date/int_from_string.rb +18 -4
- 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: b89915718c893cf65a79dfd4d589b9c1e7def99b00f56dcfee56829c5c0941e1
         | 
| 4 | 
            +
              data.tar.gz: 96803f595b7a6d6e95f331661e48254eee0204a0d0d856bc83d46bbfe67f72a4
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: df38bb2a88a9417f660a2e03fe642fafd3e82db85999a81d7897b8bb8577d1670a5810359bdadae0134c4edf128e4e44bcdbc59fc9bdcab94955bac2eed6afc0
         | 
| 7 | 
            +
              data.tar.gz: a73425d3c6c2a1b8c75e4f577463ff2b321a8dc93d8f35be5318b3e58c83e2f0a3984be67397dd7a14b5380b429eb1d4e6d5edb7383c23f5b7fe94937d8379e4
         | 
    
        data/.rubocop.yml
    CHANGED
    
    
    
        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-10- | 
| 3 | 
            +
            # on 2019-10-24 13:45:33 -0700 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: 39
         | 
| 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: 176
         | 
| 21 21 |  | 
| 22 22 | 
             
            # Offense count: 4
         | 
| 23 23 | 
             
            Metrics/PerceivedComplexity:
         | 
    
        data/README.md
    CHANGED
    
    | @@ -57,6 +57,8 @@ ParseDate.parse_range('ca. 5th–6th century A.D.')       # (400..599).to_a | |
| 57 57 | 
             
            ParseDate.parse_range('ca. 9th–8th century B.C.')       # (-999..-800).to_a
         | 
| 58 58 | 
             
            ParseDate.parse_range('ca. 13th–12th century B.C.')     # (-1399..-1200).to_a
         | 
| 59 59 | 
             
            ParseDate.parse_range('5th century B.C.')               # (-599..-500).to_a
         | 
| 60 | 
            +
            ParseDate.parse_range('502-504')                        # [502, 503, 504]
         | 
| 61 | 
            +
            ParseDate.parse_range('-2100 - -2000')                  # (-2100..-2000).to_a
         | 
| 60 62 | 
             
            ParseDate.parse_range('1975 - 1905')                    # last year > first year, raises error
         | 
| 61 63 | 
             
            ParseDate.parse_range('-100 - -150')                    # last year > first year, raises error
         | 
| 62 64 | 
             
            ParseDate.parse_range('1975 or 1905')                   # last year > first year, raises error
         | 
| @@ -90,6 +92,8 @@ ParseDate.earliest_year('ca. 5th–6th century A.D.')     # 400 | |
| 90 92 | 
             
            ParseDate.earliest_year('ca. 9th–8th century B.C.')     # -999
         | 
| 91 93 | 
             
            ParseDate.earliest_year('ca. 13th–12th century B.C.')   # -1399
         | 
| 92 94 | 
             
            ParseDate.earliest_year('5th century B.C.')             # -599
         | 
| 95 | 
            +
            ParseDate.earliest_year('502-504')                      # 502
         | 
| 96 | 
            +
            ParseDate.earliest_year('-2100 - -2000')                # -2100
         | 
| 93 97 |  | 
| 94 98 | 
             
            ParseDate.latest_year('20000222')                       # 2000
         | 
| 95 99 | 
             
            ParseDate.latest_year('195-')                           # 1959
         | 
| @@ -113,7 +117,9 @@ ParseDate.latest_year('ca. 5th–6th century A.D.')       # 599 | |
| 113 117 | 
             
            ParseDate.latest_year('ca. 9th–8th century B.C.')       # -800
         | 
| 114 118 | 
             
            ParseDate.latest_year('ca. 13th–12th century B.C.')     # -1200
         | 
| 115 119 | 
             
            ParseDate.latest_year('5th century B.C.')               # -500
         | 
| 116 | 
            -
            ParseDate.latest_year('-5 - 3')                         # 3 | 
| 120 | 
            +
            ParseDate.latest_year('-5 - 3')                         # 3
         | 
| 121 | 
            +
            ParseDate.latest_year('502-504')                        # 504
         | 
| 122 | 
            +
            ParseDate.latest_year('-2100 - -2000')                  # -2000
         | 
| 117 123 |  | 
| 118 124 | 
             
            ParseDate.range_array('1993', '1995')                   # [1993, 1994, 1995]
         | 
| 119 125 | 
             
            ParseDate.range_array(1993, 1995)                       # [1993, 1994, 1995]
         | 
| @@ -25,6 +25,7 @@ class ParseDate | |
| 25 25 | 
             
                  return ParseDate.send(:year_int_for_bc, date_str) if date_str.match(YEAR_BC_REGEX)
         | 
| 26 26 |  | 
| 27 27 | 
             
                  result ||= ParseDate.send(:between_earliest_year, date_str)
         | 
| 28 | 
            +
                  result ||= ParseDate.send(:negative_first_four_digits, date_str)
         | 
| 28 29 | 
             
                  result ||= ParseDate.send(:first_four_digits, date_str)
         | 
| 29 30 | 
             
                  result ||= ParseDate.send(:year_from_mm_dd_yy, date_str)
         | 
| 30 31 | 
             
                  result ||= ParseDate.send(:first_year_for_decade, date_str) # 198x or 201x
         | 
| @@ -61,6 +62,7 @@ class ParseDate | |
| 61 62 | 
             
                  result ||= ParseDate.send(:hyphen_2digit_latest_year, date_str)
         | 
| 62 63 | 
             
                  result ||= ParseDate.send(:yyuu_after_hyphen, date_str)
         | 
| 63 64 | 
             
                  result ||= ParseDate.send(:year_after_or, date_str)
         | 
| 65 | 
            +
                  result ||= ParseDate.send(:negative_4digits_after_hyphen, date_str)
         | 
| 64 66 | 
             
                  result ||= ParseDate.send(:first_four_digits, date_str)
         | 
| 65 67 | 
             
                  result ||= ParseDate.send(:year_from_mm_dd_yy, date_str)
         | 
| 66 68 | 
             
                  result ||= ParseDate.send(:last_year_for_decade, date_str) # 198x or 201x
         | 
| @@ -75,12 +77,12 @@ class ParseDate | |
| 75 77 | 
             
                  result.to_i if result && year_int_valid?(result.to_i)
         | 
| 76 78 | 
             
                end
         | 
| 77 79 |  | 
| 78 | 
            -
                # true if the year is between - | 
| 80 | 
            +
                # true if the year is between -9999 and (current year + 1), inclusive
         | 
| 79 81 | 
             
                # @return [Boolean] true if the year is between -999 and (current year + 1); false otherwise
         | 
| 80 82 | 
             
                def self.year_int_valid?(year)
         | 
| 81 83 | 
             
                  return false unless year.is_a? Integer
         | 
| 82 84 |  | 
| 83 | 
            -
                  (- | 
| 85 | 
            +
                  (-10000 < year.to_i) && (year < Date.today.year + 2)
         | 
| 84 86 | 
             
                end
         | 
| 85 87 |  | 
| 86 88 | 
             
                protected
         | 
| @@ -169,6 +171,18 @@ class ParseDate | |
| 169 171 | 
             
                  nth * -100
         | 
| 170 172 | 
             
                end
         | 
| 171 173 |  | 
| 174 | 
            +
                # looks for -yyyy at beginning of date_str and returns if found
         | 
| 175 | 
            +
                # @return [String, nil] negative 4 digit year (e.g. -1865) if date_str has -yyyy, nil otherwise
         | 
| 176 | 
            +
                def negative_first_four_digits(date_str)
         | 
| 177 | 
            +
                  Regexp.last_match(1) if date_str.match(/^(\-\d{4})/)
         | 
| 178 | 
            +
                end
         | 
| 179 | 
            +
             | 
| 180 | 
            +
                # looks for -yyyy after hyphen and returns if found
         | 
| 181 | 
            +
                # @return [String, nil] negative 4 digit year (e.g. -1865) if date_str has -yyyy - -yyyy, nil otherwise
         | 
| 182 | 
            +
                def negative_4digits_after_hyphen(date_str)
         | 
| 183 | 
            +
                  Regexp.last_match(1) if date_str.match(/\-\d{4}\s*\-\s*(\-\d{4})/)
         | 
| 184 | 
            +
                end
         | 
| 185 | 
            +
             | 
| 172 186 | 
             
                # looks for 4 consecutive digits in date_str and returns first occurrence if found
         | 
| 173 187 | 
             
                # @return [String, nil] 4 digit year (e.g. 1865, 0950) if date_str has yyyy, nil otherwise
         | 
| 174 188 | 
             
                def first_four_digits(date_str)
         | 
| @@ -195,7 +209,7 @@ class ParseDate | |
| 195 209 | 
             
                  nil # explicitly want nil if date won't parse
         | 
| 196 210 | 
             
                end
         | 
| 197 211 |  | 
| 198 | 
            -
                DECADE_4CHAR_REGEX = Regexp.new('(^|\D)\d{3}[u\-?x]', REGEX_OPTS)
         | 
| 212 | 
            +
                DECADE_4CHAR_REGEX = Regexp.new('(^|\D)\d{3}[u\-?x]($|\D)', REGEX_OPTS)
         | 
| 199 213 |  | 
| 200 214 | 
             
                # first year of decade (as String) if we have:  yyyu, yyy-, yyy? or yyyx pattern
         | 
| 201 215 | 
             
                #   note that these are the only decade patterns found in our actual date strings in MODS records
         | 
| @@ -279,7 +293,7 @@ class ParseDate | |
| 279 293 | 
             
                  "-#{Regexp.last_match(:last)}".to_i if date_str.match(BETWEEN_Yn_AND_Yn_BC_REGEX)
         | 
| 280 294 | 
             
                end
         | 
| 281 295 |  | 
| 282 | 
            -
                EARLY_NUMERIC_REGEX = Regexp.new('^\-?\d{1,3}([^\du | 
| 296 | 
            +
                EARLY_NUMERIC_REGEX = Regexp.new('^\-?\d{1,3}([^\du\[]|$)', REGEX_OPTS)
         | 
| 283 297 |  | 
| 284 298 | 
             
                # year if date_str contains yyy, yy, y, -y, -yy, -yyy, -yyyy
         | 
| 285 299 | 
             
                # @return [Integer, nil] year if date_str matches pattern; nil otherwise
         | 
    
        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.3. | 
| 4 | 
            +
              version: 0.3.2
         | 
| 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-10- | 
| 11 | 
            +
            date: 2019-10-24 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: zeitwerk
         |