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 +15 -0
- data/lib/medjool/date_range.rb +2 -1
- data/lib/medjool/parser.rb +17 -4
- data/lib/medjool/regexs.rb +2 -2
- data/lib/medjool.rb +1 -1
- data/medjool.gemspec +1 -1
- data/test/helper.rb +2 -1
- data/test/test_medjool.rb +7 -0
- metadata +7 -15
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=
|
data/lib/medjool/date_range.rb
CHANGED
data/lib/medjool/parser.rb
CHANGED
|
@@ -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[
|
|
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
|
-
|
|
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[
|
|
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
|
data/lib/medjool/regexs.rb
CHANGED
|
@@ -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)?)
|
|
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
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', '
|
|
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
|
-
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:
|
|
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:
|
|
98
|
+
rubygems_version: 2.2.2
|
|
107
99
|
signing_key:
|
|
108
|
-
specification_version:
|
|
100
|
+
specification_version: 4
|
|
109
101
|
summary: Date parsing with context
|
|
110
102
|
test_files:
|
|
111
103
|
- test/helper.rb
|