mementus 0.5.3 → 0.5.4

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 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