chronic_between 0.1.4 → 0.2.0

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.
Files changed (2) hide show
  1. data/lib/chronic_between.rb +45 -28
  2. metadata +12 -1
@@ -9,49 +9,66 @@ class ChronicBetween
9
9
 
10
10
  def initialize(s)
11
11
  @s = s
12
+ @date_ranges = []
12
13
  end
14
+
15
+ def within?(date)
16
+ params = {}
17
+ @app = AppRoutes.new(params)
18
+ ranges(params, date)
19
+ build_range date
20
+
21
+ d = @date_ranges.detect do |d1, d2|
22
+ date.between? d1, d2
23
+ end
24
+ d ? true : false
25
+ end
26
+
27
+ private
28
+
29
+ def ranges(params, date)
13
30
 
14
- def build_range(date)
15
-
16
- date_ranges = []
17
-
18
- # parse the days
19
- raw_days = @s.split(',')
20
-
21
- raw_days.each do |d|
31
+ @app.routes do
22
32
 
23
33
  # e.g. Mon-Fri 9:00-16:30
24
- raw1 = d.match(/(\w+)-(\w+)\s+([^-]+)-(.*)/)
25
-
26
- if raw1 then
34
+ get %r{(\w+)-(\w+)\s+([^-]+)-(.*)} do
35
+
36
+ d1, d2, rt1, rt2 = params[:captures]
27
37
 
28
- d1, d2, rt1, rt2 = raw1.captures
29
- date_ranges << [[d1,rt1], [d2,rt2]].map do |d,r|
38
+ @date_ranges << [[d1,rt1], [d2,rt2]].map do |d,r|
30
39
  cdate = Chronic.parse(d, :now => (date - 1))
31
40
  DateTime.parse(cdate.strftime("%d-%b-%y") + ' ' + r)
32
41
  end
33
42
 
34
- else
43
+ end
35
44
 
36
- # e.g. Saturday
37
- day = d.strip[/^\w+$/]
45
+ # e.g. Saturday
46
+ get %r{^(\w+)$} do
47
+ day = params[:captures].first
48
+ cdate = Chronic.parse(day, :now => (date - 1))
49
+ d1 = DateTime.parse(cdate.strftime("%d-%b-%y") + ' 00:00')
50
+ d2 = d1 + 1
51
+ @date_ranges << [d1, d2]
52
+ end
38
53
 
39
- if day then
40
- cdate = Chronic.parse(day, :now => (date - 1))
41
- d1 = DateTime.parse(cdate.strftime("%d-%b-%y") + ' 00:00')
42
- d2 = d1 + 1
43
- date_ranges << [d1, d2]
44
- end
54
+ # e.g. 3:45-5:15
55
+ get %r{(\d+:\d+)-(\d+:\d+)} do
56
+ t1, t2 = params[:captures]
57
+ @date_ranges << [t1,t2].map {|t| DateTime.parse(t)}
45
58
  end
59
+
46
60
  end
61
+
47
62
  end
63
+
64
+ def get(arg,&block)
65
+ @app.get(arg, &block)
66
+ end
48
67
 
49
- def within?(date)
50
- date_ranges = build_range date
51
- d = date_ranges.detect do |d1, d2|
52
- date.between? d1, d2
53
- end
54
- d ? true : false
68
+ def build_range(date)
69
+ # parse the days
70
+ raw_days = @s.split(',')
71
+ raw_days.each {|d| @app.run(d.strip)}
55
72
  end
56
73
 
57
74
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: chronic_between
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.1.4
5
+ version: 0.2.0
6
6
  platform: ruby
7
7
  authors: []
8
8
 
@@ -24,6 +24,17 @@ dependencies:
24
24
  version: "0"
25
25
  type: :runtime
26
26
  version_requirements: *id001
27
+ - !ruby/object:Gem::Dependency
28
+ name: app-routes
29
+ prerelease: false
30
+ requirement: &id002 !ruby/object:Gem::Requirement
31
+ none: false
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: "0"
36
+ type: :runtime
37
+ version_requirements: *id002
27
38
  description:
28
39
  email:
29
40
  executables: []