rgraph 0.0.3 → 0.0.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.
- data/lib/rgraph/graph.rb +23 -14
- data/lib/rgraph/link.rb +9 -17
- data/lib/rgraph/version.rb +1 -1
- data/lib/rgraph.rb +3 -0
- metadata +2 -4
- data/bin/guard +0 -16
data/lib/rgraph/graph.rb
CHANGED
@@ -9,22 +9,25 @@ class Graph
|
|
9
9
|
def initialize(csv)
|
10
10
|
@nodes = []
|
11
11
|
@links = []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
12
|
+
raise Exception.new("the file must be a .csv") unless File.extname(csv) == ".csv"
|
13
|
+
|
14
|
+
CSV.foreach(csv, headers: true) do |row|
|
15
|
+
#last because CSV#delete returns [column,value]
|
16
|
+
source_id = row.delete('source').last
|
17
|
+
target_id = row.delete('target').last
|
18
|
+
|
19
|
+
unless source = get_node_by_id(source_id)
|
20
|
+
source = Node.new(id: source_id)
|
21
|
+
@nodes << source
|
22
|
+
end
|
23
|
+
unless target = get_node_by_id(target_id)
|
24
|
+
target = Node.new(id: target_id)
|
25
|
+
@nodes << target
|
23
26
|
end
|
24
|
-
|
25
|
-
|
27
|
+
|
28
|
+
@links << Link.new(source: source, target: target, weight: row['weight'], year: row['year'])
|
26
29
|
end
|
27
|
-
end
|
30
|
+
end
|
28
31
|
|
29
32
|
def each_node(&block)
|
30
33
|
@nodes.each(&block)
|
@@ -33,4 +36,10 @@ end
|
|
33
36
|
def each_link(&block)
|
34
37
|
@links.each(&block)
|
35
38
|
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
def get_node_by_id(node_id)
|
43
|
+
@nodes.select{|n| n.id == node_id}.first
|
44
|
+
end
|
36
45
|
end
|
data/lib/rgraph/link.rb
CHANGED
@@ -1,28 +1,20 @@
|
|
1
1
|
class Link
|
2
|
-
|
2
|
+
attr_accessor :source, :target
|
3
3
|
|
4
4
|
def initialize(arg)
|
5
5
|
@args = arg
|
6
|
-
|
7
|
-
|
8
|
-
end
|
6
|
+
@source = @args.delete(:source)
|
7
|
+
@target = @args.delete(:target)
|
9
8
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
if not @args[:source].is_a? Node
|
15
|
-
raise Exception.new("source must be of type Node")
|
16
|
-
end
|
17
|
-
|
18
|
-
if not @args[:target].is_a? Node
|
19
|
-
raise Exception.new("target must be of type Node")
|
20
|
-
end
|
9
|
+
raise Exception.new("source cant be nil") unless @source
|
10
|
+
raise Exception.new("target cant be nil") unless @target
|
11
|
+
raise Exception.new("source must be of type Node") unless @source.is_a? Node
|
12
|
+
raise Exception.new("target must be of type Node") unless @target.is_a? Node
|
21
13
|
|
22
14
|
@args[:weight] ||= 1
|
23
15
|
|
24
|
-
@
|
25
|
-
@
|
16
|
+
@source.neighbours << @target
|
17
|
+
@target.neighbours << @source
|
26
18
|
end
|
27
19
|
|
28
20
|
def method_missing(name, *args)
|
data/lib/rgraph/version.rb
CHANGED
data/lib/rgraph.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rgraph
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -96,8 +96,7 @@ description: Ruby's Graph Library
|
|
96
96
|
email:
|
97
97
|
- aride.moulin@gmail.com
|
98
98
|
- michel@michelboaventura.com
|
99
|
-
executables:
|
100
|
-
- guard
|
99
|
+
executables: []
|
101
100
|
extensions: []
|
102
101
|
extra_rdoc_files: []
|
103
102
|
files:
|
@@ -109,7 +108,6 @@ files:
|
|
109
108
|
- LICENSE
|
110
109
|
- README.md
|
111
110
|
- Rakefile
|
112
|
-
- bin/guard
|
113
111
|
- lib/rgraph.rb
|
114
112
|
- lib/rgraph/graph.rb
|
115
113
|
- lib/rgraph/link.rb
|
data/bin/guard
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby19
|
2
|
-
#
|
3
|
-
# This file was generated by Bundler.
|
4
|
-
#
|
5
|
-
# The application 'guard' is installed as part of a gem, and
|
6
|
-
# this file is here to facilitate running it.
|
7
|
-
#
|
8
|
-
|
9
|
-
require 'pathname'
|
10
|
-
ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile",
|
11
|
-
Pathname.new(__FILE__).realpath)
|
12
|
-
|
13
|
-
require 'rubygems'
|
14
|
-
require 'bundler/setup'
|
15
|
-
|
16
|
-
load Gem.bin_path('guard', 'guard')
|