concerned_inheritance 0.0.1 → 0.0.2
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 +2 -0
- data/.idea/.name +1 -0
- data/.idea/.rakeTasks +7 -0
- data/.rspec +2 -0
- data/.travis.yml +5 -0
- data/Guardfile +24 -0
- data/README.md +4 -2
- data/concerned_inheritance.gemspec +1 -1
- data/lib/concerned_inheritance/class_methods.rb +28 -0
- data/lib/concerned_inheritance/delegator.rb +21 -0
- data/lib/concerned_inheritance/module_methods.rb +11 -0
- data/lib/concerned_inheritance/version.rb +1 -1
- data/spec/spec_helper.rb +17 -0
- metadata +12 -2
data/.gitignore
CHANGED
data/.idea/.name
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
concerned_inheritance
|
data/.idea/.rakeTasks
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<Settings><!--This file was automatically generated by Ruby plugin.
|
3
|
+
You are allowed to:
|
4
|
+
1. Remove rake task
|
5
|
+
2. Add existing rake tasks
|
6
|
+
To add existing rake tasks automatically delete this file and reload the project.
|
7
|
+
--><RakeGroup description="" fullCmd="" taksId="rake"><RakeTask description="Build concerned_inheritance-0.0.1.gem into the pkg directory" fullCmd="build" taksId="build" /><RakeTask description="Build and install concerned_inheritance-0.0.1.gem into system gems" fullCmd="install" taksId="install" /><RakeTask description="Create tag v0.0.1 and build and push concerned_inheritance-0.0.1.gem to Rubygems" fullCmd="release" taksId="release" /></RakeGroup></Settings>
|
data/.rspec
ADDED
data/.travis.yml
ADDED
data/Guardfile
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# A sample Guardfile
|
2
|
+
# More info at https://github.com/guard/guard#readme
|
3
|
+
|
4
|
+
guard 'rspec' do
|
5
|
+
watch(%r{^spec/.+_spec\.rb$})
|
6
|
+
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
|
7
|
+
watch('spec/spec_helper.rb') { "spec" }
|
8
|
+
|
9
|
+
# Rails example
|
10
|
+
watch(%r{^app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
|
11
|
+
watch(%r{^app/(.*)(\.erb|\.haml)$}) { |m| "spec/#{m[1]}#{m[2]}_spec.rb" }
|
12
|
+
watch(%r{^app/controllers/(.+)_(controller)\.rb$}) { |m| ["spec/routing/#{m[1]}_routing_spec.rb", "spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb", "spec/acceptance/#{m[1]}_spec.rb"] }
|
13
|
+
watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
|
14
|
+
watch('config/routes.rb') { "spec/routing" }
|
15
|
+
watch('app/controllers/application_controller.rb') { "spec/controllers" }
|
16
|
+
|
17
|
+
# Capybara features specs
|
18
|
+
watch(%r{^app/views/(.+)/.*\.(erb|haml)$}) { |m| "spec/features/#{m[1]}_spec.rb" }
|
19
|
+
|
20
|
+
# Turnip features and steps
|
21
|
+
watch(%r{^spec/acceptance/(.+)\.feature$})
|
22
|
+
watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) { |m| Dir[File.join("**/#{m[1]}.feature")][0] || 'spec/acceptance' }
|
23
|
+
end
|
24
|
+
|
data/README.md
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
[](https://travis-ci.org/jwaldrip/concerned_inheritance)
|
2
|
+
|
1
3
|
# ConcernedInheritance
|
2
4
|
|
3
5
|
ConcernedInheritance, allows you to place inheritance callbacks within your concerns.
|
@@ -26,7 +28,7 @@ class MyClass
|
|
26
28
|
include ConcernedInheritance
|
27
29
|
|
28
30
|
inherited do
|
29
|
-
puts "#{self} was inherited from #{baseclass}
|
31
|
+
puts "#{self} was inherited from #{baseclass}"
|
30
32
|
end
|
31
33
|
|
32
34
|
end
|
@@ -35,7 +37,7 @@ module MyModule
|
|
35
37
|
include ConcernedInheritance
|
36
38
|
|
37
39
|
inherited do
|
38
|
-
puts "#{self} was inherited from #{baseclass}
|
40
|
+
puts "#{self} was inherited from #{baseclass}"
|
39
41
|
end
|
40
42
|
|
41
43
|
end
|
@@ -10,7 +10,7 @@ Gem::Specification.new do |gem|
|
|
10
10
|
gem.email = ["jason@waldrip.net"]
|
11
11
|
gem.description = %q{Place inheritance callbacks within your concerns.}
|
12
12
|
gem.summary = %q{ConcernedInheritance, allows you to place inheritance callbacks within your concerns.}
|
13
|
-
gem.homepage = ""
|
13
|
+
gem.homepage = "https://github.com/jwaldrip/concerned_inheritance"
|
14
14
|
|
15
15
|
gem.files = `git ls-files`.split($/)
|
16
16
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module ConcernedInheritance::ClassMethods
|
2
|
+
|
3
|
+
def inherited_callbacks
|
4
|
+
(self.singleton_class.ancestors + self.ancestors).select do |ancestor|
|
5
|
+
ancestor.instance_variable_defined? :@inherited_callbacks
|
6
|
+
end.map do |ancestor|
|
7
|
+
ancestor.instance_variable_get :@inherited_callbacks
|
8
|
+
end.flatten
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def inherited(subclass=nil, &block)
|
14
|
+
if subclass.nil?
|
15
|
+
define_inherited_callback(&block)
|
16
|
+
else
|
17
|
+
run_inherited_callbacks(subclass)
|
18
|
+
super(subclass)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def run_inherited_callbacks(subclass)
|
23
|
+
self.inherited_callbacks.each do |callback|
|
24
|
+
ConcernedInheritance::Delegator.new(self, subclass, callback)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
class ConcernedInheritance::Delegator < BasicObject
|
2
|
+
|
3
|
+
attr_reader :baseclass, :subclass
|
4
|
+
|
5
|
+
def initialize(baseclass, subclass, callback)
|
6
|
+
@baseclass = baseclass
|
7
|
+
@subclass = subclass
|
8
|
+
if !callback.is_a?(::Proc)
|
9
|
+
raise ::ArgumentError, "#{callback} must be a proc"
|
10
|
+
elsif (-1..0).cover?(callback.arity)
|
11
|
+
instance_eval(&callback)
|
12
|
+
else
|
13
|
+
raise ::ArgumentError, "#{callback} must have an arity of 0, got #{callback.arity}"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def method_missing(m, *args, &block)
|
18
|
+
subclass.send m, *args, &block
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
# This file was generated by the `rspec --init` command. Conventionally, all
|
2
|
+
# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
|
3
|
+
# Require this file using `require "spec_helper"` to ensure that it is only
|
4
|
+
# loaded once.
|
5
|
+
#
|
6
|
+
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
7
|
+
RSpec.configure do |config|
|
8
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
9
|
+
config.run_all_when_everything_filtered = true
|
10
|
+
config.filter_run :focus
|
11
|
+
|
12
|
+
# Run specs in random order to surface order dependencies. If you find an
|
13
|
+
# order dependency and want to debug it, you can fix the order by providing
|
14
|
+
# the seed, which is printed after each run.
|
15
|
+
# --seed 1234
|
16
|
+
config.order = 'random'
|
17
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: concerned_inheritance
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -115,24 +115,33 @@ extensions: []
|
|
115
115
|
extra_rdoc_files: []
|
116
116
|
files:
|
117
117
|
- .gitignore
|
118
|
+
- .idea/.name
|
119
|
+
- .idea/.rakeTasks
|
118
120
|
- .idea/concerned_inheritance.iml
|
119
121
|
- .idea/encodings.xml
|
120
122
|
- .idea/misc.xml
|
121
123
|
- .idea/modules.xml
|
122
124
|
- .idea/scopes/scope_settings.xml
|
123
125
|
- .idea/vcs.xml
|
126
|
+
- .rspec
|
127
|
+
- .travis.yml
|
124
128
|
- Gemfile
|
129
|
+
- Guardfile
|
125
130
|
- LICENSE.txt
|
126
131
|
- README.md
|
127
132
|
- Rakefile
|
128
133
|
- concerned_inheritance.gemspec
|
129
134
|
- lib/concerned_inheritance.rb
|
135
|
+
- lib/concerned_inheritance/class_methods.rb
|
136
|
+
- lib/concerned_inheritance/delegator.rb
|
137
|
+
- lib/concerned_inheritance/module_methods.rb
|
130
138
|
- lib/concerned_inheritance/version.rb
|
131
139
|
- spec/concerned_inheritance/class_methods_spec.rb
|
132
140
|
- spec/concerned_inheritance/delegator_spec.rb
|
133
141
|
- spec/concerned_inheritance/module_methods_spec.rb
|
134
142
|
- spec/concerned_inheritance_spec.rb
|
135
|
-
|
143
|
+
- spec/spec_helper.rb
|
144
|
+
homepage: https://github.com/jwaldrip/concerned_inheritance
|
136
145
|
licenses: []
|
137
146
|
post_install_message:
|
138
147
|
rdoc_options: []
|
@@ -162,3 +171,4 @@ test_files:
|
|
162
171
|
- spec/concerned_inheritance/delegator_spec.rb
|
163
172
|
- spec/concerned_inheritance/module_methods_spec.rb
|
164
173
|
- spec/concerned_inheritance_spec.rb
|
174
|
+
- spec/spec_helper.rb
|