mementus 0.5.3 → 0.5.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/mementus/structure/incidence_list.rb +10 -0
- data/lib/mementus/version.rb +1 -1
- data/spec/structure_spec.rb +29 -5
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c1a81084582c056ebd9ffc11f636e3633bbdb35a
|
4
|
+
data.tar.gz: 51a351b8653e9c56d3d1b6cf80035c90ab181b58
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 54473a495eaed1580a4d90020154707bb45476162952e83ce2eda7f23a99e7ac39f7f4a0da3dc6a90eac17762c61df4f8b78adb70fbecd61dfcff17faea3f27a
|
7
|
+
data.tar.gz: 0e8d597eff99b132875226ba868ce25e498d00c6011839e9836808f5da76e0df617e596743ad086a8ecf6a057e0e405daa30547f546dc8cb9b39108e234b38f3
|
@@ -72,6 +72,16 @@ module Mementus
|
|
72
72
|
end
|
73
73
|
end
|
74
74
|
|
75
|
+
def edges(match=nil)
|
76
|
+
return @edges.values unless match
|
77
|
+
|
78
|
+
@edges.values.select do |edge|
|
79
|
+
key = match.first.first
|
80
|
+
val = match.first.last
|
81
|
+
edge[key] == val
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
75
85
|
def adjacent(id)
|
76
86
|
@nodes.values_at(*@outgoing[id])
|
77
87
|
end
|
data/lib/mementus/version.rb
CHANGED
data/spec/structure_spec.rb
CHANGED
@@ -84,13 +84,37 @@ describe Mementus::Structure::IncidenceList do
|
|
84
84
|
|
85
85
|
describe '#nodes(match)' do
|
86
86
|
it 'matches all nodes with the given prop' do
|
87
|
-
structure.set_node(Mementus::Node.new(id: 1, props: { tag: '
|
88
|
-
structure.set_node(Mementus::Node.new(id: 2, props: { tag: '
|
87
|
+
structure.set_node(Mementus::Node.new(id: 1, props: { tag: 'point'}))
|
88
|
+
structure.set_node(Mementus::Node.new(id: 2, props: { tag: 'point'}))
|
89
89
|
structure.set_node(Mementus::Node.new(id: 3))
|
90
90
|
|
91
|
-
|
92
|
-
expect(
|
93
|
-
expect(
|
91
|
+
matched = structure.nodes(tag: 'point')
|
92
|
+
expect(matched.first.id).to eq(1)
|
93
|
+
expect(matched.last.id).to eq(2)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
describe '#edges' do
|
98
|
+
it 'lists all edges in the graph' do
|
99
|
+
edge = Mementus::Edge.new(id: 3, from: Mementus::Node.new(id: 1), to: Mementus::Node.new(id: 2))
|
100
|
+
structure.set_edge(edge)
|
101
|
+
|
102
|
+
matched = structure.edges
|
103
|
+
expect(matched.first.id).to eq(edge.id)
|
104
|
+
expect(matched.first.from.id).to eq(edge.from.id)
|
105
|
+
expect(matched.first.to.id).to eq(edge.to.id)
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
describe '#edges(match)' do
|
110
|
+
it 'lists all edges with the given prop' do
|
111
|
+
edge = Mementus::Edge.new(props: { tag: 'link' }, from: Mementus::Node.new(id: 1), to: Mementus::Node.new(id: 2))
|
112
|
+
structure.set_edge(edge)
|
113
|
+
|
114
|
+
matched = structure.edges(tag: 'link')
|
115
|
+
expect(matched.first.id).to eq(edge.id)
|
116
|
+
expect(matched.first.from.id).to eq(edge.from.id)
|
117
|
+
expect(matched.first.to.id).to eq(edge.to.id)
|
94
118
|
end
|
95
119
|
end
|
96
120
|
end
|