class Twb::Util::GML

Attributes

edges[RW]
fileName[RW]
gmlHeader[RW]
nodes[RW]

Public Class Methods

new() click to toggle source
# File lib/twb/util/gml.rb, line 42
def initialize
  # @docFile = File.open(@@docfileName,'w')
  # @docFile.puts "Starting up the GML process"
  @gmlHeader = @@gmlHeader
  @fileName  = 'gmlFile'      # will be reset in def render when file is generated
  @nodes     = SortedSet.new
  @edges     = SortedSet.new
end

Public Instance Methods

prepare() click to toggle source

def init fileName

# do stuff for new GML file here
@fileName = fileName
prepare

end

# File lib/twb/util/gml.rb, line 61
def prepare
  @nodes = SortedSet.new
  @edges = SortedSet.new
end
render() click to toggle source
# File lib/twb/util/gml.rb, line 66
def render
  # puts "GML.render - rendering into #{@fileName}"
  @fileName = "#{@fileName}.gml"
  file = File.open(docFile(@fileName),'w')
  file.puts @gmlHeader
  renderNodes file
  renderEdges file
  file.puts @@gmlFooter
  file.close
  return file
end
renderEdges(file) click to toggle source
# File lib/twb/util/gml.rb, line 96
def renderEdges file
  edges = Set.new
  @edges.each do |edge|
    gmlSourceID = Digest::MD5.hexdigest(edge.from.id)
    gmlTargetID = Digest::MD5.hexdigest(edge.to.id)
    edges << "edge [\n        source \"#{gmlSourceID}\" \n        target \"#{gmlTargetID}\" \n    ]"
  end
  edges.each do |edge|
    file.puts edge
  end
end
renderNodes(file) click to toggle source
# File lib/twb/util/gml.rb, line 78
def renderNodes file
  nodes = Set.new
  # puts 'def renderNodes'
  @nodes.each do |node|
    gmlID   = Digest::MD5.hexdigest(node.id)
    gmlName = node.name.gsub('&','&amp;').gsub('"','&quot;')
    nodestr = "node [\n        id    \"#{gmlID}\" \n        label \"#{gmlName}\" "
    unless node.colour.nil?
      nodestr += "\n    graphics \n   [ \n      fill  \"#{node.colour}\" \n   ] "
    end
    nodestr += "\n    ]"
    nodes << nodestr
  end
  nodes.each do |node|
    file.puts node
  end
end
to_s() click to toggle source
# File lib/twb/util/gml.rb, line 108
def to_s
  "file:#{@fileName}; #nodes:#{@nodes.length}; #edges:#{@edges.length}"
end