evt-invocation 1.0.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 29383106e151de1b3dcd6538a5c776c5b76c339f810b36567d8a5f9713e13dea
4
+ data.tar.gz: c4c4d5f731b1a74ca1f9ba3e7a78e29d4056986d3d1984d45be855d2f5a20e20
5
+ SHA512:
6
+ metadata.gz: 907c81041301b04981de2714280ea85ae7a729968b970a2d3fb545b96ad1ec2c1a034e924dc656c9c68b4db14fe7bc3a4ceda1dc47e7dd83ef0aaa9e7b166aec
7
+ data.tar.gz: e6cd041f136c3e3b48e344f3f821b59d1dc5f0a25a021d52085f9877bc6ccc555368d2557998784c1b6bc47d144047477f6907629567344fd6e7fbf520a83ba3
data/lib/invocation.rb ADDED
@@ -0,0 +1 @@
1
+ require 'invocation/invocation'
@@ -0,0 +1,7 @@
1
+ require 'invocation/controls/no_parameters'
2
+ require 'invocation/controls/positional_parameters'
3
+ require 'invocation/controls/named_parameters'
4
+ require 'invocation/controls/block_parameter'
5
+ require 'invocation/controls/splat_parameter'
6
+ require 'invocation/controls/double_splat_parameter'
7
+ require 'invocation/controls/mixed_parameters'
@@ -0,0 +1,16 @@
1
+ class Invocation
2
+ module Controls
3
+ module BlockParameter
4
+ def self.example(&blk)
5
+ subject = Example.new
6
+ subject.some_method(&blk)
7
+ end
8
+
9
+ class Example
10
+ def some_method(&blk)
11
+ ::Invocation.build(binding)
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ class Invocation
2
+ module Controls
3
+ module DoubleSplatParameter
4
+ def self.example(**parameters)
5
+ subject = Example.new
6
+ subject.some_method(**parameters)
7
+ end
8
+
9
+ class Example
10
+ def some_method(**parameters)
11
+ ::Invocation.build(binding)
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ class Invocation
2
+ module Controls
3
+ module MixedParameters
4
+ def self.example(some_parameter, *parameters, some_other_parameter:, **named_parameters, &blk)
5
+ subject = Example.new
6
+ subject.some_method(some_parameter, *parameters, some_other_parameter: some_other_parameter, **named_parameters, &blk)
7
+ end
8
+
9
+ class Example
10
+ def some_method(some_parameter, *parameters, some_other_parameter:, **named_parameters, &blk)
11
+ ::Invocation.build(binding)
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ class Invocation
2
+ module Controls
3
+ module NamedParameters
4
+ def self.example(some_parameter:, some_other_parameter:)
5
+ subject = Example.new
6
+ subject.some_method(some_parameter: some_parameter, some_other_parameter: some_other_parameter)
7
+ end
8
+
9
+ class Example
10
+ def some_method(some_parameter:, some_other_parameter:)
11
+ ::Invocation.build(binding)
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ class Invocation
2
+ module Controls
3
+ module NoParameters
4
+ def self.example
5
+ subject = Example.new
6
+ subject.some_method
7
+ end
8
+
9
+ class Example
10
+ def some_method
11
+ ::Invocation.build(binding)
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ class Invocation
2
+ module Controls
3
+ module PositionalParameters
4
+ def self.example(some_parameter, some_other_parameter)
5
+ subject = Example.new
6
+ subject.some_method(some_parameter, some_other_parameter)
7
+ end
8
+
9
+ class Example
10
+ def some_method(some_parameter, some_other_parameter)
11
+ ::Invocation.build(binding)
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ class Invocation
2
+ module Controls
3
+ module SplatParameter
4
+ def self.example(*parameters)
5
+ subject = Example.new
6
+ subject.some_method(*parameters)
7
+ end
8
+
9
+ class Example
10
+ def some_method(*parameters)
11
+ ::Invocation.build(binding)
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,31 @@
1
+ class Invocation
2
+ attr_reader :method_name
3
+ attr_reader :parameters
4
+
5
+ def initialize(method_name, parameters)
6
+ @method_name = method_name
7
+ @parameters = parameters
8
+ end
9
+
10
+ def self.build(bndg)
11
+ instance = bndg.receiver
12
+ method_name = bndg.eval("__method__")
13
+
14
+ mthd = instance.method(method_name)
15
+
16
+ parameters = mthd.parameters
17
+ parameter_names = parameters.map { |p| p[1] }
18
+
19
+ parameter_values = parameter_names.map { |n| bndg.local_variable_get(n) }
20
+
21
+ params = []
22
+ parameter_names.each_with_index do |n, i|
23
+ parameter = Parameter.new(n, parameter_values[i])
24
+ params << parameter
25
+ end
26
+
27
+ new(method_name, params)
28
+ end
29
+
30
+ Parameter = Struct.new(:name, :value)
31
+ end
metadata ADDED
@@ -0,0 +1,67 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: evt-invocation
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - The Eventide Project
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-08-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: test_bench
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description: " "
28
+ email: opensource@eventide-project.org
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - lib/invocation.rb
34
+ - lib/invocation/controls.rb
35
+ - lib/invocation/controls/block_parameter.rb
36
+ - lib/invocation/controls/double_splat_parameter.rb
37
+ - lib/invocation/controls/mixed_parameters.rb
38
+ - lib/invocation/controls/named_parameters.rb
39
+ - lib/invocation/controls/no_parameters.rb
40
+ - lib/invocation/controls/positional_parameters.rb
41
+ - lib/invocation/controls/splat_parameter.rb
42
+ - lib/invocation/invocation.rb
43
+ homepage: https://github.com/eventide-project/invocation
44
+ licenses:
45
+ - MIT
46
+ metadata: {}
47
+ post_install_message:
48
+ rdoc_options: []
49
+ require_paths:
50
+ - lib
51
+ required_ruby_version: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '2.4'
56
+ required_rubygems_version: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ requirements: []
62
+ rubygems_version: 3.0.1
63
+ signing_key:
64
+ specification_version: 4
65
+ summary: Extract information about a method's invocation including the method name,
66
+ parameter names, and parameter values
67
+ test_files: []