poly_delegate 1.2.0 → 1.2.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|