ruby-graphviz 1.0.8 → 1.0.9

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.
@@ -17,7 +17,7 @@ class Object
17
17
  def to_ruby
18
18
  begin
19
19
  eval self
20
- rescue => e
20
+ rescue
21
21
  self
22
22
  end
23
23
  end
@@ -19,7 +19,7 @@ require 'graphviz/ext'
19
19
  require 'graphviz/utils'
20
20
 
21
21
  class Dot2Ruby #:nodoc:
22
- include GVUtils
22
+ include GraphViz::Utils
23
23
 
24
24
  def initialize( xGVPath, xOutFile, xOutFormat = nil ) #:nodoc:
25
25
  paths = (xGVPath.nil?) ? [] : [xGVPath]
@@ -0,0 +1,109 @@
1
+ require "forwardable"
2
+ class GraphViz
3
+
4
+ class DOTScriptData
5
+ attr_accessor :type
6
+ def initialize(type = nil)
7
+ @data = []
8
+ @separator = ""
9
+ @type = type
10
+ end
11
+
12
+ def append(data)
13
+ @data << data
14
+ end
15
+ alias :<< :append
16
+
17
+ def add_attribute(name, value)
18
+ @data << @separator << name << " = " << value
19
+ @separator = determine_separator
20
+ end
21
+
22
+ def to_str
23
+ case @type
24
+ when "graph_attr" then "#{@data.join}#{@separator}"
25
+ when "node_attr" then "node[#{@data.join(' ')}];"
26
+ when "edge_attr" then "edge[#{@data.join(' ')}];"
27
+ else raise ArgumentError, "Wrong type: #{@type}."
28
+ end
29
+ end
30
+ alias :to_s :to_str
31
+
32
+ def empty?
33
+ @data.empty?
34
+ end
35
+
36
+ private
37
+
38
+ def determine_separator
39
+ case @type
40
+ when "graph_attr" then ";\n"
41
+ when "node_attr", "edge_attr" then ","
42
+ else raise ArgumentError, "Wrong type: #{@type}."
43
+ end
44
+ end
45
+
46
+ end
47
+
48
+ class DOTScript
49
+ extend Forwardable
50
+
51
+ def_delegators :@script, :end_with?
52
+
53
+ def initialize
54
+ @script = ''
55
+ end
56
+
57
+ def append(line)
58
+ @script << assure_ends_with(line.to_s,"\n")
59
+
60
+ self
61
+ end
62
+ alias :<< :append
63
+
64
+ def prepend(line)
65
+ @script = assure_ends_with(line.to_s,"\n") + @script
66
+
67
+ self
68
+ end
69
+
70
+ def make_subgraph(name)
71
+ prepend(assure_ends_with("subgraph #{name}"," {"))
72
+ end
73
+
74
+ def add_type(type, data)
75
+ return self if data.empty?
76
+
77
+ case type
78
+ when "graph_attr"
79
+ append_statement(" " + data)
80
+ when "node_attr"
81
+ append_statement(" node [" + data + "]")
82
+ when "edge_attr"
83
+ append_statement(" edge [" + data + "]")
84
+ else
85
+ raise ArgumentError,
86
+ "Unknown type: #{type}." <<
87
+ "Possible: 'graph_attr','node_attr','edge_attr'"
88
+ end
89
+
90
+ self
91
+ end
92
+
93
+ def to_str
94
+ @script
95
+ end
96
+ alias :to_s :to_str
97
+
98
+ private
99
+
100
+ def assure_ends_with(str,ending="\n")
101
+ str.to_s.end_with?("\n") ? str : str + ending
102
+ end
103
+
104
+ def append_statement(statement)
105
+ append(assure_ends_with(statement, ";\n"))
106
+ end
107
+
108
+ end
109
+ end
data/lib/graphviz/edge.rb CHANGED
@@ -19,7 +19,7 @@ require 'graphviz/constants'
19
19
 
20
20
  class GraphViz
21
21
  class Edge
22
- include Constants
22
+ include GraphViz::Constants
23
23
 
24
24
  # Create a new edge
25
25
  #
@@ -45,7 +45,7 @@ class GraphViz
45
45
 
46
46
  # Return the node one as string (so with port if any)
47
47
  def node_one( with_port = true )
48
- if not (@node_one_port and with_port)
48
+ if not(@node_one_port and with_port)
49
49
  GraphViz.escape(@node_one_id)
50
50
  else
51
51
  GraphViz.escape(@node_one_id, :force => true) + ":#{@node_one_port}"
@@ -55,7 +55,7 @@ class GraphViz
55
55
 
56
56
  # Return the node two as string (so with port if any)
57
57
  def node_two( with_port = true )
58
- if not (@node_two_port and with_port)
58
+ if not(@node_two_port and with_port)
59
59
  GraphViz.escape(@node_two_id)
60
60
  else
61
61
  GraphViz.escape(@node_two_id, :force => true) + ":#{@node_two_port}"
@@ -172,7 +172,7 @@ class GraphViz
172
172
  if xAttr.length > 0
173
173
  xOut << " [" + xAttr + "]"
174
174
  end
175
- xOut + ";"
175
+ xOut << ";"
176
176
 
177
177
  return( xOut )
178
178
  end
data/lib/graphviz/node.rb CHANGED
@@ -19,7 +19,7 @@ require 'graphviz/constants'
19
19
 
20
20
  class GraphViz
21
21
  class Node
22
- include Constants
22
+ include GraphViz::Constants
23
23
 
24
24
  # List of nodes that are directly accessible from given node (in a directed graph neighbors == incidents)
25
25
  attr_reader :neighbors
@@ -150,8 +150,8 @@ class GraphViz
150
150
  return nil if range.include?(nil) or @graph.type != "digraph"
151
151
  r = [ [0, [1]] ]
152
152
 
153
- critical_path_recursion( distance_matrix, adjancy_matrix, r, [], 0 ).inject( {:distance => 0, :path => []} ) { |r, item|
154
- (r[:distance] < item[0]) ? { :distance => item[0], :path => item[1] } : r
153
+ critical_path_recursion( distance_matrix, adjancy_matrix, r, [], 0 ).inject( {:distance => 0, :path => []} ) { |_r, item|
154
+ (_r[:distance] < item[0]) ? { :distance => item[0], :path => item[1] } : _r
155
155
  }
156
156
  end
157
157
 
@@ -309,7 +309,7 @@ class GraphViz
309
309
  cpath = [ (p[0] + d[node,succ]), (p[1].clone << succ) ]
310
310
 
311
311
  if index_of_item( a.line(succ), 1 ).size > 0
312
- capth = critical_path_recursion( d, a, [cpath], result, level+1 )
312
+ critical_path_recursion( d, a, [cpath], result, level+1 )
313
313
  else
314
314
  result << cpath
315
315
  end
@@ -15,7 +15,8 @@ class GraphViz
15
15
  end
16
16
 
17
17
  Dir.glob( File.dirname( File.expand_path(__FILE__) )+"/types/*.rb" ).each do |f|
18
- autoload File.basename(f).gsub(File.extname(f), "").split( "_" ).map{|n| n.capitalize }.join.to_sym, f
18
+ #autoload File.basename(f).gsub(File.extname(f), "").split( "_" ).map{|n| n.capitalize }.join.to_sym, f
19
+ require f
19
20
  end
20
21
  end
21
22
  end
@@ -6,7 +6,7 @@ class GraphViz
6
6
  end
7
7
 
8
8
  def output
9
- html = /^<([<|(^<)*<].*)>$/m.match(@data)
9
+ html = /^<([<|(^<)*<].*)>$/m.match(@data.to_s)
10
10
  if html != nil
11
11
  "<#{html[1]}>"
12
12
  else
@@ -1,80 +1,83 @@
1
1
  require 'rbconfig'
2
2
 
3
- module GVUtils
4
- # Since this code is an adaptation of Launchy::Application#find_executable
5
- # (http://copiousfreetime.rubyforge.org/launchy/Launchy/Application.html)
6
- # it follow is licence :
7
- #
8
- # Permission to use, copy, modify, and/or distribute this software for any
9
- # purpose with or without fee is hereby granted, provided that the above
10
- # copyright notice and this permission notice appear in all copies.
11
- #
12
- # THE SOFTWARE IS PROVIDED AS IS AND THE AUTHOR DISCLAIMS ALL WARRANTIES
13
- # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
14
- # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
15
- # SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
16
- # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
17
- # OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
18
- # CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
19
- def find_executable(bin, custom_paths) #:nodoc:
20
- system_path = ENV['PATH']
21
- user_given_path = Array(custom_paths).join(File::PATH_SEPARATOR)
22
- search_path = system_path + File::PATH_SEPARATOR + user_given_path
3
+ class GraphViz
4
+ module Utils
5
+ # Since this code is an adaptation of Launchy::Application#find_executable
6
+ # (http://copiousfreetime.rubyforge.org/launchy/Launchy/Application.html)
7
+ # it follow is licence :
8
+ #
9
+ # Permission to use, copy, modify, and/or distribute this software for any
10
+ # purpose with or without fee is hereby granted, provided that the above
11
+ # copyright notice and this permission notice appear in all copies.
12
+ #
13
+ # THE SOFTWARE IS PROVIDED AS IS AND THE AUTHOR DISCLAIMS ALL WARRANTIES
14
+ # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
15
+ # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
16
+ # SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
17
+ # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
18
+ # OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
19
+ # CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
20
+ def find_executable(bin, custom_paths) #:nodoc:
21
+ system_path = ENV['PATH']
22
+ user_given_path = Array(custom_paths).join(File::PATH_SEPARATOR)
23
+ search_path = system_path + File::PATH_SEPARATOR + user_given_path
23
24
 
24
- search_path.split(File::PATH_SEPARATOR).each do |path|
25
- file_path = File.join(path,bin)
26
- return file_path if File.executable?(file_path) and File.file?(file_path)
25
+ search_path.split(File::PATH_SEPARATOR).each do |path|
26
+ file_path = File.join(path,bin)
27
+ return file_path if File.executable?(file_path) and File.file?(file_path)
27
28
 
28
- if RbConfig::CONFIG['host_os'] =~ /mswin|mingw/ # WAS: elsif RUBY_PLATFORM =~ /mswin|mingw/
29
- found_ext = (ENV['PATHEXT'] || '.exe;.bat;.com').split(";").find {|ext| File.executable?(file_path + ext) }
30
- return file_path + found_ext if found_ext
29
+ if RbConfig::CONFIG['host_os'] =~ /mswin|mingw/ # WAS: elsif RUBY_PLATFORM =~ /mswin|mingw/
30
+ found_ext = (ENV['PATHEXT'] || '.exe;.bat;.com').split(";").find {|ext| File.executable?(file_path + ext) }
31
+ return file_path + found_ext if found_ext
32
+ end
31
33
  end
34
+ return nil
32
35
  end
33
- return nil
34
- end
35
36
 
36
- def escape_path_containing_blanks(path) #:nodoc:
37
- path.gsub!(File::ALT_SEPARATOR, File::SEPARATOR) if File::ALT_SEPARATOR
38
- path_elements = path.split(File::SEPARATOR)
39
- path_elements.map! do |element|
40
- if element.include?(' ')
41
- "\"#{element}\""
42
- else
43
- element
37
+ def escape_path_containing_blanks(path) #:nodoc:
38
+ path.gsub!(File::ALT_SEPARATOR, File::SEPARATOR) if File::ALT_SEPARATOR
39
+ path_elements = path.split(File::SEPARATOR)
40
+ path_elements.map! do |element|
41
+ if element.include?(' ')
42
+ "\"#{element}\""
43
+ else
44
+ element
45
+ end
44
46
  end
47
+ path_elements.join(File::SEPARATOR)
45
48
  end
46
- path_elements.join(File::SEPARATOR)
47
- end
48
49
 
49
- def output_and_errors_from_command(cmd) #:nodoc:
50
- unless defined? Open3
51
- begin
52
- require 'open3'
53
- require 'win32/open3'
54
- rescue LoadError
55
- end
56
- end
57
- begin
58
- Open3.popen3( cmd ) do |stdin, stdout, stderr|
59
- stdin.close
60
- stdout.binmode
61
- [stdout.read, stderr.read]
62
- end
63
- rescue NotImplementedError, NoMethodError
64
- IO.popen( cmd ) do |stdout|
65
- stdout.binmode
66
- [stdout.read, nil]
67
- end
68
- end
69
- end
50
+ def output_and_errors_from_command(cmd) #:nodoc:
51
+ unless defined? Open3
52
+ begin
53
+ require 'open3'
54
+ require 'win32/open3'
55
+ rescue LoadError
56
+ end
57
+ end
58
+ begin
59
+ Open3.popen3( cmd ) do |stdin, stdout, stderr|
60
+ stdin.close
61
+ stdout.binmode
62
+ [stdout.read, stderr.read]
63
+ end
64
+ rescue NotImplementedError, NoMethodError
65
+ IO.popen( cmd ) do |stdout|
66
+ stdout.binmode
67
+ [stdout.read, nil]
68
+ end
69
+ end
70
+ end
70
71
 
71
- def output_from_command(cmd) #:nodoc:
72
- output, errors = output_and_errors_from_command(cmd)
73
- if errors.nil? || errors.strip.empty?
74
- output
75
- else
76
- raise "Error from #{cmd}:\n#{errors}"
77
- end
78
- end
72
+ def output_from_command(cmd) #:nodoc:
73
+ output, errors = output_and_errors_from_command(cmd)
74
+ if errors.nil? || errors.strip.empty?
75
+ output
76
+ else
77
+ raise "Error from #{cmd}:\n#{errors}"
78
+ end
79
+ end
79
80
 
81
+ end
80
82
  end
83
+
@@ -1,7 +1,7 @@
1
1
  require 'graphviz/core_ext'
2
2
 
3
3
  class GraphViz
4
- class Utils
4
+ module Utils
5
5
  class Colors
6
6
  HEX_FOR_COLOR = /[0-9a-fA-F]{2}/
7
7
  RGBA = /^(#{HEX_FOR_COLOR})(#{HEX_FOR_COLOR})(#{HEX_FOR_COLOR})(#{HEX_FOR_COLOR})?$/
data/man/dot2ruby.1 ADDED
@@ -0,0 +1,66 @@
1
+ .\" generated with Ronn/v0.7.3
2
+ .\" http://github.com/rtomayko/ronn/tree/0.7.3
3
+ .
4
+ .TH "DOT2RUBY" "1" "April 2013" "" ""
5
+ .
6
+ .SH "NAME"
7
+ \fBdot2ruby\fR \- create a ruby script from a graphviz script
8
+ .
9
+ .SH "SYNOPSIS"
10
+ \fBdot2ruby\fR [\fB\-o\fR\fIfile\fR] [\fB\-T\fR\fIformat\fR] [\fB\-h\fR] [\fB\-V\fR] \fIscript\fR
11
+ .
12
+ .SH "DESCRIPTION"
13
+ \fBdot2ruby\fR is a tool that allows you to create a ruby script from a graphviz script\.
14
+ .
15
+ .P
16
+ See </usr/share/doc/ruby\-graphviz/> for more details\.
17
+ .
18
+ .SH "OPTIONS"
19
+ .
20
+ .TP
21
+ \fB\-o\fR, \fB\-\-output\-file\fR [\fIfile\fR]
22
+ Path to output image file (default STDOUT)
23
+ .
24
+ .TP
25
+ \fB\-T\fR, \fB\-\-output\-format\fR [\fIformat\fR]
26
+ Output format (default: png)
27
+ .
28
+ .TP
29
+ \fB\-p\fR, \fB\-\-path\fR
30
+ Graphviz path
31
+ .
32
+ .TP
33
+ \fB\-V\fR, \fB\-\-version\fR
34
+ Show version
35
+ .
36
+ .TP
37
+ \fB\-h\fR, \fB\-\-help\fR
38
+ Show this usage message
39
+ .
40
+ .SH "EXAMPLE"
41
+ .
42
+ .nf
43
+
44
+ $ cat hello\.dot
45
+ digraph G {Hello\->World;}
46
+
47
+ $ dot2ruby hello\.dot
48
+ # This code was generated by dot2ruby\.g
49
+
50
+ require \'rubygems\'
51
+ require \'graphviz\'
52
+ graph_g = GraphViz\.digraph( "G" ) { |graph_g|
53
+ graph_g[:bb] = \'0,0,70,108\'
54
+ node_hello = graph_g\.add_nodes( "Hello", :height => \'0\.5\', :label => \'\eN\', :pos => \'35,90\', :width => \'0\.88889\' )
55
+ graph_g\.add_edges( "Hello", "World", :pos => \'e,35,36\.413 35,71\.831 35,64\.131 35,54\.974 35,46\.417\' )
56
+ node_world = graph_g\.add_nodes( "World", :height => \'0\.5\', :label => \'\eN\', :pos => \'35,18\', :width => \'0\.97222\' )
57
+ }
58
+ puts graph_g\.output( :canon => String )
59
+ .
60
+ .fi
61
+ .
62
+ .SH "AUTHOR"
63
+ Copyright 2004\-2013 Gregoire Lejeune
64
+ .
65
+ .P
66
+ This manual page is written by Praveen Arimbrathodiyl \fIpraveen@debian\.org\fR for Debian GNU System (GNU/Linux, GNU/kFreeBSD, GNU/Hurd)\.
@@ -0,0 +1,55 @@
1
+ dot2ruby(1) - create a ruby script from a graphviz script
2
+ =========================================================
3
+
4
+ ## SYNOPSIS
5
+
6
+ `dot2ruby` [`-o`<file>] [`-T`<format>] [`-h`] [`-V`] _script_
7
+
8
+ ## DESCRIPTION
9
+
10
+ **dot2ruby** is a tool that allows you to create a ruby script from
11
+ a graphviz script.
12
+
13
+ See </usr/share/doc/ruby-graphviz/> for more details.
14
+
15
+ ## OPTIONS
16
+
17
+ * `-o`, `--output-file` [<file>]:
18
+ Path to output image file (default STDOUT)
19
+
20
+ * `-T`, `--output-format` [<format>]:
21
+ Output format (default: png)
22
+
23
+ * `-p`, `--path`:
24
+ Graphviz path
25
+
26
+ * `-V`, `--version`:
27
+ Show version
28
+
29
+ * `-h`, `--help`:
30
+ Show this usage message
31
+
32
+ ## EXAMPLE
33
+
34
+ $ cat hello.dot
35
+ digraph G {Hello->World;}
36
+
37
+ $ dot2ruby hello.dot
38
+ # This code was generated by dot2ruby.g
39
+
40
+ require 'rubygems'
41
+ require 'graphviz'
42
+ graph_g = GraphViz.digraph( "G" ) { |graph_g|
43
+ graph_g[:bb] = '0,0,70,108'
44
+ node_hello = graph_g.add_nodes( "Hello", :height => '0.5', :label => '\N', :pos => '35,90', :width => '0.88889' )
45
+ graph_g.add_edges( "Hello", "World", :pos => 'e,35,36.413 35,71.831 35,64.131 35,54.974 35,46.417' )
46
+ node_world = graph_g.add_nodes( "World", :height => '0.5', :label => '\N', :pos => '35,18', :width => '0.97222' )
47
+ }
48
+ puts graph_g.output( :canon => String )
49
+
50
+ ## AUTHOR
51
+
52
+ Copyright 2004-2013 Gregoire Lejeune
53
+
54
+ This manual page is written by Praveen Arimbrathodiyl <praveen@debian.org> for
55
+ Debian GNU System (GNU/Linux, GNU/kFreeBSD, GNU/Hurd).