medjool 0.5.5 → 0.5.6

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 ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ YmUyNzdhZWZhYzQzYmEzNjllMDgwYjA1NGJiMDU3Y2U2OGFmZGVmYw==
5
+ data.tar.gz: !binary |-
6
+ MjM1MTkwYjhlOGNmMjVhNTdjZDVkZDI0ODk3OTIzODcxNjg0ZmViMA==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ MTI1MGNhMDMyZGE2NTBmMTU0OWQ3NGE5NDYwY2E3ODg5NTFmNTQyODhkYzJm
10
+ ZWQ4YzU3ZWVhMjc1Y2ZlZTlhOGYxNTZlNWRiMDRmNTM5ODRlMjVhZWY1M2Y4
11
+ M2YxYWE5MGM5NWY4MWFlYzg4MGQ1N2I5YjQzNzJiMWE0NzQ3MzY=
12
+ data.tar.gz: !binary |-
13
+ NGMwNjA3ZWU2M2UxZjJjNjE3MzRhNjk3YzcwMzUzNDE5ZTk0ODc3Y2RiNjAy
14
+ MjQ2ODBkMjk2MzAyNDBhZWIzMTI4NGQyYzVkMTJkMDdhMjcwYzMzMWUzMDBh
15
+ NDA1MDJiOTc2Mzc5YTgyOTViMWUxM2JjZTFkYjAwMjA5OTRmNTk=
@@ -1,3 +1,4 @@
1
+ require 'active_support'
1
2
  require 'active_support/core_ext'
2
3
 
3
4
  class Medjool::DateRange
@@ -8,4 +9,4 @@ class Medjool::DateRange
8
9
  @start_date = start_date
9
10
  @end_date = end_date
10
11
  end
11
- end
12
+ end
@@ -1,3 +1,4 @@
1
+ require 'active_support'
1
2
  require 'active_support/core_ext'
2
3
 
3
4
  class Medjool::Parser
@@ -14,7 +15,7 @@ class Medjool::Parser
14
15
 
15
16
  def parse_date_range(text)
16
17
  if bits = Medjool::DATE_RANGE_MATCHER.match(text.strip)
17
- if bits[16]
18
+ if bits[51]
18
19
  # October
19
20
  if month_start = self.parse(text.strip, update_now = false)
20
21
  month_end = month_start.end_of_month
@@ -23,9 +24,21 @@ class Medjool::Parser
23
24
  elsif bits[2]
24
25
  # 12-15 Oct
25
26
  # Start is 12 Oct
26
- range_start = self.parse("#{bits[3]} #{bits[5]}", update_now = false)
27
+ end_month = bits[16]
28
+ start_month = bits[5] || end_month
29
+ range_start = self.parse("#{bits[3]} #{start_month}", update_now = false)
27
30
  # End is 15 Oct
28
- range_end = self.parse("#{bits[4]} #{bits[5]}", update_now = false)
31
+ range_end = self.parse("#{bits[15]} #{end_month}", update_now = false)
32
+ return Medjool::DateRange.new(range_start, range_end)
33
+ elsif bits[28]
34
+ # Oct 12-15
35
+ # Start is 12 Oct
36
+ end_month = bits[40]
37
+ start_month = bits[28] || end_month
38
+
39
+ range_start = self.parse("#{bits[38]} #{start_month}", update_now = false)
40
+ # End is 15 Oct
41
+ range_end = self.parse("#{bits[50]} #{end_month}", update_now = false)
29
42
  return Medjool::DateRange.new(range_start, range_end)
30
43
  end
31
44
  end
@@ -142,4 +155,4 @@ class Medjool::Parser
142
155
  return nil
143
156
  end
144
157
  end
145
- end
158
+ end
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Medjool
4
4
  DAYNAME_MATCHER = /(\s*Mon(day)?,?\s*|\s*Tue(s(day)?)?,?\s*|\s*Wed(nesday)?,?\s*|\s*Thu(r(s(day)?)?)?,?\s*|\s*Fri(day)?,?\s*|\s*Sat(urday)?,?\s*|\s*Sun(day)?,?\s*)([^a-zA-Z]|$)/i
5
- MONTH_NAME_MATCHER = /(Jan(uary)?|Feb(ruary)?|Mar(ch)?|Apr(il)?|May|June?|July?|Aug(ust)?|Sept(ember)?|Oct(ober)?|Nov(ember)?|Dec(ember)?)([^a-zA-Z]|$)/i
5
+ MONTH_NAME_MATCHER = /(Jan(uary)?|Feb(ruary)?|Mar(ch)?|Apr(il)?|May|June?|July?|Aug(ust)?|Sept(ember)?|Oct(ober)?|Nov(ember)?|Dec(ember)?)/i
6
6
  MONTH_MATCHER = /\s*#{MONTH_NAME_MATCHER},?\s*/
7
7
  YYYY_MM_DD_MATCHER = /(\s*[0-9]{4}-[0-9]{2}-[0-9]{2}\s*)/
8
8
  DM_DM_YYYY_MATCHER = /(\s*[0-9]{2}[-\/][0-9]{2}[-\/][0-9]{2,4}\s*)/
@@ -13,5 +13,5 @@ module Medjool
13
13
  TEXT_DATE_MATCHER = /(#{DAYNAME_MATCHER}|#{ORDINAL_MATCHER}|#{YEAR_MATCHER}|#{MONTH_MATCHER})/
14
14
  DATE_MATCHER = /^[^a-zA-Z0-9]*(#{TEXT_DATE_MATCHER}+|#{DM_DM_YYYY_MATCHER}|#{YYYY_MM_DD_MATCHER})/
15
15
 
16
- DATE_RANGE_MATCHER = /^((([0-9]+) ?[-–] ?([0-9]+) #{MONTH_NAME_MATCHER})|#{MONTH_NAME_MATCHER})$/
16
+ DATE_RANGE_MATCHER = /^((([0-9]+)( #{MONTH_NAME_MATCHER})? ?[-–] ?([0-9]+) #{MONTH_NAME_MATCHER}([^a-zA-Z]|$))|(#{MONTH_NAME_MATCHER} ([0-9]+) ?[-–] ?(#{MONTH_NAME_MATCHER} )?([0-9]+))|#{MONTH_NAME_MATCHER}([^a-zA-Z]|$))$/
17
17
  end
data/lib/medjool.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Medjool
2
- VERSION = '0.5.5'
2
+ VERSION = '0.5.6'
3
3
 
4
4
  require 'medjool/parser'
5
5
  require 'medjool/date_range'
data/medjool.gemspec CHANGED
@@ -16,7 +16,7 @@ Gem::Specification.new do |s|
16
16
  s.files = `git ls-files`.split("\n")
17
17
  s.test_files = `git ls-files -- test`.split("\n")
18
18
 
19
- s.add_dependency 'activesupport', '~> 3.2.12'
19
+ s.add_dependency 'activesupport', '>= 3.2.12'
20
20
  s.add_development_dependency 'rake'
21
21
  s.add_development_dependency 'minitest', '~> 5.0'
22
22
  end
data/test/helper.rb CHANGED
@@ -5,6 +5,7 @@ end
5
5
 
6
6
  require 'minitest'
7
7
  require 'minitest/autorun'
8
+ require 'active_support'
8
9
  require 'active_support/core_ext/string'
9
10
  require 'timecop'
10
11
 
@@ -12,4 +13,4 @@ class TestCase < MiniTest::Test
12
13
  def self.test(name, &block)
13
14
  define_method("test_#{name.gsub(/\W/, '_')}", &block) if block
14
15
  end
15
- end
16
+ end
data/test/test_medjool.rb CHANGED
@@ -66,6 +66,9 @@ class TestMedjool < TestCase
66
66
  assert parser.is_date_range?("October")
67
67
  assert parser.is_date_range?("12-15 Jan")
68
68
  assert parser.is_date_range?("12–15 Jan")
69
+ assert parser.is_date_range?("12 – 15 Jan")
70
+ assert parser.is_date_range?("28 January – 3 February")
71
+ assert parser.is_date_range?("AUGUST 12-15")
69
72
  assert !parser.is_date_range?("October 15")
70
73
  assert !parser.is_date_range?("09/12/2012")
71
74
  assert !parser.is_date_range?("I am working until next October")
@@ -79,6 +82,10 @@ class TestMedjool < TestCase
79
82
  date_range = parser.parse_date_range("12-15 Jan")
80
83
  assert_equal "2013-01-12".to_date, date_range.start_date
81
84
  assert_equal "2013-01-15".to_date, date_range.end_date
85
+ date_range = parser.parse_date_range("28 Jan-3 Feb")
86
+ assert_equal "2013-01-28".to_date, date_range.start_date
87
+ assert_equal "2013-02-03".to_date, date_range.end_date
88
+
82
89
  assert parser.parse_date_range("October 15").nil?
83
90
  end
84
91
 
metadata CHANGED
@@ -1,36 +1,32 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: medjool
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.5
5
- prerelease:
4
+ version: 0.5.6
6
5
  platform: ruby
7
6
  authors:
8
7
  - Andy Geers
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2014-03-03 00:00:00.000000000 Z
11
+ date: 2016-03-02 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: activesupport
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ~>
17
+ - - ! '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: 3.2.12
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ~>
24
+ - - ! '>='
28
25
  - !ruby/object:Gem::Version
29
26
  version: 3.2.12
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rake
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ! '>='
36
32
  - !ruby/object:Gem::Version
@@ -38,7 +34,6 @@ dependencies:
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - ! '>='
44
39
  - !ruby/object:Gem::Version
@@ -46,7 +41,6 @@ dependencies:
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: minitest
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
45
  - - ~>
52
46
  - !ruby/object:Gem::Version
@@ -54,7 +48,6 @@ dependencies:
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
52
  - - ~>
60
53
  - !ruby/object:Gem::Version
@@ -84,28 +77,27 @@ files:
84
77
  homepage: http://github.com/andygeers/medjool
85
78
  licenses:
86
79
  - MIT
80
+ metadata: {}
87
81
  post_install_message:
88
82
  rdoc_options:
89
83
  - --charset=UTF-8
90
84
  require_paths:
91
85
  - lib
92
86
  required_ruby_version: !ruby/object:Gem::Requirement
93
- none: false
94
87
  requirements:
95
88
  - - ! '>='
96
89
  - !ruby/object:Gem::Version
97
90
  version: '0'
98
91
  required_rubygems_version: !ruby/object:Gem::Requirement
99
- none: false
100
92
  requirements:
101
93
  - - ! '>='
102
94
  - !ruby/object:Gem::Version
103
95
  version: '0'
104
96
  requirements: []
105
97
  rubyforge_project:
106
- rubygems_version: 1.8.23
98
+ rubygems_version: 2.2.2
107
99
  signing_key:
108
- specification_version: 3
100
+ specification_version: 4
109
101
  summary: Date parsing with context
110
102
  test_files:
111
103
  - test/helper.rb