chronic_between 0.1.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 +54 -0
  2. metadata +56 -0
@@ -0,0 +1,54 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # file: chronic_between.rb
4
+
5
+ class ChronicBetween
6
+
7
+ def initialize(s)
8
+ @s = s
9
+ end
10
+
11
+ def build_range(date)
12
+
13
+ date_ranges = []
14
+
15
+ # parse the days
16
+ raw_days = @s.split(',')
17
+
18
+ raw_days.each do |d|
19
+
20
+ # e.g. Mon-Fri 9:00-16:30
21
+ raw1 = d.match(/(\w+)-(\w+)\s+([^-]+)-(.*)/)
22
+
23
+ if raw1 then
24
+
25
+ d1, d2, rt1, rt2 = raw1.captures
26
+ date_ranges << [[d1,rt1], [d2,rt2]].map do |d,r|
27
+ cdate = Chronic.parse(d, :now => (date - 1)
28
+ DateTime.parse(cdate).strftime("%d-%b-%y") + ' ' + r)
29
+ end
30
+
31
+ else
32
+
33
+ # e.g. Saturday
34
+ day = d.strip[/^\w+$/]
35
+
36
+ if day then
37
+ cdate = Chronic.parse(day, :now => (date - 1))
38
+ d1 = DateTime.parse(cdate.strftime("%d-%b-%y") + ' 00:00')
39
+ d2 = d1 + 1
40
+ date_ranges << [d1, d2]
41
+ end
42
+ end
43
+ end
44
+ end
45
+
46
+ def within?(date)
47
+ date_ranges = build_range date
48
+ d = date_ranges.detect do |d1, d2|
49
+ date.between? d1, d2
50
+ end
51
+ d ? true : false
52
+ end
53
+
54
+ end
metadata ADDED
@@ -0,0 +1,56 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: chronic_between
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.1.0
6
+ platform: ruby
7
+ authors: []
8
+
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2011-03-26 00:00:00 +00:00
14
+ default_executable:
15
+ dependencies: []
16
+
17
+ description:
18
+ email:
19
+ executables: []
20
+
21
+ extensions: []
22
+
23
+ extra_rdoc_files: []
24
+
25
+ files:
26
+ - lib/chronic_between.rb
27
+ has_rdoc: true
28
+ homepage:
29
+ licenses: []
30
+
31
+ post_install_message:
32
+ rdoc_options: []
33
+
34
+ require_paths:
35
+ - lib
36
+ required_ruby_version: !ruby/object:Gem::Requirement
37
+ none: false
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: "0"
42
+ required_rubygems_version: !ruby/object:Gem::Requirement
43
+ none: false
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: "0"
48
+ requirements: []
49
+
50
+ rubyforge_project:
51
+ rubygems_version: 1.5.2
52
+ signing_key:
53
+ specification_version: 3
54
+ summary: chronic_between
55
+ test_files: []
56
+