mementus 0.5.9 → 0.5.10
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/mementus/binding_delegator.rb +20 -0
- data/lib/mementus/graph.rb +1 -1
- data/lib/mementus/version.rb +1 -1
- data/lib/mementus.rb +1 -0
- data/spec/binding_delegator_spec.rb +24 -0
- metadata +4 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 51576e4f06689d15c0f10ecc7543bbf2135b7aa2
|
4
|
+
data.tar.gz: 8c681b2e0747301acb9febb7c15bc45b4fd1fedd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 20fbeee9ae1f0abff80637fb97214c6366899c7d9788ef74e0fd2e1a5e6d9015b449e71d8168223e73abef598ae3dd29a651aea5d19c4ad6b77c4b62ea2bb269
|
7
|
+
data.tar.gz: 82587fa758d97b6217950ca795a4d557b020117d9d35251a042547ed1eed85e53beb92747bd0a18c5a8ea734aaf5d94d6674372d4fa48a602e12eef542f49bd8
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Mementus
|
2
|
+
class BindingDelegator
|
3
|
+
def initialize(instance, scope)
|
4
|
+
@instance = instance
|
5
|
+
@scope = scope.eval('self')
|
6
|
+
end
|
7
|
+
|
8
|
+
def method_missing(name, *args, &block)
|
9
|
+
if @instance.respond_to?(name)
|
10
|
+
@instance.send(name, *args, &block)
|
11
|
+
else
|
12
|
+
@scope.send(name, *args, &block)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def respond_to_missing?(name)
|
17
|
+
@scope.respond_to?(name) || @instance.respond_to?(name)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/lib/mementus/graph.rb
CHANGED
@@ -5,7 +5,7 @@ module Mementus
|
|
5
5
|
def initialize(is_directed=true, &block)
|
6
6
|
builder = GraphBuilder.new(is_directed)
|
7
7
|
|
8
|
-
builder.instance_eval(&block) if block_given?
|
8
|
+
BindingDelegator.new(builder, block.binding).instance_eval(&block) if block_given?
|
9
9
|
|
10
10
|
@structure = builder.graph
|
11
11
|
end
|
data/lib/mementus/version.rb
CHANGED
data/lib/mementus.rb
CHANGED
@@ -19,6 +19,7 @@ require 'mementus/depth_first_search'
|
|
19
19
|
require 'mementus/breadth_first_search'
|
20
20
|
require 'mementus/integer_id'
|
21
21
|
require 'mementus/element_builder'
|
22
|
+
require 'mementus/binding_delegator'
|
22
23
|
require 'mementus/graph_builder'
|
23
24
|
require 'mementus/node_builder'
|
24
25
|
require 'mementus/edge_builder'
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
class GraphWrapper
|
4
|
+
def one
|
5
|
+
111
|
6
|
+
end
|
7
|
+
|
8
|
+
def two
|
9
|
+
222
|
10
|
+
end
|
11
|
+
|
12
|
+
def build
|
13
|
+
Mementus::Graph.new do
|
14
|
+
add_edge(from: one, to: two)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe Mementus::BindingDelegator do
|
20
|
+
it 'dispatches to methods in block scope' do
|
21
|
+
graph = GraphWrapper.new.build
|
22
|
+
expect(graph.n(111).first.outgoing.first.id).to eq(222)
|
23
|
+
end
|
24
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mementus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- maetl
|
@@ -65,6 +65,7 @@ files:
|
|
65
65
|
- LICENSE.txt
|
66
66
|
- README.md
|
67
67
|
- lib/mementus.rb
|
68
|
+
- lib/mementus/binding_delegator.rb
|
68
69
|
- lib/mementus/breadth_first_search.rb
|
69
70
|
- lib/mementus/depth_first_search.rb
|
70
71
|
- lib/mementus/direction.rb
|
@@ -94,6 +95,7 @@ files:
|
|
94
95
|
- lib/mementus/structure/incidence_list.rb
|
95
96
|
- lib/mementus/version.rb
|
96
97
|
- mementus.gemspec
|
98
|
+
- spec/binding_delegator_spec.rb
|
97
99
|
- spec/direction_spec.rb
|
98
100
|
- spec/edge_proxy_spec.rb
|
99
101
|
- spec/edge_spec.rb
|
@@ -136,6 +138,7 @@ signing_key:
|
|
136
138
|
specification_version: 4
|
137
139
|
summary: Graph data structure toolkit for Ruby applications.
|
138
140
|
test_files:
|
141
|
+
- spec/binding_delegator_spec.rb
|
139
142
|
- spec/direction_spec.rb
|
140
143
|
- spec/edge_proxy_spec.rb
|
141
144
|
- spec/edge_spec.rb
|