poly_delegate 1.2.0 → 1.2.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 +4 -4
- data/Gemfile +1 -0
- data/ext/mkrf_conf.rb +24 -0
- data/lib/poly_delegate/call.rb +3 -1
- data/lib/poly_delegate/delegated.rb +0 -1
- data/lib/poly_delegate/version.rb +1 -1
- data/poly_delegate.gemspec +1 -2
- metadata +6 -19
- data/lib/poly_delegate/force_bind.rb +0 -31
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c018aa113ece721f6bacfa91534316cd75b7c911
|
4
|
+
data.tar.gz: f763daa3e840b6fa9d2ade107bf4b6354779d940
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bf264d0aac873af98c61611264a29c79624e676a3e4de2f654ff0304d96997438cef37504f8916cdbf759779910c63e9fd1a6a2a489f7110e578b8de0853cea8
|
7
|
+
data.tar.gz: e887dfa4b0775aeaaf7c9408e5fd23bc15351077c9b4f63d35812bd099de165ed0b037df66244f433ca0e74cb4b19208216be9c2873fd7e137936af3423d9588
|
data/Gemfile
CHANGED
data/ext/mkrf_conf.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# Copyright (c) 2016 Nathan Currier
|
3
|
+
|
4
|
+
require 'rubygems'
|
5
|
+
require 'rubygems/command'
|
6
|
+
require 'rubygems/dependency_installer'
|
7
|
+
|
8
|
+
begin
|
9
|
+
Gem::Command.build_args = ARGV
|
10
|
+
rescue NoMethodError
|
11
|
+
end
|
12
|
+
|
13
|
+
installer = Gem::DependencyInstaller.new
|
14
|
+
|
15
|
+
case RUBY_ENGINE
|
16
|
+
when 'rbx'
|
17
|
+
installer.install 'force_bind_rbx'
|
18
|
+
when 'ruby'
|
19
|
+
installer.install 'force_bind'
|
20
|
+
end
|
21
|
+
|
22
|
+
File.open(File.join(File.dirname(__FILE__), 'Rakefile'), 'w') do |f|
|
23
|
+
f.write('task :default')
|
24
|
+
end
|
data/lib/poly_delegate/call.rb
CHANGED
@@ -7,6 +7,8 @@
|
|
7
7
|
|
8
8
|
require 'poly_delegate/method'
|
9
9
|
|
10
|
+
require 'force_bind'
|
11
|
+
|
10
12
|
module PolyDelegate
|
11
13
|
def self.distinguish_delegator(obj, *args)
|
12
14
|
delegator =
|
@@ -21,7 +23,7 @@ module PolyDelegate
|
|
21
23
|
|
22
24
|
def self.delegate_call(obj, method, *args, &block)
|
23
25
|
delegator, args = distinguish_delegator(obj, *args)
|
24
|
-
bound = force_bind(delegator
|
26
|
+
bound = method.force_bind(delegator)
|
25
27
|
bound.call(*args, &block)
|
26
28
|
end
|
27
29
|
|
data/poly_delegate.gemspec
CHANGED
@@ -24,6 +24,5 @@ Gem::Specification.new do |spec|
|
|
24
24
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
25
25
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
26
26
|
spec.require_paths = ['lib']
|
27
|
-
|
28
|
-
spec.add_dependency 'bundler', '>= 1.11.2'
|
27
|
+
spec.extensions = ['ext/mkrf_conf.rb']
|
29
28
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: poly_delegate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nathan Currier
|
@@ -9,26 +9,13 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
date: 2016-02-03 00:00:00.000000000 Z
|
12
|
-
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
type: :runtime
|
15
|
-
name: bundler
|
16
|
-
prerelease: false
|
17
|
-
requirement: !ruby/object:Gem::Requirement
|
18
|
-
requirements:
|
19
|
-
- - ">="
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: 1.11.2
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ">="
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: 1.11.2
|
12
|
+
dependencies: []
|
27
13
|
description: ''
|
28
14
|
email:
|
29
15
|
- nathan.currier@gmail.com
|
30
16
|
executables: []
|
31
|
-
extensions:
|
17
|
+
extensions:
|
18
|
+
- ext/mkrf_conf.rb
|
32
19
|
extra_rdoc_files: []
|
33
20
|
files:
|
34
21
|
- ".gitignore"
|
@@ -38,6 +25,7 @@ files:
|
|
38
25
|
- Gemfile
|
39
26
|
- LICENSE.md
|
40
27
|
- Rakefile
|
28
|
+
- ext/mkrf_conf.rb
|
41
29
|
- gemfiles/Gemfile.ci
|
42
30
|
- gemfiles/Gemfile.doc
|
43
31
|
- lib/poly_delegate.rb
|
@@ -45,7 +33,6 @@ files:
|
|
45
33
|
- lib/poly_delegate/classic_access.rb
|
46
34
|
- lib/poly_delegate/delegated.rb
|
47
35
|
- lib/poly_delegate/delegator.rb
|
48
|
-
- lib/poly_delegate/force_bind.rb
|
49
36
|
- lib/poly_delegate/method.rb
|
50
37
|
- lib/poly_delegate/version.rb
|
51
38
|
- poly_delegate.gemspec
|
@@ -74,7 +61,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
74
61
|
version: '0'
|
75
62
|
requirements: []
|
76
63
|
rubyforge_project:
|
77
|
-
rubygems_version: 2.
|
64
|
+
rubygems_version: 2.5.1
|
78
65
|
signing_key:
|
79
66
|
specification_version: 4
|
80
67
|
summary: ''
|
@@ -1,31 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
# Copyright (c) 2016 Nathan Currier
|
3
|
-
|
4
|
-
# This Source Code Form is subject to the terms of the Mozilla Public
|
5
|
-
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
6
|
-
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
7
|
-
|
8
|
-
module PolyDelegate
|
9
|
-
# rubocop:disable Lint/DuplicateMethods
|
10
|
-
case RUBY_ENGINE
|
11
|
-
when 'rbx'
|
12
|
-
def self.force_bind(bound_obj, method)
|
13
|
-
method_args = [method.defined_in, method.executable, method.name]
|
14
|
-
|
15
|
-
Method.new(bound_obj, *method_args)
|
16
|
-
end
|
17
|
-
when 'ruby'
|
18
|
-
require 'force_bind'
|
19
|
-
|
20
|
-
def self.force_bind(bound_obj, method)
|
21
|
-
if bound_obj.class == method.owner
|
22
|
-
method.bind(bound_obj)
|
23
|
-
else
|
24
|
-
method.force_bind(bound_obj)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
else
|
28
|
-
fail "force binding is not supported on #{RUBY_ENGINE}"
|
29
|
-
end
|
30
|
-
# rubocop:enable Lint/DuplicateMethods
|
31
|
-
end
|