power-types 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,31 @@
1
+ module PowerTypes
2
+ class Trigger
3
+ attr_reader :type, :event
4
+
5
+ def initialize(_type, _event, _handler = nil, _options = {}, &_block)
6
+ validate_params(_type, _event, _handler, _block)
7
+ @type = _type
8
+ @event = _event
9
+ @handler = _handler || _block
10
+ @options = _options
11
+ end
12
+
13
+ def call(_observer)
14
+ case @handler
15
+ when String, Symbol
16
+ _observer.public_send(@handler)
17
+ when Proc
18
+ _observer.instance_exec(&@handler)
19
+ end
20
+ end
21
+
22
+ private
23
+
24
+ def validate_params(_type, _event, _handler, _block)
25
+ raise "Invalid type #{_type}" unless PowerTypes::Util::OBSERVABLE_TYPES.include?(_type)
26
+ raise "Invalid event #{_event}" unless PowerTypes::Util::OBSERVABLE_EVENTS.include?(_event)
27
+ raise "Invalid handler" unless [String, Symbol, NilClass, Proc].include?(_handler.class)
28
+ raise "Missing block or handler name" if !_handler && !_block
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,6 @@
1
+ module PowerTypes
2
+ module Util
3
+ OBSERVABLE_EVENTS = [:create, :update, :save, :destroy]
4
+ OBSERVABLE_TYPES = [:before, :after]
5
+ end
6
+ end
@@ -1,3 +1,3 @@
1
1
  module PowerTypes
2
- VERSION = '0.1.2'
3
- end
2
+ VERSION = '0.2.0'
3
+ end
@@ -9,8 +9,8 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ["Ignacio Baixas", "Felipe Balart"]
10
10
  spec.email = ["ignacio@platan.us", "felipe@platan.us"]
11
11
 
12
- spec.summary = %q{Power Types for Rails by Platanus}
13
- spec.description = %q{Power Types for Rails by Platanus}
12
+ spec.summary = "Power Types for Rails by Platanus"
13
+ spec.description = "Power Types for Rails by Platanus"
14
14
  spec.homepage = "https://github.com/platanus/power-types"
15
15
  spec.license = "MIT"
16
16
 
@@ -30,4 +30,5 @@ Gem::Specification.new do |spec|
30
30
  spec.add_development_dependency "pry-remote", "~> 0.1"
31
31
  spec.add_development_dependency "pry-byebug", "~> 3.2"
32
32
  spec.add_development_dependency "pry-nav", "~> 0.2"
33
+ spec.add_development_dependency "coveralls"
33
34
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: power-types
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ignacio Baixas
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2016-10-26 00:00:00.000000000 Z
12
+ date: 2017-04-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -171,6 +171,20 @@ dependencies:
171
171
  - - "~>"
172
172
  - !ruby/object:Gem::Version
173
173
  version: '0.2'
174
+ - !ruby/object:Gem::Dependency
175
+ name: coveralls
176
+ requirement: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ type: :development
182
+ prerelease: false
183
+ version_requirements: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: '0'
174
188
  description: Power Types for Rails by Platanus
175
189
  email:
176
190
  - ignacio@platan.us
@@ -179,8 +193,11 @@ executables: []
179
193
  extensions: []
180
194
  extra_rdoc_files: []
181
195
  files:
196
+ - ".coveralls.yml"
182
197
  - ".gitignore"
198
+ - ".hound.yml"
183
199
  - ".rspec"
200
+ - ".rubocop.yml"
184
201
  - ".travis.yml"
185
202
  - CODE_OF_CONDUCT.md
186
203
  - Gemfile
@@ -190,17 +207,24 @@ files:
190
207
  - Rakefile
191
208
  - lib/generators/power_types/init_generator.rb
192
209
  - lib/generators/rails/command_generator.rb
210
+ - lib/generators/rails/observer_generator.rb
193
211
  - lib/generators/rails/service_generator.rb
194
212
  - lib/generators/rails/templates/command.rb
195
213
  - lib/generators/rails/templates/command_spec.rb
214
+ - lib/generators/rails/templates/observer.rb
215
+ - lib/generators/rails/templates/observer_spec.rb
196
216
  - lib/generators/rails/templates/service.rb
197
217
  - lib/generators/rails/templates/service_spec.rb
198
218
  - lib/power-types.rb
199
219
  - lib/power_types.rb
200
220
  - lib/power_types/patterns/command.rb
221
+ - lib/power_types/patterns/observer/observable.rb
222
+ - lib/power_types/patterns/observer/observer.rb
223
+ - lib/power_types/patterns/observer/trigger.rb
201
224
  - lib/power_types/patterns/service.rb
225
+ - lib/power_types/util.rb
202
226
  - lib/power_types/version.rb
203
- - power_types.gemspec
227
+ - power-types.gemspec
204
228
  homepage: https://github.com/platanus/power-types
205
229
  licenses:
206
230
  - MIT
@@ -221,9 +245,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
221
245
  version: '0'
222
246
  requirements: []
223
247
  rubyforge_project:
224
- rubygems_version: 2.6.4
248
+ rubygems_version: 2.4.5
225
249
  signing_key:
226
250
  specification_version: 4
227
251
  summary: Power Types for Rails by Platanus
228
252
  test_files: []
229
- has_rdoc: