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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5eae3c09a4901309b458150c6a8e76dbcc345ce4
4
- data.tar.gz: 7c29b2eafea3c245595b28c6d04b14ba80868f22
3
+ metadata.gz: c1a81084582c056ebd9ffc11f636e3633bbdb35a
4
+ data.tar.gz: 51a351b8653e9c56d3d1b6cf80035c90ab181b58
5
5
  SHA512:
6
- metadata.gz: 31115b44639e4129c9e74e0ce4b33203d8858e89a799f63d88c2e83645900c307703816e138daa89109ae0725ea254ce926d6de61c1688ab029e341324e25b58
7
- data.tar.gz: 936165f2b0884a54b06f8092d8f5aacba3584d2fef5ac0bf1c4d1acf63da3f41bc7d6df94e4299d68882248f6771a61491a7a41643085f62beb43a08b3e604d6
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
@@ -1,3 +1,3 @@
1
1
  module Mementus
2
- VERSION = '0.5.3'.freeze
2
+ VERSION = '0.5.4'.freeze
3
3
  end
@@ -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: 'item'}))
88
- structure.set_node(Mementus::Node.new(id: 2, props: { tag: 'item'}))
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
- items = structure.nodes(tag: 'item')
92
- expect(items.first.id).to eq(1)
93
- expect(items.last.id).to eq(2)
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
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.3
4
+ version: 0.5.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - maetl