hash_graph 0.3.0 → 0.4.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.
Files changed (4) hide show
  1. data/VERSION +1 -1
  2. data/lib/hash_graph.rb +6 -5
  3. data/spec/hash_graph_spec.rb +13 -0
  4. metadata +34 -17
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.0
1
+ 0.4.0
@@ -89,23 +89,24 @@ module HashGraph
89
89
  end
90
90
 
91
91
  # returns graph components
92
- def components()
92
+ def components(&include_v)
93
93
  seen = Set.new
94
94
  comps = []
95
95
  keys.each do |vertex|
96
- if !seen.include?(vertex)
96
+ if !seen.include?(vertex) && (!include_v || include_v.call(vertex))
97
97
  seen.add(vertex)
98
- comps << explore_component(seen, Set.new([vertex]), vertex).to_a
98
+ comps << explore_component(seen, Set.new([vertex]), vertex, include_v).to_a
99
99
  end
100
100
  end
101
101
  comps
102
102
  end
103
103
 
104
- def explore_component(seen, component, vertex)
104
+ def explore_component(seen, component, vertex, include_v)
105
105
  self[vertex].keys.each do |conn_v|
106
106
  explore_component(seen.add(conn_v),
107
107
  component.add(conn_v),
108
- conn_v) if !seen.include?(conn_v)
108
+ conn_v,
109
+ include_v) if !seen.include?(conn_v) && (!include_v || include_v.call(conn_v))
109
110
  end
110
111
  component
111
112
  end
@@ -90,6 +90,19 @@ describe HashGraph do
90
90
  h.components.map(&:to_set).to_set.should == [[:foo, :bar, :baz].to_set,
91
91
  [:boo, :woo].to_set].to_set
92
92
  end
93
+
94
+ it "should permit nodes to be filtered out when extracting components" do
95
+ h=UndirectedGraph.new
96
+ h[:foo][:bar]=1
97
+ h[:foo][:baz]=1
98
+ h[:boo][:woo]=1
99
+ h[:foo][:foofoo]=1
100
+ h[:foofoo][:boo]=1
101
+
102
+ h.components.size.should ==(1)
103
+ h.components{|v| v!=:foofoo}.map(&:to_set).to_set.should == [[:foo, :bar, :baz].to_set,
104
+ [:boo, :woo].to_set].to_set
105
+ end
93
106
  end
94
107
 
95
108
  end
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hash_graph
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 4
8
+ - 0
9
+ version: 0.4.0
5
10
  platform: ruby
6
11
  authors:
7
12
  - mccraig mccraig of the clan mccraig
@@ -9,39 +14,49 @@ autorequire:
9
14
  bindir: bin
10
15
  cert_chain: []
11
16
 
12
- date: 2010-02-23 00:00:00 +00:00
17
+ date: 2010-03-03 00:00:00 +00:00
13
18
  default_executable:
14
19
  dependencies:
15
20
  - !ruby/object:Gem::Dependency
16
21
  name: rspec
17
- type: :development
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
20
24
  requirements:
21
25
  - - ">="
22
26
  - !ruby/object:Gem::Version
27
+ segments:
28
+ - 1
29
+ - 2
30
+ - 9
23
31
  version: 1.2.9
24
- version:
32
+ type: :development
33
+ version_requirements: *id001
25
34
  - !ruby/object:Gem::Dependency
26
35
  name: yard
27
- type: :development
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
30
38
  requirements:
31
39
  - - ">="
32
40
  - !ruby/object:Gem::Version
41
+ segments:
42
+ - 0
33
43
  version: "0"
34
- version:
44
+ type: :development
45
+ version_requirements: *id002
35
46
  - !ruby/object:Gem::Dependency
36
47
  name: rr
37
- type: :development
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
48
+ prerelease: false
49
+ requirement: &id003 !ruby/object:Gem::Requirement
40
50
  requirements:
41
51
  - - ">="
42
52
  - !ruby/object:Gem::Version
53
+ segments:
54
+ - 0
55
+ - 10
56
+ - 5
43
57
  version: 0.10.5
44
- version:
58
+ type: :development
59
+ version_requirements: *id003
45
60
  description: Hash based directed and undirected graph implementations for Ruby
46
61
  email: craig@trampolinesystems.com
47
62
  executables: []
@@ -75,18 +90,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
75
90
  requirements:
76
91
  - - ">="
77
92
  - !ruby/object:Gem::Version
93
+ segments:
94
+ - 0
78
95
  version: "0"
79
- version:
80
96
  required_rubygems_version: !ruby/object:Gem::Requirement
81
97
  requirements:
82
98
  - - ">="
83
99
  - !ruby/object:Gem::Version
100
+ segments:
101
+ - 0
84
102
  version: "0"
85
- version:
86
103
  requirements: []
87
104
 
88
105
  rubyforge_project:
89
- rubygems_version: 1.3.5
106
+ rubygems_version: 1.3.6
90
107
  signing_key:
91
108
  specification_version: 3
92
109
  summary: simple Hash based directed and undirected graph implementations for Ruby