invokr 0.0.2 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 73bc0fda0e1042d90213b140225f0c24f727eb4a
4
- data.tar.gz: 962b2726be50743af31c737a9420ead3041c87b0
3
+ metadata.gz: 6f009f090d42fffdb02fe1cd916b919a28293514
4
+ data.tar.gz: 782395ed64c4c75428814b1c19c0745a99395b1e
5
5
  SHA512:
6
- metadata.gz: 05ad75d24db1b1a4685efcbe0088ae1032bcb148a3ca8cd681fe6f517f54749fb472aab77974f7bbb17b87a838a0dda751f422ef2baa04c7739c1e576e93fd05
7
- data.tar.gz: b7892e1f79b26d0bb730c5258ca4f993fb606affac126e581927ccf2af876ef01c0788e25fb9fd9e9c7f7fdb8180107974ad9b818b802fd613dc42284d1464ba
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
@@ -1,3 +1,3 @@
1
1
  module Invokr
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.4"
3
3
  end
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.2
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-29 00:00:00.000000000 Z
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