symbiont-ruby 0.6.0 → 0.7.0
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/.gitignore +1 -1
- data/.rubocop.yml +15 -2
- data/CHANGELOG.md +9 -1
- data/Gemfile.lock +130 -0
- data/LICENSE.txt +1 -1
- data/README.md +41 -30
- data/Rakefile +14 -0
- data/Steepfile +6 -0
- data/lib/symbiont/private_trigger.rb +1 -1
- data/lib/symbiont/teleport.rb +9 -0
- data/lib/symbiont/trigger.rb +4 -4
- data/lib/symbiont/version.rb +1 -1
- data/sig/.keep +0 -0
- data/symbiont-ruby.gemspec +6 -4
- metadata +48 -17
- data/.travis.yml +0 -16
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6714f1b3ec4728993c6142a6c1c2afb74fa47bbddb6bd24ba0f07400d1a8dc2a
|
|
4
|
+
data.tar.gz: bd261c826def843dea5411a74c95e342b2c5eff9d657750c97b7e3369e29c599
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e9611312a09174b8c326061d235bc7f89fbb4a3dc5ceed382210a94a9ece33811f3a164be5ea3718624b4de6b1361014740957727fded344eb4649d9da056847
|
|
7
|
+
data.tar.gz: d398c976b32b14caf11b80d9fd2ab7b026b4e71429f9bdf3c966f611b4f70dfc30bf48a89f008e2d095df2b19a9dd2b82ab66bc1ad181ad46b98f0379de57e94
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
|
@@ -4,7 +4,7 @@ inherit_gem:
|
|
|
4
4
|
- lib/rubocop.rspec.yml
|
|
5
5
|
|
|
6
6
|
AllCops:
|
|
7
|
-
TargetRubyVersion:
|
|
7
|
+
TargetRubyVersion: 3.0.0
|
|
8
8
|
Include:
|
|
9
9
|
- lib/**/*.rb
|
|
10
10
|
- spec/**/*.rb
|
|
@@ -12,6 +12,19 @@ AllCops:
|
|
|
12
12
|
- Rakefile
|
|
13
13
|
- Gemfile
|
|
14
14
|
- symbiont-ruby.gemspec
|
|
15
|
+
- Steepfile
|
|
15
16
|
|
|
16
|
-
|
|
17
|
+
Layout/LineLength:
|
|
17
18
|
Max: 120
|
|
19
|
+
|
|
20
|
+
# NOTE: for code examples in tests
|
|
21
|
+
Lint/EmptyBlock:
|
|
22
|
+
Exclude:
|
|
23
|
+
- spec/**/*.rb
|
|
24
|
+
|
|
25
|
+
Style/RedundantBegin:
|
|
26
|
+
Enabled: false
|
|
27
|
+
|
|
28
|
+
# NOTE: for code clarity in tests
|
|
29
|
+
RSpec/LeakyConstantDeclaration:
|
|
30
|
+
Enabled: false
|
data/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
All notable changes to this project will be documented in this file.
|
|
3
3
|
|
|
4
|
+
## [0.7.0] 2021-06-22
|
|
5
|
+
### Added
|
|
6
|
+
- Support for Ruby@2.7.2, Ruby@3.0.0;
|
|
7
|
+
|
|
8
|
+
### Changed
|
|
9
|
+
- No more `TravisCI` (TODO: migrate to `Github Actions`);
|
|
10
|
+
- Updated development dependencies;
|
|
11
|
+
|
|
4
12
|
## [0.6.0] 2018-03-28
|
|
5
13
|
### Changed
|
|
6
14
|
- Removed verbose code from `#__actual_context__` and `#method` methods of
|
|
@@ -9,7 +17,7 @@ All notable changes to this project will be documented in this file.
|
|
|
9
17
|
## [0.5.0] 2018-03-28
|
|
10
18
|
### Added
|
|
11
19
|
- Support for method dispatching for `BasicObject` instances (which does not support `#respond_to?` method);
|
|
12
|
-
- Support for method
|
|
20
|
+
- Support for method extracting for `BasicObject` instances (which does not support `#method` method);
|
|
13
21
|
- Updated development dependencies;
|
|
14
22
|
- Support for `Ruby@2.6.2`, `Ruby@2.5.5`;
|
|
15
23
|
|
data/Gemfile.lock
ADDED
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: .
|
|
3
|
+
specs:
|
|
4
|
+
symbiont-ruby (0.7.0)
|
|
5
|
+
|
|
6
|
+
GEM
|
|
7
|
+
remote: https://rubygems.org/
|
|
8
|
+
specs:
|
|
9
|
+
activesupport (6.1.3.2)
|
|
10
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
11
|
+
i18n (>= 1.6, < 2)
|
|
12
|
+
minitest (>= 5.1)
|
|
13
|
+
tzinfo (~> 2.0)
|
|
14
|
+
zeitwerk (~> 2.3)
|
|
15
|
+
armitage-rubocop (1.10.0)
|
|
16
|
+
rubocop (= 1.10.0)
|
|
17
|
+
rubocop-performance (= 1.9.2)
|
|
18
|
+
rubocop-rails (= 2.9.1)
|
|
19
|
+
rubocop-rake (= 0.5.1)
|
|
20
|
+
rubocop-rspec (= 2.2.0)
|
|
21
|
+
ast (2.4.2)
|
|
22
|
+
coderay (1.1.3)
|
|
23
|
+
concurrent-ruby (1.1.9)
|
|
24
|
+
diff-lcs (1.4.4)
|
|
25
|
+
docile (1.4.0)
|
|
26
|
+
ffi (1.15.3)
|
|
27
|
+
i18n (1.8.10)
|
|
28
|
+
concurrent-ruby (~> 1.0)
|
|
29
|
+
language_server-protocol (3.16.0.1)
|
|
30
|
+
listen (3.5.1)
|
|
31
|
+
rb-fsevent (~> 0.10, >= 0.10.3)
|
|
32
|
+
rb-inotify (~> 0.9, >= 0.9.10)
|
|
33
|
+
method_source (1.0.0)
|
|
34
|
+
minitest (5.14.4)
|
|
35
|
+
parallel (1.20.1)
|
|
36
|
+
parser (3.0.1.1)
|
|
37
|
+
ast (~> 2.4.1)
|
|
38
|
+
pry (0.14.1)
|
|
39
|
+
coderay (~> 1.1)
|
|
40
|
+
method_source (~> 1.0)
|
|
41
|
+
rack (2.2.3)
|
|
42
|
+
rainbow (3.0.0)
|
|
43
|
+
rake (13.0.3)
|
|
44
|
+
rb-fsevent (0.11.0)
|
|
45
|
+
rb-inotify (0.10.1)
|
|
46
|
+
ffi (~> 1.0)
|
|
47
|
+
rbs (1.2.1)
|
|
48
|
+
regexp_parser (2.1.1)
|
|
49
|
+
rexml (3.2.5)
|
|
50
|
+
rspec (3.10.0)
|
|
51
|
+
rspec-core (~> 3.10.0)
|
|
52
|
+
rspec-expectations (~> 3.10.0)
|
|
53
|
+
rspec-mocks (~> 3.10.0)
|
|
54
|
+
rspec-core (3.10.1)
|
|
55
|
+
rspec-support (~> 3.10.0)
|
|
56
|
+
rspec-expectations (3.10.1)
|
|
57
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
58
|
+
rspec-support (~> 3.10.0)
|
|
59
|
+
rspec-mocks (3.10.2)
|
|
60
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
61
|
+
rspec-support (~> 3.10.0)
|
|
62
|
+
rspec-support (3.10.2)
|
|
63
|
+
rubocop (1.10.0)
|
|
64
|
+
parallel (~> 1.10)
|
|
65
|
+
parser (>= 3.0.0.0)
|
|
66
|
+
rainbow (>= 2.2.2, < 4.0)
|
|
67
|
+
regexp_parser (>= 1.8, < 3.0)
|
|
68
|
+
rexml
|
|
69
|
+
rubocop-ast (>= 1.2.0, < 2.0)
|
|
70
|
+
ruby-progressbar (~> 1.7)
|
|
71
|
+
unicode-display_width (>= 1.4.0, < 3.0)
|
|
72
|
+
rubocop-ast (1.7.0)
|
|
73
|
+
parser (>= 3.0.1.1)
|
|
74
|
+
rubocop-performance (1.9.2)
|
|
75
|
+
rubocop (>= 0.90.0, < 2.0)
|
|
76
|
+
rubocop-ast (>= 0.4.0)
|
|
77
|
+
rubocop-rails (2.9.1)
|
|
78
|
+
activesupport (>= 4.2.0)
|
|
79
|
+
rack (>= 1.1)
|
|
80
|
+
rubocop (>= 0.90.0, < 2.0)
|
|
81
|
+
rubocop-rake (0.5.1)
|
|
82
|
+
rubocop
|
|
83
|
+
rubocop-rspec (2.2.0)
|
|
84
|
+
rubocop (~> 1.0)
|
|
85
|
+
rubocop-ast (>= 1.1.0)
|
|
86
|
+
ruby-progressbar (1.11.0)
|
|
87
|
+
simplecov (0.21.2)
|
|
88
|
+
docile (~> 1.1)
|
|
89
|
+
simplecov-html (~> 0.11)
|
|
90
|
+
simplecov_json_formatter (~> 0.1)
|
|
91
|
+
simplecov-html (0.12.3)
|
|
92
|
+
simplecov_json_formatter (0.1.3)
|
|
93
|
+
steep (0.44.1)
|
|
94
|
+
activesupport (>= 5.1)
|
|
95
|
+
language_server-protocol (>= 3.15, < 4.0)
|
|
96
|
+
listen (~> 3.0)
|
|
97
|
+
parallel (>= 1.0.0)
|
|
98
|
+
parser (>= 2.7)
|
|
99
|
+
rainbow (>= 2.2.2, < 4.0)
|
|
100
|
+
rbs (>= 1.2.0)
|
|
101
|
+
terminal-table (>= 2, < 4)
|
|
102
|
+
terminal-table (3.0.1)
|
|
103
|
+
unicode-display_width (>= 1.1.1, < 3)
|
|
104
|
+
typeprof (0.14.1)
|
|
105
|
+
rbs (>= 1.2.0)
|
|
106
|
+
tzinfo (2.0.4)
|
|
107
|
+
concurrent-ruby (~> 1.0)
|
|
108
|
+
unicode-display_width (2.0.0)
|
|
109
|
+
yard (0.9.26)
|
|
110
|
+
zeitwerk (2.4.2)
|
|
111
|
+
|
|
112
|
+
PLATFORMS
|
|
113
|
+
ruby
|
|
114
|
+
x86_64-darwin-20
|
|
115
|
+
|
|
116
|
+
DEPENDENCIES
|
|
117
|
+
armitage-rubocop (~> 1.8)
|
|
118
|
+
bundler
|
|
119
|
+
pry
|
|
120
|
+
rake
|
|
121
|
+
rbs (~> 1.0)
|
|
122
|
+
rspec (~> 3.10)
|
|
123
|
+
simplecov (~> 0.21)
|
|
124
|
+
steep (~> 0.40)
|
|
125
|
+
symbiont-ruby!
|
|
126
|
+
typeprof (~> 0.12)
|
|
127
|
+
yard
|
|
128
|
+
|
|
129
|
+
BUNDLED WITH
|
|
130
|
+
2.2.20
|
data/LICENSE.txt
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
The MIT License (MIT)
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2017-
|
|
3
|
+
Copyright (c) 2017-2020 Rustam Ibragimov
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
data/README.md
CHANGED
|
@@ -3,15 +3,13 @@
|
|
|
3
3
|
<h1 align="center">
|
|
4
4
|
Symbiont<br />
|
|
5
5
|
<a href="https://badge.fury.io/rb/symbiont-ruby"><img src="https://badge.fury.io/rb/symbiont-ruby.svg"></a>
|
|
6
|
-
<a href="https://travis-ci.org/0exp/symbiont-ruby"><img src="https://travis-ci.org/0exp/symbiont-ruby.svg?branch=master"></a>
|
|
7
|
-
<a href="https://coveralls.io/github/0exp/symbiont-ruby?branch=master"><img src="https://coveralls.io/repos/github/0exp/symbiont-ruby/badge.svg?branch=master"></a>
|
|
8
6
|
</h1>
|
|
9
7
|
</p>
|
|
10
8
|
|
|
11
9
|
**Symbiont** is a cool implementation of proc-objects execution algorithm: in the context of other object,
|
|
12
|
-
but with the preservation of the
|
|
10
|
+
but with the preservation of the captured environment of the proc object and with the ability of control the method dispatch
|
|
13
11
|
inside it. A proc object is executed in three contexts: in the context of required object, in the context of
|
|
14
|
-
a
|
|
12
|
+
a captured proc's environment and in the global (Kernel) context.
|
|
15
13
|
|
|
16
14
|
# Installation
|
|
17
15
|
|
|
@@ -45,7 +43,7 @@ require 'symbiont'
|
|
|
45
43
|
- [Usage](#usage)
|
|
46
44
|
- [Context management](#context-management)
|
|
47
45
|
- [Supported method delegation directions](#supported-methods-delegation-directions)
|
|
48
|
-
- [Proc object
|
|
46
|
+
- [Proc object invocation](#proc-object-invocation)
|
|
49
47
|
- [Considering public methods only (.evaluate)](#considering-public-methods-only-evaluate)
|
|
50
48
|
- [Considering private and public methods (.evaluate_private)](#considering-private-and-public-methods-evaluate_private)
|
|
51
49
|
- [Getting method-objects (Method)](#getting-method-objects-method)
|
|
@@ -60,14 +58,14 @@ require 'symbiont'
|
|
|
60
58
|
# Problems and motivaiton
|
|
61
59
|
|
|
62
60
|
The main problem of `instance_eval` / `instance exec` / `class_eval` / `class_exec` is that the binding (self)
|
|
63
|
-
inside a proc-
|
|
64
|
-
But this leads to the fact that the proc object loses access to the original
|
|
65
|
-
Symbiont solves this problem by allowing
|
|
61
|
+
inside a proc-object is replaced with the object in where a proc object is executed. This allows you to delegate all methods captured by a proc to another object.
|
|
62
|
+
But this leads to the fact that the proc object loses access to the original captured environment.
|
|
63
|
+
Symbiont solves this problem by allowing the proc to be executed in the required context while maintaining access to the methods of the captured environment
|
|
66
64
|
(including the global context).
|
|
67
65
|
|
|
68
66
|
---
|
|
69
67
|
|
|
70
|
-
A
|
|
68
|
+
A problem with `instance_eval` / `instance_exec` / `class_eval` / `class_exec`:
|
|
71
69
|
|
|
72
70
|
```ruby
|
|
73
71
|
class TableFactory
|
|
@@ -84,7 +82,7 @@ class Migration
|
|
|
84
82
|
class << self
|
|
85
83
|
def create_table(&block)
|
|
86
84
|
TableFactory.new.tap do |table|
|
|
87
|
-
table.instance_eval(&block) # NOTE: closure
|
|
85
|
+
table.instance_eval(&block) # NOTE: closure invocation
|
|
88
86
|
end
|
|
89
87
|
end
|
|
90
88
|
end
|
|
@@ -117,7 +115,7 @@ class Migration
|
|
|
117
115
|
class << self
|
|
118
116
|
def create_table(&block)
|
|
119
117
|
TableFactory.new.tap do |table|
|
|
120
|
-
Symbiont::Executor.evaluate(table, &block) # NOTE: intercept closure
|
|
118
|
+
Symbiont::Executor.evaluate(table, &block) # NOTE: intercept closure invocation by Symbiont
|
|
121
119
|
end
|
|
122
120
|
end
|
|
123
121
|
end
|
|
@@ -138,15 +136,15 @@ Proc-object is executed in three contexts at the same time:
|
|
|
138
136
|
Methods (called internally) are delegated to the context that is first able to respond.
|
|
139
137
|
The order of context selection depends on the corresponding context direction parameter.
|
|
140
138
|
By default the delegation order is: object context => closure context => global context.
|
|
141
|
-
If no context is able to respond to the method, an exception is
|
|
142
|
-
Symbiont can consider the
|
|
139
|
+
If no context is able to respond to the method, an exception is raised (`Symbiont::Trigger::ContextNoMethodError`).
|
|
140
|
+
Symbiont can consider the visibility of methods when executing.
|
|
143
141
|
|
|
144
142
|
|
|
145
143
|
# Usage
|
|
146
144
|
|
|
147
145
|
## Context management
|
|
148
146
|
|
|
149
|
-
Imagine
|
|
147
|
+
Imagine having the following code and the corresponding clojure in the real application:
|
|
150
148
|
|
|
151
149
|
```ruby
|
|
152
150
|
def object_data
|
|
@@ -178,16 +176,15 @@ How a proc object will be processed, which context will be selected, how to make
|
|
|
178
176
|
|
|
179
177
|
## Supported methods delegation directions
|
|
180
178
|
|
|
181
|
-
Delegation order
|
|
182
|
-
and the
|
|
179
|
+
Delegation order might be passed as a parameter to the proc execution
|
|
180
|
+
and to the special mixin module, allowing any class or instance to become a symbiont.
|
|
183
181
|
|
|
184
|
-
Supported contexts
|
|
182
|
+
- Supported contexts:
|
|
183
|
+
- inner context - an object where proc is executed;
|
|
184
|
+
- outer context - external environment of the proc object;
|
|
185
|
+
- kernel context - global Kernel context.
|
|
185
186
|
|
|
186
|
-
|
|
187
|
-
- outer context - external environment of the proc object;
|
|
188
|
-
- kernel context - global Kernel context.
|
|
189
|
-
|
|
190
|
-
Symbiont::IOK is chosen by default (`inner context => outer context => kernel context`)
|
|
187
|
+
Symbiont::IOK is chosen by default (`inner context => outer context => kernel context`).
|
|
191
188
|
|
|
192
189
|
```ruby
|
|
193
190
|
Symbiont::IOK # Inner Context => Outer Context => Kernel Context (DEFAULT)
|
|
@@ -198,7 +195,7 @@ Symbiont::KOI # Kernel Context => Outer Context => Inner Context
|
|
|
198
195
|
Symbiont::KIO # Kernel Context => Inner Context => Outer Context
|
|
199
196
|
```
|
|
200
197
|
|
|
201
|
-
## Proc object
|
|
198
|
+
## Proc object invocation
|
|
202
199
|
|
|
203
200
|
`Symbiont::Executor` allows you to execute proc objects in two modes of the delegation:
|
|
204
201
|
|
|
@@ -207,11 +204,11 @@ Symbiont::KIO # Kernel Context => Inner Context => Outer Context
|
|
|
207
204
|
- public and private methods:
|
|
208
205
|
- `evaluate_private(*required_contexts, [context_direction:], &closure)`
|
|
209
206
|
|
|
210
|
-
If
|
|
207
|
+
If none of contexts is able to respond to the required method - `Symbiont::Trigger::ContextNoMethodError` exception is raised.
|
|
211
208
|
|
|
212
|
-
In the case
|
|
209
|
+
In the case an unsupported direction value is used - `Symbiont::Trigger::IncompatibleContextDirectionError` exception is raised.
|
|
213
210
|
|
|
214
|
-
If proc object
|
|
211
|
+
If proc object isn't passed to the executor - `Symbiont::Trigger::UnprovidedClosureAttributeError` exception is raised.
|
|
215
212
|
|
|
216
213
|
#### Considering public methods only (.evaluate)
|
|
217
214
|
|
|
@@ -266,9 +263,9 @@ end
|
|
|
266
263
|
- public and private methods:
|
|
267
264
|
- `private_method(method_name, *required_contexts, [context_direction:], &clojure)`
|
|
268
265
|
|
|
269
|
-
If
|
|
266
|
+
If none of contexts is able to respond to the required method - `Symbiont::Trigger::ContextNoMethodError` exception is raised.
|
|
270
267
|
|
|
271
|
-
In the case
|
|
268
|
+
In the case an unsupported direction value is used - `Symbiont::Trigger::IncompatibleContextDirectionError` exception is raised.
|
|
272
269
|
|
|
273
270
|
#### Considering public methods only (.public_method)
|
|
274
271
|
|
|
@@ -306,7 +303,7 @@ Symbiont::Executor.private_method(:object_data, object, context_direction: Symbi
|
|
|
306
303
|
|
|
307
304
|
`Symbiont::Context` is a mixin that allows any object to call proc objects in the context of itself as `Symbiont::Executor`.
|
|
308
305
|
|
|
309
|
-
You can specify the
|
|
306
|
+
You can specify the direction of the context delegation. `Symbiont::IOK` is used by default.
|
|
310
307
|
|
|
311
308
|
#### Mixing a module with default delegation direction
|
|
312
309
|
|
|
@@ -369,7 +366,7 @@ SimpleObject.new.evaluate(Symbiont::IOK) { object_data }
|
|
|
369
366
|
|
|
370
367
|
`Symbiont::Executor` allows you to work with multiple inner contexts (can receive a set of objects instead of the one main object).
|
|
371
368
|
Each object will be used as an inner context in order they are passed.
|
|
372
|
-
The method will be addressed to the object that responds first (
|
|
369
|
+
The method will be addressed to the object that responds first (according to a chosen delegation order).
|
|
373
370
|
|
|
374
371
|
```ruby
|
|
375
372
|
# Usage:
|
|
@@ -419,6 +416,20 @@ isolator.private_method(...)
|
|
|
419
416
|
# same for #.private_method
|
|
420
417
|
```
|
|
421
418
|
|
|
419
|
+
# Roadmap
|
|
420
|
+
|
|
421
|
+
- support for toplevel context (`TOPLEVEL_BINDING`);
|
|
422
|
+
- `fiber teleports`;
|
|
423
|
+
- official support for **Ruby@3**;
|
|
424
|
+
|
|
425
|
+
# Build
|
|
426
|
+
|
|
427
|
+
```shell
|
|
428
|
+
bundle exec rake rubocop
|
|
429
|
+
bundle exec rake yardoc
|
|
430
|
+
bundle exec rake rspec
|
|
431
|
+
```
|
|
432
|
+
|
|
422
433
|
# Contributing
|
|
423
434
|
|
|
424
435
|
- Fork it ( https://github.com/0exp/symbiont-ruby/fork )
|
data/Rakefile
CHANGED
|
@@ -2,8 +2,21 @@
|
|
|
2
2
|
|
|
3
3
|
require 'bundler/gem_tasks'
|
|
4
4
|
require 'rspec/core/rake_task'
|
|
5
|
+
require 'rubocop'
|
|
6
|
+
require 'rubocop/rake_task'
|
|
7
|
+
require 'rubocop-performance'
|
|
8
|
+
require 'rubocop-rspec'
|
|
9
|
+
require 'rubocop-rake'
|
|
5
10
|
require 'yard'
|
|
6
11
|
|
|
12
|
+
RuboCop::RakeTask.new(:rubocop) do |t|
|
|
13
|
+
config_path = File.expand_path(File.join('.rubocop.yml'), __dir__)
|
|
14
|
+
t.options = ['--config', config_path]
|
|
15
|
+
t.requires << 'rubocop-rspec'
|
|
16
|
+
t.requires << 'rubocop-performance'
|
|
17
|
+
t.requires << 'rubocop-rake'
|
|
18
|
+
end
|
|
19
|
+
|
|
7
20
|
RSpec::Core::RakeTask.new(:rspec)
|
|
8
21
|
|
|
9
22
|
YARD::Rake::YardocTask.new(:doc) do |t|
|
|
@@ -13,6 +26,7 @@ end
|
|
|
13
26
|
|
|
14
27
|
task default: :rspec
|
|
15
28
|
|
|
29
|
+
desc 'Code documentation coverage check'
|
|
16
30
|
task yardoc: :doc do
|
|
17
31
|
undocumented_code_objects = YARD::Registry.tap(&:load).select do |code_object|
|
|
18
32
|
code_object.docstring.empty?
|
data/Steepfile
ADDED
|
@@ -36,7 +36,7 @@ module Symbiont
|
|
|
36
36
|
context_singleton = __extract_singleton_class__(context)
|
|
37
37
|
|
|
38
38
|
context_singleton.private_instance_methods(true).include?(method_name) ||
|
|
39
|
-
|
|
39
|
+
context_singleton.instance_methods(true).include?(method_name)
|
|
40
40
|
end
|
|
41
41
|
end || super
|
|
42
42
|
end
|
data/lib/symbiont/trigger.rb
CHANGED
|
@@ -159,7 +159,7 @@ class Symbiont::Trigger < BasicObject
|
|
|
159
159
|
end
|
|
160
160
|
# :nocov:
|
|
161
161
|
|
|
162
|
-
# rubocop:disable Layout/SpaceAroundKeyword
|
|
162
|
+
# rubocop:disable Layout/SpaceAroundKeyword
|
|
163
163
|
unless(context_direction == IOK || context_direction == OIK || context_direction == OKI ||
|
|
164
164
|
context_direction == IKO || context_direction == KOI || context_direction == KIO)
|
|
165
165
|
::Kernel.raise(
|
|
@@ -168,7 +168,7 @@ class Symbiont::Trigger < BasicObject
|
|
|
168
168
|
'You should use one of this: OIK, OKI, IOK, IKO, KOI, KIO.'
|
|
169
169
|
)
|
|
170
170
|
end
|
|
171
|
-
# rubocop:enable Layout/SpaceAroundKeyword
|
|
171
|
+
# rubocop:enable Layout/SpaceAroundKeyword
|
|
172
172
|
|
|
173
173
|
@__closure__ = closure
|
|
174
174
|
@__context_direction__ = context_direction
|
|
@@ -232,8 +232,8 @@ class Symbiont::Trigger < BasicObject
|
|
|
232
232
|
#
|
|
233
233
|
# @api private
|
|
234
234
|
# @since 0.1.0
|
|
235
|
-
def method_missing(method_name, *arguments, &block)
|
|
236
|
-
__actual_context__(method_name).__send__(method_name, *arguments, &block)
|
|
235
|
+
def method_missing(method_name, *arguments, **options, &block)
|
|
236
|
+
__actual_context__(method_name).__send__(method_name, *arguments, **options, &block)
|
|
237
237
|
end
|
|
238
238
|
|
|
239
239
|
# Checks that the actual context is able to respond to a required method.
|
data/lib/symbiont/version.rb
CHANGED
data/sig/.keep
ADDED
|
File without changes
|
data/symbiont-ruby.gemspec
CHANGED
|
@@ -29,10 +29,12 @@ Gem::Specification.new do |spec|
|
|
|
29
29
|
f.match(%r{^(spec|features)/})
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
-
spec.add_development_dependency 'rspec', '~> 3.
|
|
33
|
-
spec.add_development_dependency 'simplecov', '~> 0.
|
|
34
|
-
spec.add_development_dependency '
|
|
35
|
-
spec.add_development_dependency '
|
|
32
|
+
spec.add_development_dependency 'rspec', '~> 3.10'
|
|
33
|
+
spec.add_development_dependency 'simplecov', '~> 0.21'
|
|
34
|
+
spec.add_development_dependency 'armitage-rubocop', '~> 1.8'
|
|
35
|
+
spec.add_development_dependency 'rbs', '~> 1.0'
|
|
36
|
+
spec.add_development_dependency 'typeprof', '~> 0.12'
|
|
37
|
+
spec.add_development_dependency 'steep', '~> 0.40'
|
|
36
38
|
|
|
37
39
|
spec.add_development_dependency 'pry'
|
|
38
40
|
spec.add_development_dependency 'rake'
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: symbiont-ruby
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.7.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Rustam Ibragimov
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2021-06-22 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rspec
|
|
@@ -16,56 +16,84 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - "~>"
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '3.
|
|
19
|
+
version: '3.10'
|
|
20
20
|
type: :development
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - "~>"
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: '3.
|
|
26
|
+
version: '3.10'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: simplecov
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
31
|
- - "~>"
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: '0.
|
|
33
|
+
version: '0.21'
|
|
34
34
|
type: :development
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
38
|
- - "~>"
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: '0.
|
|
40
|
+
version: '0.21'
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
|
-
name:
|
|
42
|
+
name: armitage-rubocop
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
45
|
- - "~>"
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: '
|
|
47
|
+
version: '1.8'
|
|
48
48
|
type: :development
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
52
|
- - "~>"
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: '
|
|
54
|
+
version: '1.8'
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
|
-
name:
|
|
56
|
+
name: rbs
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - "~>"
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '1.0'
|
|
62
|
+
type: :development
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - "~>"
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '1.0'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: typeprof
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - "~>"
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '0.12'
|
|
76
|
+
type: :development
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - "~>"
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '0.12'
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: steep
|
|
57
85
|
requirement: !ruby/object:Gem::Requirement
|
|
58
86
|
requirements:
|
|
59
87
|
- - "~>"
|
|
60
88
|
- !ruby/object:Gem::Version
|
|
61
|
-
version: '0.
|
|
89
|
+
version: '0.40'
|
|
62
90
|
type: :development
|
|
63
91
|
prerelease: false
|
|
64
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
93
|
requirements:
|
|
66
94
|
- - "~>"
|
|
67
95
|
- !ruby/object:Gem::Version
|
|
68
|
-
version: '0.
|
|
96
|
+
version: '0.40'
|
|
69
97
|
- !ruby/object:Gem::Dependency
|
|
70
98
|
name: pry
|
|
71
99
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -135,13 +163,14 @@ files:
|
|
|
135
163
|
- ".gitignore"
|
|
136
164
|
- ".rspec"
|
|
137
165
|
- ".rubocop.yml"
|
|
138
|
-
- ".travis.yml"
|
|
139
166
|
- ".yardopts"
|
|
140
167
|
- CHANGELOG.md
|
|
141
168
|
- Gemfile
|
|
169
|
+
- Gemfile.lock
|
|
142
170
|
- LICENSE.txt
|
|
143
171
|
- README.md
|
|
144
172
|
- Rakefile
|
|
173
|
+
- Steepfile
|
|
145
174
|
- bin/console
|
|
146
175
|
- bin/setup
|
|
147
176
|
- lib/symbiont.rb
|
|
@@ -150,6 +179,7 @@ files:
|
|
|
150
179
|
- lib/symbiont/isolator.rb
|
|
151
180
|
- lib/symbiont/private_trigger.rb
|
|
152
181
|
- lib/symbiont/public_trigger.rb
|
|
182
|
+
- lib/symbiont/teleport.rb
|
|
153
183
|
- lib/symbiont/trigger.rb
|
|
154
184
|
- lib/symbiont/version.rb
|
|
155
185
|
- logo/render_sample_1.JPG
|
|
@@ -186,12 +216,13 @@ files:
|
|
|
186
216
|
- logo/symbiont_logo_hexagon_black.psd
|
|
187
217
|
- logo/symbiont_logo_hexagon_black.svg
|
|
188
218
|
- logo/symbiont_logo_hexagon_black.tif
|
|
219
|
+
- sig/.keep
|
|
189
220
|
- symbiont-ruby.gemspec
|
|
190
221
|
homepage: https://github.com/0exp/symbiont-ruby
|
|
191
222
|
licenses:
|
|
192
223
|
- MIT
|
|
193
224
|
metadata: {}
|
|
194
|
-
post_install_message:
|
|
225
|
+
post_install_message:
|
|
195
226
|
rdoc_options: []
|
|
196
227
|
require_paths:
|
|
197
228
|
- lib
|
|
@@ -206,8 +237,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
206
237
|
- !ruby/object:Gem::Version
|
|
207
238
|
version: '0'
|
|
208
239
|
requirements: []
|
|
209
|
-
rubygems_version: 3.
|
|
210
|
-
signing_key:
|
|
240
|
+
rubygems_version: 3.1.2
|
|
241
|
+
signing_key:
|
|
211
242
|
specification_version: 4
|
|
212
243
|
summary: Evaluate proc-objects in many contexts simultaneously
|
|
213
244
|
test_files: []
|
data/.travis.yml
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
language: ruby
|
|
2
|
-
rvm:
|
|
3
|
-
- 2.3.8
|
|
4
|
-
- 2.4.5
|
|
5
|
-
- 2.5.5
|
|
6
|
-
- 2.6.2
|
|
7
|
-
- ruby-head
|
|
8
|
-
sudo: false
|
|
9
|
-
before_install: gem install bundler
|
|
10
|
-
cache: bundler
|
|
11
|
-
script:
|
|
12
|
-
- bundle exec rake yardoc
|
|
13
|
-
- bundle exec rspec
|
|
14
|
-
notifications:
|
|
15
|
-
slack:
|
|
16
|
-
secure: cACqAf+YIO1tYOtVf+6APagL8ug04Qm96nfNtEksSY9pmUu4g1Gy9PX4vO/E3CDEtog5OHVr1/iRUMIgNSIV0dGE4TOIL8ll9W2Foxbio/WsUoLQR5+YQdzCWhqaSfH0dhNXDYs8KwtHCyv1MpzFmfCSIZqZ9ajQMdxaCWaoqynult9xljWj8y8re2DLdUoGzWSKev6VL1CJcDC1RqKz42YfEuqPRg99VUKNFYvUotCAKfn5gqOC9g+zKNp9tfHSh9bicgjw9WPC3wL+gHb760eqH9jYPhWGPTz+XHrJlqKLN1oUOF3LLlqgtqmgjaUZq7LEbw9ARJgCYjSRB1Ywpa7VyavBuzByKV5dmcfmAwf2aLVkovzlTN+1qGR3T/qRFnAT6TPPdP7RkaEOvxhIQ/Cxsf4COp1Q0lsleitnOSMRtE6iwG2oYWjSI3PuGC4qkENH+91jyVYoLjE2c5CsQo/l181rt6T0p/uKc4Tze4UOBxryEThDfVsvOlmSrz40tvGrwHDYb4hsNzZBg3QdBjIlN3mxTvU1aZ+Hyj0ZxXDGZhJHP3zvXw0aU/vSN4hfs9FLpCUuTDA5R6vcHC2iQ479L/TWHhDG0t3jdy3vmVcT39zAj9Td2xaeJc90ZJGsLZch3tyY/wUVY4RCzdcD94075GX7EjD2S5+4dG5iSc4=
|