invokr 0.0.2 → 0.0.4
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/lib/invokr.rb +1 -35
- data/lib/invokr/method.rb +38 -0
- data/lib/invokr/version.rb +1 -1
- data/test/query_test.rb +5 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6f009f090d42fffdb02fe1cd916b919a28293514
|
4
|
+
data.tar.gz: 782395ed64c4c75428814b1c19c0745a99395b1e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 89edb83a6244b666ecff82383ff770aa4620f2db555f7a94ce835b79f657ab63402628a3cfe48a208e05ed2d1d3b237e15412181e783403ef36e5f0303971a22
|
7
|
+
data.tar.gz: a130fa4abcf671a293cd6bb46f43aaf7512a9638b826b1afb2156107ac57f11983fe6d1d5dea0fe6612757630a0df46d3669f1ae9f9eeff5d4506a81a8bae7bb
|
data/lib/invokr.rb
CHANGED
@@ -12,41 +12,6 @@ module Invokr
|
|
12
12
|
Method.new method
|
13
13
|
end
|
14
14
|
|
15
|
-
Method = Struct.new :method do
|
16
|
-
def invoke receiver = method.owner, hsh_args
|
17
|
-
unless receiver == method.owner or receiver.kind_of? method.owner
|
18
|
-
raise TypeError, "no implicit conversion of #{receiver.class} into #{method.owner.name}"
|
19
|
-
end
|
20
|
-
Invokr.invoke method: method.name, on: receiver, with: hsh_args
|
21
|
-
end
|
22
|
-
|
23
|
-
def dependencies
|
24
|
-
map_identifiers parameters
|
25
|
-
end
|
26
|
-
|
27
|
-
def optional_dependencies
|
28
|
-
map_identifiers select_parameters_by_type [:opt, :key]
|
29
|
-
end
|
30
|
-
|
31
|
-
def required_dependencies
|
32
|
-
map_identifiers select_parameters_by_type [:req, :keyreq]
|
33
|
-
end
|
34
|
-
|
35
|
-
def parameters
|
36
|
-
method.parameters
|
37
|
-
end
|
38
|
-
|
39
|
-
private
|
40
|
-
|
41
|
-
def select_parameters_by_type types
|
42
|
-
parameters.select do |type, _| types.include? type end
|
43
|
-
end
|
44
|
-
|
45
|
-
def map_identifiers parameters
|
46
|
-
parameters.map do |_, identifier| identifier end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
15
|
private
|
51
16
|
|
52
17
|
def require_arguments! hsh, *args
|
@@ -61,4 +26,5 @@ end
|
|
61
26
|
require_relative 'invokr/builder'
|
62
27
|
require_relative 'invokr/errors'
|
63
28
|
require_relative 'invokr/invocation'
|
29
|
+
require_relative 'invokr/method'
|
64
30
|
require_relative 'invokr/version'
|
@@ -0,0 +1,38 @@
|
|
1
|
+
Method = Struct.new :method do
|
2
|
+
def invoke receiver = method.owner, hsh_args
|
3
|
+
unless receiver == method.owner or receiver.kind_of? method.owner
|
4
|
+
raise TypeError, "no implicit conversion of #{receiver.class} into #{method.owner.name}"
|
5
|
+
end
|
6
|
+
Invokr.invoke method: method.name, on: receiver, with: hsh_args
|
7
|
+
end
|
8
|
+
|
9
|
+
def trim_args hsh_args
|
10
|
+
hsh_args.select { |key, _| dependencies.include? key }
|
11
|
+
end
|
12
|
+
|
13
|
+
def dependencies
|
14
|
+
map_identifiers parameters
|
15
|
+
end
|
16
|
+
|
17
|
+
def optional_dependencies
|
18
|
+
map_identifiers select_parameters_by_type [:opt, :key]
|
19
|
+
end
|
20
|
+
|
21
|
+
def required_dependencies
|
22
|
+
map_identifiers select_parameters_by_type [:req, :keyreq]
|
23
|
+
end
|
24
|
+
|
25
|
+
def parameters
|
26
|
+
method.parameters
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def select_parameters_by_type types
|
32
|
+
parameters.select do |type, _| types.include? type end
|
33
|
+
end
|
34
|
+
|
35
|
+
def map_identifiers parameters
|
36
|
+
parameters.map do |_, identifier| identifier end
|
37
|
+
end
|
38
|
+
end
|
data/lib/invokr/version.rb
CHANGED
data/test/query_test.rb
CHANGED
@@ -39,6 +39,11 @@ class QueryTest < Minitest::Test
|
|
39
39
|
assert_equal 'no implicit conversion of Array into TestKlass', error.message
|
40
40
|
end
|
41
41
|
|
42
|
+
def test_trimming_arguments
|
43
|
+
hsh = { album: 'junta', guitarist: 'trey', drummer: 'phish' }
|
44
|
+
assert_equal %i(album guitarist), @method.trim_args(hsh).keys
|
45
|
+
end
|
46
|
+
|
42
47
|
private
|
43
48
|
|
44
49
|
def define_test_klass
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: invokr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ntl
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-06-
|
11
|
+
date: 2014-06-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -86,6 +86,7 @@ files:
|
|
86
86
|
- lib/invokr/dependency_injection.rb
|
87
87
|
- lib/invokr/errors.rb
|
88
88
|
- lib/invokr/invocation.rb
|
89
|
+
- lib/invokr/method.rb
|
89
90
|
- lib/invokr/version.rb
|
90
91
|
- test/block_args_test.rb
|
91
92
|
- test/dependency_injection_example_test.rb
|