cyclical 0.1.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.
- data/.gitignore +19 -0
- data/.rspec +1 -0
- data/Gemfile +4 -0
- data/LICENSE +20 -0
- data/README.md +85 -0
- data/Rakefile +1 -0
- data/cyclical.gemspec +24 -0
- data/lib/cyclical/filters/monthdays_filter.rb +38 -0
- data/lib/cyclical/filters/months_filter.rb +55 -0
- data/lib/cyclical/filters/weekdays_filter.rb +90 -0
- data/lib/cyclical/filters/yeardays_filter.rb +38 -0
- data/lib/cyclical/occurrence.rb +121 -0
- data/lib/cyclical/rule.rb +235 -0
- data/lib/cyclical/rules/daily_rule.rb +49 -0
- data/lib/cyclical/rules/monthly_rule.rb +56 -0
- data/lib/cyclical/rules/weekly_rule.rb +58 -0
- data/lib/cyclical/rules/yearly_rule.rb +66 -0
- data/lib/cyclical/schedule.rb +125 -0
- data/lib/cyclical/suboccurrence.rb +48 -0
- data/lib/cyclical/version.rb +3 -0
- data/lib/cyclical.rb +12 -0
- data/spec/filters/monthdays_filter_spec.rb +36 -0
- data/spec/filters/months_filter_spec.rb +19 -0
- data/spec/filters/weekdays_filter_spec.rb +108 -0
- data/spec/filters/yeardays_filter_spec.rb +36 -0
- data/spec/occurrence_spec.rb +207 -0
- data/spec/rule_dsl_spec.rb +105 -0
- data/spec/rules/daily_rule_spec.rb +140 -0
- data/spec/rules/monthly_rule_spec.rb +218 -0
- data/spec/rules/weekly_rule_spec.rb +150 -0
- data/spec/rules/yearly_rule_spec.rb +232 -0
- data/spec/schedule_spec.rb +650 -0
- data/spec/spec_helper.rb +10 -0
- data/spec/suboccurrence_spec.rb +51 -0
- metadata +126 -0
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Suboccurrence do
|
4
|
+
it "should create occurrence through factory method" do
|
5
|
+
i1 = Time.now..(Time.now + 1.hour)
|
6
|
+
i2 = (Time.now - 1.hour)..(Time.now + 2.hours)
|
7
|
+
|
8
|
+
Suboccurrence.find(:occurrence => i1, :interval => i2).should be_a(Suboccurrence)
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should return nil when there no intersection" do
|
12
|
+
t = Time.now
|
13
|
+
s = Suboccurrence.find(:occurrence => t..(t+1.minute), :interval => (t+1.minute)..(t+2.minutes))
|
14
|
+
s.should be_nil
|
15
|
+
|
16
|
+
s = Suboccurrence.find(:occurrence => (t+1.minute)..(t+2.minutes), :interval => t..(t+1.minutes))
|
17
|
+
s.should be_nil
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should return the later of the two starts" do
|
21
|
+
t = Time.now
|
22
|
+
|
23
|
+
s = Suboccurrence.find(:occurrence => t..(t+1.hour), :interval => (t+2.minutes)..(t+2.hours))
|
24
|
+
s.start.should == t+2.minutes
|
25
|
+
|
26
|
+
s = Suboccurrence.find(:occurrence => (t+2.minutes)..(t+2.hours), :interval => t..(t+1.hour))
|
27
|
+
s.start.should == t+2.minutes
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should return the sooner of the two ends" do
|
31
|
+
t = Time.now
|
32
|
+
|
33
|
+
s = Suboccurrence.find(:occurrence => t..(t+1.hour), :interval => (t+2.minutes)..(t+2.hours))
|
34
|
+
s.end.should == t+1.hour
|
35
|
+
|
36
|
+
s = Suboccurrence.find(:occurrence => (t+2.minutes)..(t+2.hours), :interval => t..(t+1.hour))
|
37
|
+
s.end.should == t+1.hour
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should report cutoffs" do
|
41
|
+
t = Time.now
|
42
|
+
|
43
|
+
s = Suboccurrence.find(:occurrence => t..(t+1.hour), :interval => (t+2.minutes)..(t+2.hours))
|
44
|
+
s.occurrence_start?.should_not be_true
|
45
|
+
s.occurrence_end?.should be_true
|
46
|
+
|
47
|
+
s = Suboccurrence.find(:occurrence => (t+2.minutes)..(t+2.hours), :interval => t..(t+1.hour))
|
48
|
+
s.occurrence_start?.should be_true
|
49
|
+
s.occurrence_end?.should_not be_true
|
50
|
+
end
|
51
|
+
end
|
metadata
ADDED
@@ -0,0 +1,126 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: cyclical
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Viktor Charypar
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-10-03 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: active_support
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rspec
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
description: Cyclical lets you list recurring events with complex recurrence rules
|
47
|
+
like "every 4 years, the first Tuesday after a Monday in November" in a simple way.
|
48
|
+
email:
|
49
|
+
- charypar@gmail.com
|
50
|
+
executables: []
|
51
|
+
extensions: []
|
52
|
+
extra_rdoc_files: []
|
53
|
+
files:
|
54
|
+
- .gitignore
|
55
|
+
- .rspec
|
56
|
+
- Gemfile
|
57
|
+
- LICENSE
|
58
|
+
- README.md
|
59
|
+
- Rakefile
|
60
|
+
- cyclical.gemspec
|
61
|
+
- lib/cyclical.rb
|
62
|
+
- lib/cyclical/filters/monthdays_filter.rb
|
63
|
+
- lib/cyclical/filters/months_filter.rb
|
64
|
+
- lib/cyclical/filters/weekdays_filter.rb
|
65
|
+
- lib/cyclical/filters/yeardays_filter.rb
|
66
|
+
- lib/cyclical/occurrence.rb
|
67
|
+
- lib/cyclical/rule.rb
|
68
|
+
- lib/cyclical/rules/daily_rule.rb
|
69
|
+
- lib/cyclical/rules/monthly_rule.rb
|
70
|
+
- lib/cyclical/rules/weekly_rule.rb
|
71
|
+
- lib/cyclical/rules/yearly_rule.rb
|
72
|
+
- lib/cyclical/schedule.rb
|
73
|
+
- lib/cyclical/suboccurrence.rb
|
74
|
+
- lib/cyclical/version.rb
|
75
|
+
- spec/filters/monthdays_filter_spec.rb
|
76
|
+
- spec/filters/months_filter_spec.rb
|
77
|
+
- spec/filters/weekdays_filter_spec.rb
|
78
|
+
- spec/filters/yeardays_filter_spec.rb
|
79
|
+
- spec/occurrence_spec.rb
|
80
|
+
- spec/rule_dsl_spec.rb
|
81
|
+
- spec/rules/daily_rule_spec.rb
|
82
|
+
- spec/rules/monthly_rule_spec.rb
|
83
|
+
- spec/rules/weekly_rule_spec.rb
|
84
|
+
- spec/rules/yearly_rule_spec.rb
|
85
|
+
- spec/schedule_spec.rb
|
86
|
+
- spec/spec_helper.rb
|
87
|
+
- spec/suboccurrence_spec.rb
|
88
|
+
homepage: http://github.com/charypar/cyclical
|
89
|
+
licenses:
|
90
|
+
- MIT
|
91
|
+
post_install_message:
|
92
|
+
rdoc_options: []
|
93
|
+
require_paths:
|
94
|
+
- lib
|
95
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
96
|
+
none: false
|
97
|
+
requirements:
|
98
|
+
- - ! '>='
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: '0'
|
101
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
102
|
+
none: false
|
103
|
+
requirements:
|
104
|
+
- - ! '>='
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
version: '0'
|
107
|
+
requirements: []
|
108
|
+
rubyforge_project:
|
109
|
+
rubygems_version: 1.8.23
|
110
|
+
signing_key:
|
111
|
+
specification_version: 3
|
112
|
+
summary: Recurring events library for calendar applications.
|
113
|
+
test_files:
|
114
|
+
- spec/filters/monthdays_filter_spec.rb
|
115
|
+
- spec/filters/months_filter_spec.rb
|
116
|
+
- spec/filters/weekdays_filter_spec.rb
|
117
|
+
- spec/filters/yeardays_filter_spec.rb
|
118
|
+
- spec/occurrence_spec.rb
|
119
|
+
- spec/rule_dsl_spec.rb
|
120
|
+
- spec/rules/daily_rule_spec.rb
|
121
|
+
- spec/rules/monthly_rule_spec.rb
|
122
|
+
- spec/rules/weekly_rule_spec.rb
|
123
|
+
- spec/rules/yearly_rule_spec.rb
|
124
|
+
- spec/schedule_spec.rb
|
125
|
+
- spec/spec_helper.rb
|
126
|
+
- spec/suboccurrence_spec.rb
|