chronic_between 0.1.4 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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: []