power-types 0.1.2 → 0.2.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.
@@ -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: