super_callbacks 1.0.0 → 1.0.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA256:
3
- metadata.gz: 8f2916d0d7aafdfe6d62022e295eb35f19fe4366fe584adcefbdd7a856154853
4
- data.tar.gz: 48e8b72a7e2dfbdc4109804062e60d62374dbcbcef42a42192991c7bb1a0a09b
2
+ SHA1:
3
+ metadata.gz: 39773c4b3169e56de61be4f51296349b7a984ced
4
+ data.tar.gz: c4584d56aec09b2057bda2da51f68faaddaf3d32
5
5
  SHA512:
6
- metadata.gz: e381891c442fdf4f6fed1bee814a9fe20314880a05e1f8003da8df4f8b67be6b97c38b20a95c07acec4ed9faf706896e4de854f0665c8894adbd2ffceaa4d701
7
- data.tar.gz: 8658ee29da8b6943a72c374c9df4efc9ebc81ba9ca023a7ff718644054c6b0a5c0b9b650c4efba9f590a9b783568676e8a127dfe8c86b494961a915ab6e317fd
6
+ metadata.gz: 3c05e4fac9fc819123b51ec67c36808d85246b2ee737fbab8e446a954d8150cca36f463bca7f87f4a36385b6e6dcc2b554d5bed9f4d43e022d1947d7c4129fd5
7
+ data.tar.gz: 05090fb64e346e02f89109c907f3aefb2ccc6bf97e2a705b2f10d19d47fe080b57656d0da981e200338a046b80399a66193a381f00ebff1ccdbf0b2b74a526c2
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.2.4
data/.travis.yml CHANGED
@@ -8,4 +8,4 @@ rvm:
8
8
  - 2.3.4
9
9
  - 2.4.1
10
10
  - 2.5.5
11
- before_install: gem install bundler -v 2.0.2
11
+ before_install: gem install bundler -v 1.16.4
data/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
  * Supports both class and instance level callbacks
7
7
  * Supports conditional callbacks
8
8
  * Supports inherited callbacks; hence named "Super", get it? :D haha!
9
-
9
+ ---
10
10
  * Focuses on performance and flexibility as intended primarily for game development, and event-driven apps
11
11
  * Standalone; no other gem dependencies
12
12
  * `super_callbacks` is the upgraded version of my other repo [`dragon_ruby_callbacks`](https://github.com/jrpolidario/dragonruby_callbacks)
@@ -316,12 +316,12 @@ foo.bar
316
316
 
317
317
  sub_foo = SubFoo.new
318
318
  sub_foo.bar
319
- # => 'SubFoo: bar'
320
319
  # => 'Foo: before bar 1!'
320
+ # => 'SubFoo: bar'
321
321
  # => 'bar!'
322
322
  ```
323
323
 
324
- *Notice above `sub_foo` calls both `before` callbacks defined in `Foo` and `SubFoo`, because SubFoo inherits from Foo. Callbacks are called in order of ancestors ascending; meaning it starts calling the instance's class (SubFoo) callbacks first, then the superclass's callbacks, and the remaining ancestor classes, etc...*
324
+ *Notice above `sub_foo` calls both `before` callbacks defined in `Foo` and `SubFoo`, because SubFoo inherits from Foo. Callbacks are called in order of ancestors descending; meaning it starts calling the top-level ancestor superclass callbacks, and then calling its subclass callbacks, until it reaches the instance's class callbacks*
325
325
  *Above uses `before`, but works similarly with `after`*
326
326
 
327
327
 
@@ -344,8 +344,8 @@ The gem is available as open source under the terms of the [MIT License](https:/
344
344
 
345
345
  ## Changelog
346
346
 
347
- * 1.0.0 (2019-08-12)
348
- * Cleaner code without explicitly calling `run_callbacks` anymore; done now because of ruby upgrade from 1.9 to 2.0+ which already supports `prepend`
347
+ * 1.0.1 (2019-08-12)
348
+ * Cleaner code without explicitly calling `run_callbacks` anymore; done now because of ruby upgrade from 1.9 to 2.0+ which already supports `prepend`
349
349
  * Supported both class and instance level callbacks
350
350
  * Supported inherited callbacks
351
351
  * v0.2.1 (2019-08-09) *From `dragonruby_callbacks`*
@@ -1,3 +1,3 @@
1
1
  module SuperCallbacks
2
- VERSION = '1.0.0'
2
+ VERSION = '1.0.1'
3
3
  end
@@ -6,13 +6,13 @@ module SuperCallbacks
6
6
  VALID_OPTION_KEYS = [:if].freeze
7
7
 
8
8
  def self.included(base)
9
- base.singleton_class.attr_accessor :before_callbacks, :after_callbacks
10
- base.attr_accessor :before_callbacks, :after_callbacks
9
+ base.singleton_class.send :attr_accessor, *[:before_callbacks, :after_callbacks]
10
+ base.send :attr_accessor, *[:before_callbacks, :after_callbacks]
11
11
  base.extend ClassMethods
12
- base.include InstanceMethods
12
+ base.send :include, InstanceMethods
13
13
  base.extend ClassAndInstanceMethods
14
- base.include ClassAndInstanceMethods
15
- base.prepend Prepended.new
14
+ base.send :include, ClassAndInstanceMethods
15
+ base.send :prepend, Prepended.new
16
16
  end
17
17
 
18
18
  class Prepended < Module
@@ -88,8 +88,8 @@ module SuperCallbacks
88
88
  _callbacks_prepended_module_instance = callbacks_prepended_module_instance
89
89
 
90
90
  # dont redefine, to save cpu cycles
91
- unless callbacks_prepended_module_instance.method_defined? method_name
92
- callbacks_prepended_module_instance.define_method method_name do |*args|
91
+ unless _callbacks_prepended_module_instance.method_defined? method_name
92
+ _callbacks_prepended_module_instance.send(:define_method, method_name) do |*args|
93
93
  run_before_callbacks(method_name, *args)
94
94
  super_value = super(*args)
95
95
  run_after_callbacks(method_name, *args)
@@ -120,7 +120,7 @@ module SuperCallbacks
120
120
 
121
121
  # dont redefine, to save cpu cycles
122
122
  unless _callbacks_prepended_module_instance.method_defined? method_name
123
- _callbacks_prepended_module_instance.define_method method_name do |*args|
123
+ _callbacks_prepended_module_instance.send(:define_method, method_name) do |*args|
124
124
  run_before_callbacks(method_name, *args)
125
125
  super_value = super(*args)
126
126
  run_after_callbacks(method_name, *args)
@@ -147,7 +147,7 @@ module SuperCallbacks
147
147
  # TODO: optimize by instead of dynamically getting all_ancestral_after_callbacks on runtime
148
148
  # set them immediately when `include` is called on Base class
149
149
  def run_before_callbacks(method_name, *args)
150
- all_ancestral_before_callbacks = self.class.ancestors.each_with_object({}) do |ancestor, hash|
150
+ all_ancestral_before_callbacks = self.class.ancestors.reverse.each_with_object({}) do |ancestor, hash|
151
151
  SuperCallbacks::Helpers.deep_merge_hashes_and_combine_arrays!(
152
152
  hash,
153
153
  ancestor.instance_variable_get(:@before_callbacks) || {}
@@ -183,7 +183,7 @@ module SuperCallbacks
183
183
  # TODO: optimize by instead of dynamically getting all_ancestral_after_callbacks on runtime
184
184
  # set them immediately when `include` is called on Base class
185
185
  def run_after_callbacks(method_name, *args)
186
- all_ancestral_after_callbacks = self.class.ancestors.each_with_object({}) do |ancestor, hash|
186
+ all_ancestral_after_callbacks = self.class.ancestors.reverse.each_with_object({}) do |ancestor, hash|
187
187
  SuperCallbacks::Helpers.deep_merge_hashes_and_combine_arrays!(
188
188
  hash,
189
189
  ancestor.instance_variable_get(:@after_callbacks) || {}
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
20
20
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
21
  spec.require_paths = ['lib']
22
22
 
23
- spec.add_development_dependency 'bundler', '~> 2.0'
23
+ spec.add_development_dependency 'bundler', '~> 1.16'
24
24
  spec.add_development_dependency 'rake', '~> 10.0'
25
25
  spec.add_development_dependency 'rspec', '~> 3.0'
26
26
  spec.add_development_dependency 'byebug', '~> 9.0'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: super_callbacks
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jules Roman B. Polidario
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '2.0'
19
+ version: '1.16'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '2.0'
26
+ version: '1.16'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -78,9 +78,9 @@ extra_rdoc_files: []
78
78
  files:
79
79
  - ".gitignore"
80
80
  - ".rspec"
81
+ - ".ruby-version"
81
82
  - ".travis.yml"
82
83
  - Gemfile
83
- - Gemfile.lock
84
84
  - LICENSE.txt
85
85
  - README.md
86
86
  - Rakefile
@@ -109,7 +109,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
109
109
  version: '0'
110
110
  requirements: []
111
111
  rubyforge_project:
112
- rubygems_version: 2.7.6.2
112
+ rubygems_version: 2.4.5.1
113
113
  signing_key:
114
114
  specification_version: 4
115
115
  summary: Allows `before` and `after` callbacks to any Class. Supports both class and
data/Gemfile.lock DELETED
@@ -1,37 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- super_callbacks (1.0.0)
5
-
6
- GEM
7
- remote: https://rubygems.org/
8
- specs:
9
- byebug (9.1.0)
10
- diff-lcs (1.3)
11
- rake (10.5.0)
12
- rspec (3.8.0)
13
- rspec-core (~> 3.8.0)
14
- rspec-expectations (~> 3.8.0)
15
- rspec-mocks (~> 3.8.0)
16
- rspec-core (3.8.2)
17
- rspec-support (~> 3.8.0)
18
- rspec-expectations (3.8.4)
19
- diff-lcs (>= 1.2.0, < 2.0)
20
- rspec-support (~> 3.8.0)
21
- rspec-mocks (3.8.1)
22
- diff-lcs (>= 1.2.0, < 2.0)
23
- rspec-support (~> 3.8.0)
24
- rspec-support (3.8.2)
25
-
26
- PLATFORMS
27
- ruby
28
-
29
- DEPENDENCIES
30
- bundler (~> 2.0)
31
- byebug (~> 9.0)
32
- rake (~> 10.0)
33
- rspec (~> 3.0)
34
- super_callbacks!
35
-
36
- BUNDLED WITH
37
- 2.0.2