timelord 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +5 -6
- data/lib/timelord.rb +19 -19
- data/spec/timelord_spec.rb +4 -0
- metadata +4 -4
data/Rakefile
CHANGED
@@ -3,21 +3,17 @@ require 'spec/rake/spectask'
|
|
3
3
|
require 'rake/rdoctask'
|
4
4
|
require 'rake/gempackagetask'
|
5
5
|
|
6
|
+
specification = Gem::Specification.load("timelord.gemspec")
|
7
|
+
|
6
8
|
Spec::Rake::SpecTask.new do |t|
|
7
9
|
t.spec_files = FileList['spec/**/*_spec.rb']
|
8
10
|
end
|
9
11
|
|
10
|
-
task :default => [:test]
|
11
|
-
task :test => [:spec]
|
12
|
-
|
13
|
-
specification = Gem::Specification.load("timelord.gemspec")
|
14
|
-
desc 'Package gem'
|
15
12
|
Rake::GemPackageTask.new(specification) do |package|
|
16
13
|
package.need_zip = true
|
17
14
|
package.need_tar = true
|
18
15
|
end
|
19
16
|
|
20
|
-
desc 'Generate documentation'
|
21
17
|
Rake::RDocTask.new(:rdoc) do |rdoc|
|
22
18
|
rdoc.rdoc_dir = 'doc'
|
23
19
|
rdoc.title = 'Timelord'
|
@@ -25,3 +21,6 @@ Rake::RDocTask.new(:rdoc) do |rdoc|
|
|
25
21
|
rdoc.rdoc_files.include('README*')
|
26
22
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
27
23
|
end
|
24
|
+
|
25
|
+
task :default => [:test]
|
26
|
+
task :test => [:spec]
|
data/lib/timelord.rb
CHANGED
@@ -18,49 +18,49 @@ class Timelord
|
|
18
18
|
# For more examples, check out the spec[https://github.com/halogenandtoast/timelord/blob/master/spec/timelord_spec.rb]
|
19
19
|
def self.parse(str, format = :international)
|
20
20
|
today = Date.today
|
21
|
-
if str =~
|
21
|
+
if str =~ /\b(\d{4})\/(\d{1,2})\/(\d{1,2})\b/i
|
22
22
|
Date.civil($1.to_i, $2.to_i, $3.to_i)
|
23
|
-
elsif str =~
|
23
|
+
elsif str =~ /\b(\d{4})\-(\d{1,2})\-(\d{1,2})\b/i
|
24
24
|
Date.civil($1.to_i, $2.to_i, $3.to_i)
|
25
|
-
elsif str =~
|
25
|
+
elsif str =~ /\b(\d{1,2})\/(\d{1,2})\/(\d{2}(\d{2})?)\b/i
|
26
26
|
if format == :american
|
27
27
|
Date.civil($3.to_i, $1.to_i, $2.to_i)
|
28
28
|
else
|
29
29
|
Date.civil($3.to_i, $2.to_i, $1.to_i)
|
30
30
|
end
|
31
|
-
elsif str =~
|
31
|
+
elsif str =~ /\b(\d{1,2})\/(\d{1,2})\b/i
|
32
32
|
date = if format == :american
|
33
33
|
Date.civil(today.year, $1.to_i, $2.to_i)
|
34
34
|
else
|
35
35
|
Date.civil(today.year, $2.to_i, $1.to_i)
|
36
36
|
end
|
37
37
|
set_to_future(date)
|
38
|
-
elsif str =~
|
38
|
+
elsif str =~ /\b(\d{1,2})\s+(#{SHORT_MATCHER})\b/i
|
39
39
|
date = Date.civil(today.year, SHORT_MONTHS.index($2.downcase) + 1, $1.to_i)
|
40
40
|
set_to_future(date)
|
41
|
-
elsif str =~
|
41
|
+
elsif str =~ /\b(#{SHORT_MATCHER})\s+(\d{1,2})\b/i
|
42
42
|
date = Date.civil(today.year, SHORT_MONTHS.index($1.downcase) + 1, $2.to_i)
|
43
43
|
set_to_future(date)
|
44
|
-
elsif str =~
|
44
|
+
elsif str =~ /\b(\d{1,2})(#{ORDINAL_MATCHER})\b/i
|
45
45
|
date = Date.civil(today.year, today.month, $1.to_i)
|
46
46
|
set_to_future(date)
|
47
|
-
elsif str
|
47
|
+
elsif str =~/\bnext (#{DAY_MATCHER})\b/i
|
48
48
|
expected_index = DAY_NAMES.index($1.downcase) || SHORT_DAY_NAMES.index($1.downcase)
|
49
49
|
next_weekday(expected_index)
|
50
|
-
elsif str
|
51
|
-
next_weekday(DAY_NAMES.index("
|
52
|
-
elsif str
|
53
|
-
next_weekday(DAY_NAMES.index("
|
54
|
-
elsif str
|
50
|
+
elsif str =~/\bnext tues\b/
|
51
|
+
next_weekday(DAY_NAMES.index("tuesday"))
|
52
|
+
elsif str =~/\bnext (thur|thurs)\b/
|
53
|
+
next_weekday(DAY_NAMES.index("thursday"))
|
54
|
+
elsif str =~/\b(#{DAY_MATCHER})\b/i
|
55
55
|
expected_index = DAY_NAMES.index($1.downcase) || SHORT_DAY_NAMES.index($1.downcase)
|
56
56
|
current_weekday(expected_index)
|
57
|
-
elsif str
|
58
|
-
current_weekday(DAY_NAMES.index("
|
59
|
-
elsif str
|
60
|
-
current_weekday(DAY_NAMES.index("
|
61
|
-
elsif str =~
|
57
|
+
elsif str =~/\btues\b/
|
58
|
+
current_weekday(DAY_NAMES.index("tuesday"))
|
59
|
+
elsif str =~/\b(thur|thurs)\b/
|
60
|
+
current_weekday(DAY_NAMES.index("thursday"))
|
61
|
+
elsif str =~ /\b(today|tod)\b/i
|
62
62
|
today
|
63
|
-
elsif str =~
|
63
|
+
elsif str =~ /\b(tomorrow|tom)\b/i
|
64
64
|
today + 1
|
65
65
|
end
|
66
66
|
end
|
data/spec/timelord_spec.rb
CHANGED
@@ -28,6 +28,10 @@ describe Timelord, 'parse' do
|
|
28
28
|
Timelord.parse("I need to do something tom.").should == tomorrow
|
29
29
|
end
|
30
30
|
|
31
|
+
it "does not parse 'monster' as monday" do
|
32
|
+
Timelord.parse("Monster mash").should == nil
|
33
|
+
end
|
34
|
+
|
31
35
|
it "parses '12 Dec'" do
|
32
36
|
twelth_of_december = Date.civil(2010,12,12)
|
33
37
|
Timelord.parse("On 12 Dec I need to do something.").should == twelth_of_december
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: timelord
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 21
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 5
|
10
|
+
version: 0.0.5
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Matthew Mongeau
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-04-09 00:00:00 -04:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|