Class: GraphVizML

Inherits:
Object
  • Object
show all
Defined in:
lib/graphvizml.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(obj = nil, debug: false, fill: 'transparent', stroke: '#000', text_color: '#000') ⇒ GraphVizML

Returns a new instance of GraphVizML.



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/graphvizml.rb', line 32

def initialize(obj=nil, debug: false, fill: 'transparent', stroke: '#000', text_color: '#000')
  
  @debug = debug
  @fill, @stroke, @text_color = fill, stroke, text_color
  
  if obj then
  
          
    xml = if obj.is_a? Rexle or obj.is_a? Rexle::Element
    
      obj.xml
    
    else 
      
      s = RXFHelper.read(obj).first
    
      if  s =~ /<\?graphvizml\b/ then
        
        import_string s        
        
      else
      
        if @debug then
          #File.write '/tmp/graphviz.xml', xml
          puts('graphvizml xml: ' + s.inspect) 
        end        
        
        s
      
      end
      
    end
    
    @g = build_from_nodes Domle.new(xml)
    
  end
  
  @css = "
    .node ellipse {stroke: #{stroke}; fill: #{fill}}
    .node text {fill: #{text_color}}
    .edge path {stroke: #{stroke}}
    .edge polygon {stroke: #{stroke}; fill: #{stroke}}
  "

end

Instance Attribute Details

#cssObject

Returns the value of attribute css.



29
30
31
# File 'lib/graphvizml.rb', line 29

def css
  @css
end

#fillObject

Returns the value of attribute fill.



29
30
31
# File 'lib/graphvizml.rb', line 29

def fill
  @fill
end

#gObject (readonly)

Returns the value of attribute g.



30
31
32
# File 'lib/graphvizml.rb', line 30

def g
  @g
end

#strokeObject

Returns the value of attribute stroke.



29
30
31
# File 'lib/graphvizml.rb', line 29

def stroke
  @stroke
end

#text_colorObject

Returns the value of attribute text_color.



29
30
31
# File 'lib/graphvizml.rb', line 29

def text_color
  @text_color
end

Instance Method Details

#import(obj) ⇒ Object



78
79
80
81
82
83
84
85
# File 'lib/graphvizml.rb', line 78

def import(obj)
  
  s = RXFHelper.read(obj).first
  xml = import_string s
  @g = build_from_nodes Domle.new(xml)
  self
  
end

#to_dotObject



88
89
90
# File 'lib/graphvizml.rb', line 88

def to_dot()
  @g.to_dot
end

#to_svgObject

returns an SVG blob



95
96
97
98
99
100
101
# File 'lib/graphvizml.rb', line 95

def to_svg()
  f = Tempfile.new('graphvizml')
  Graphviz::output(@g, format: 'svg', path: f.path)
  s = File.read f.path
  s.sub!('xmlns:xlink="http://www.w3.org/1999/xlink"','')
  s.lines.insert(8, css_code()).join    
end