dgp-schedule_attributes 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +4 -0
  3. data/.rspec +1 -0
  4. data/.travis.yml +28 -0
  5. data/Appraisals +21 -0
  6. data/Gemfile +4 -0
  7. data/Gemfile.lock +63 -0
  8. data/README.markdown +78 -0
  9. data/Rakefile +7 -0
  10. data/gemfiles/rails_3.2.gemfile +8 -0
  11. data/gemfiles/rails_3.2.gemfile.lock +112 -0
  12. data/gemfiles/rails_4.0.gemfile +7 -0
  13. data/gemfiles/rails_4.0.gemfile.lock +76 -0
  14. data/gemfiles/rails_4.1.gemfile +7 -0
  15. data/gemfiles/rails_4.1.gemfile.lock +75 -0
  16. data/gemfiles/rails_4.2.gemfile +7 -0
  17. data/gemfiles/rails_4.2.gemfile.lock +75 -0
  18. data/gemfiles/rails_edge.gemfile +8 -0
  19. data/gemfiles/rails_edge.gemfile.lock +83 -0
  20. data/lib/schedule_attributes.rb +18 -0
  21. data/lib/schedule_attributes/active_record.rb +50 -0
  22. data/lib/schedule_attributes/configuration.rb +22 -0
  23. data/lib/schedule_attributes/core.rb +146 -0
  24. data/lib/schedule_attributes/extensions/ice_cube.rb +11 -0
  25. data/lib/schedule_attributes/form_builder.rb +42 -0
  26. data/lib/schedule_attributes/input.rb +159 -0
  27. data/lib/schedule_attributes/model.rb +24 -0
  28. data/lib/schedule_attributes/railtie.rb +13 -0
  29. data/lib/schedule_attributes/rule_parser.rb +25 -0
  30. data/lib/schedule_attributes/rule_parser/base.rb +96 -0
  31. data/lib/schedule_attributes/rule_parser/day.rb +13 -0
  32. data/lib/schedule_attributes/rule_parser/month.rb +40 -0
  33. data/lib/schedule_attributes/rule_parser/week.rb +18 -0
  34. data/lib/schedule_attributes/rule_parser/year.rb +21 -0
  35. data/lib/schedule_attributes/serializer.rb +30 -0
  36. data/lib/schedule_attributes/time_helpers.rb +36 -0
  37. data/lib/schedule_attributes/version.rb +3 -0
  38. data/schedule_attributes.gemspec +32 -0
  39. data/spec/active_record_integration_spec.rb +57 -0
  40. data/spec/schedule_attributes/configuration_spec.rb +29 -0
  41. data/spec/schedule_attributes/input_spec.rb +182 -0
  42. data/spec/schedule_attributes/rule_parser/day_spec.rb +113 -0
  43. data/spec/schedule_attributes/rule_parser/month_spec.rb +47 -0
  44. data/spec/schedule_attributes/rule_parser/week_spec.rb +36 -0
  45. data/spec/schedule_attributes/rule_parser/year_spec.rb +53 -0
  46. data/spec/schedule_attributes/rule_parser_spec.rb +18 -0
  47. data/spec/schedule_attributes/time_helpers_spec.rb +39 -0
  48. data/spec/schedule_attributes_spec.rb +226 -0
  49. data/spec/spec_helper.rb +11 -0
  50. data/spec/support/parser_macros.rb +31 -0
  51. data/spec/support/scheduled_active_record_model.rb +39 -0
  52. data/spec/support/scheduled_model.rb +16 -0
  53. metadata +234 -0
@@ -0,0 +1,39 @@
1
+ require 'active_record'
2
+ require 'schedule_attributes/active_record'
3
+
4
+ class ActiveRecord::Base
5
+ extend ScheduleAttributes::ActiveRecord::Sugar
6
+
7
+ establish_connection( adapter: "sqlite3", database: ":memory:" )
8
+ end
9
+
10
+ ActiveRecord::Migration.create_table :calendars do |t|
11
+ t.text :schedule
12
+ t.text :my_schedule
13
+ end
14
+
15
+ class CustomScheduledActiveRecordModel < ActiveRecord::Base
16
+ self.table_name = :calendars
17
+ has_schedule_attributes :column_name => :my_schedule
18
+
19
+ def default_schedule
20
+ s = IceCube::Schedule.new(Date.today.to_time)
21
+ s.add_recurrence_rule IceCube::Rule.hourly
22
+ s
23
+ end
24
+
25
+ def initialize(*args)
26
+ super
27
+ @can_access_default_schedule_in_initialize = my_schedule.next_occurrence
28
+ end
29
+ end
30
+
31
+ class DefaultScheduledActiveRecordModel < ActiveRecord::Base
32
+ self.table_name = :calendars
33
+ has_schedule_attributes
34
+
35
+ def initialize(*args)
36
+ super
37
+ @can_access_default_schedule_in_initialize = schedule.next_occurrence
38
+ end
39
+ end
@@ -0,0 +1,16 @@
1
+ require 'schedule_attributes'
2
+
3
+ class ScheduledModel
4
+ include ScheduleAttributes::Model
5
+ attr_accessor :schedule
6
+
7
+ schedule_field = :schedule
8
+
9
+ def schedule
10
+ @schedule or ScheduleAttributes.default_schedule
11
+ end
12
+
13
+ def schedule=(new_schedule)
14
+ @schedule = new_schedule
15
+ end
16
+ end
metadata ADDED
@@ -0,0 +1,234 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dgp-schedule_attributes
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.4.0
5
+ platform: ruby
6
+ authors:
7
+ - David Gil
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-08-26 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: ice_cube
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.13'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.13'
27
+ - !ruby/object:Gem::Dependency
28
+ name: activesupport
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '3.2'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '3.2'
41
+ - !ruby/object:Gem::Dependency
42
+ name: tzinfo
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '2.99'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '2.99'
83
+ - !ruby/object:Gem::Dependency
84
+ name: pry
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: activerecord
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '3.2'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '3.2'
111
+ - !ruby/object:Gem::Dependency
112
+ name: sqlite3
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: appraisal
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ description: Converts to/from date & time inputs for managing scheduled models.
140
+ email:
141
+ - dgilperez@gmail.com
142
+ executables: []
143
+ extensions: []
144
+ extra_rdoc_files: []
145
+ files:
146
+ - ".gitignore"
147
+ - ".rspec"
148
+ - ".travis.yml"
149
+ - Appraisals
150
+ - Gemfile
151
+ - Gemfile.lock
152
+ - README.markdown
153
+ - Rakefile
154
+ - gemfiles/rails_3.2.gemfile
155
+ - gemfiles/rails_3.2.gemfile.lock
156
+ - gemfiles/rails_4.0.gemfile
157
+ - gemfiles/rails_4.0.gemfile.lock
158
+ - gemfiles/rails_4.1.gemfile
159
+ - gemfiles/rails_4.1.gemfile.lock
160
+ - gemfiles/rails_4.2.gemfile
161
+ - gemfiles/rails_4.2.gemfile.lock
162
+ - gemfiles/rails_edge.gemfile
163
+ - gemfiles/rails_edge.gemfile.lock
164
+ - lib/schedule_attributes.rb
165
+ - lib/schedule_attributes/active_record.rb
166
+ - lib/schedule_attributes/configuration.rb
167
+ - lib/schedule_attributes/core.rb
168
+ - lib/schedule_attributes/extensions/ice_cube.rb
169
+ - lib/schedule_attributes/form_builder.rb
170
+ - lib/schedule_attributes/input.rb
171
+ - lib/schedule_attributes/model.rb
172
+ - lib/schedule_attributes/railtie.rb
173
+ - lib/schedule_attributes/rule_parser.rb
174
+ - lib/schedule_attributes/rule_parser/base.rb
175
+ - lib/schedule_attributes/rule_parser/day.rb
176
+ - lib/schedule_attributes/rule_parser/month.rb
177
+ - lib/schedule_attributes/rule_parser/week.rb
178
+ - lib/schedule_attributes/rule_parser/year.rb
179
+ - lib/schedule_attributes/serializer.rb
180
+ - lib/schedule_attributes/time_helpers.rb
181
+ - lib/schedule_attributes/version.rb
182
+ - schedule_attributes.gemspec
183
+ - spec/active_record_integration_spec.rb
184
+ - spec/schedule_attributes/configuration_spec.rb
185
+ - spec/schedule_attributes/input_spec.rb
186
+ - spec/schedule_attributes/rule_parser/day_spec.rb
187
+ - spec/schedule_attributes/rule_parser/month_spec.rb
188
+ - spec/schedule_attributes/rule_parser/week_spec.rb
189
+ - spec/schedule_attributes/rule_parser/year_spec.rb
190
+ - spec/schedule_attributes/rule_parser_spec.rb
191
+ - spec/schedule_attributes/time_helpers_spec.rb
192
+ - spec/schedule_attributes_spec.rb
193
+ - spec/spec_helper.rb
194
+ - spec/support/parser_macros.rb
195
+ - spec/support/scheduled_active_record_model.rb
196
+ - spec/support/scheduled_model.rb
197
+ homepage: https://github.com/dgilperez/schedule_attributes
198
+ licenses: []
199
+ metadata: {}
200
+ post_install_message:
201
+ rdoc_options: []
202
+ require_paths:
203
+ - lib
204
+ required_ruby_version: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ">="
207
+ - !ruby/object:Gem::Version
208
+ version: '0'
209
+ required_rubygems_version: !ruby/object:Gem::Requirement
210
+ requirements:
211
+ - - ">="
212
+ - !ruby/object:Gem::Version
213
+ version: '0'
214
+ requirements: []
215
+ rubyforge_project:
216
+ rubygems_version: 2.4.6
217
+ signing_key:
218
+ specification_version: 4
219
+ summary: Handle form inputs for IceCube schedules
220
+ test_files:
221
+ - spec/active_record_integration_spec.rb
222
+ - spec/schedule_attributes/configuration_spec.rb
223
+ - spec/schedule_attributes/input_spec.rb
224
+ - spec/schedule_attributes/rule_parser/day_spec.rb
225
+ - spec/schedule_attributes/rule_parser/month_spec.rb
226
+ - spec/schedule_attributes/rule_parser/week_spec.rb
227
+ - spec/schedule_attributes/rule_parser/year_spec.rb
228
+ - spec/schedule_attributes/rule_parser_spec.rb
229
+ - spec/schedule_attributes/time_helpers_spec.rb
230
+ - spec/schedule_attributes_spec.rb
231
+ - spec/spec_helper.rb
232
+ - spec/support/parser_macros.rb
233
+ - spec/support/scheduled_active_record_model.rb
234
+ - spec/support/scheduled_model.rb