class FileIO::GMLAuthor

Write a 'gml' file for network analytics

Attributes

comment[R]
directed[R]
edges[R]
file[R]
filename[R]
id[R]
label[R]
nodes[R]

Public Class Methods

new(args) click to toggle source
# File modules/file_io.rb, line 35
def initialize(args)
        @filename= args[:filename].to_s || Time.new.to_s + '.gml'
        @nodes = []
        @edges = []

        @id = args[:id]
        @label = args[:label]
        @comment = args[:comment]

        if args[:directed]
                @directed = 1
        else
                @directed = 0
        end

        @filename = filename.gsub(/[^A-Za-z0-9\.\/]/,'_')

        @file = File.open(filename, 'wb')
end

Public Instance Methods

add_edge(edge) click to toggle source
# File modules/file_io.rb, line 88
def add_edge(edge)
        unless edges.include? edge
                @edges << edge
        end
end
add_node(node) click to toggle source
# File modules/file_io.rb, line 81
def add_node(node)
        unless nodes.include? node
                @nodes << node
        end
end
header() click to toggle source
# File modules/file_io.rb, line 62
def header
        file.write %Q{graph [\n} 
        file.write %Q{\tdirected #{directed}\n}
        if id
                file.write %Q{\tid #{id}\n}
        end
        if label
                file.write %Q{\tlabel #{label}\n}
        end
        if comment
                file.write %Q{\tcomment #{comment}\n}
        end
end
write() click to toggle source
# File modules/file_io.rb, line 55
def write
        header
        write_nodes
        write_edges
        footer
end
write_edges() click to toggle source
# File modules/file_io.rb, line 110
def write_edges
        edges.each do |edge|
                file.write %Q{\tedge [\n}
                file.write %Q{\t\tsource "#{edge.delete :source}"\n}
                file.write %Q{\t\ttarget "#{edge.delete :target}"\n}
                edge.keys.each do |key|
                        file.write %Q{\t\t#{key} }
                        if edge[key].is_a? String
                                file.write %Q{"#{edge[key]}"\n}
                        else
                                file.write %Q{#{edge[key]}\n}
                        end
                end
                file.write %Q{\t]\n}
        end
end
write_nodes() click to toggle source
# File modules/file_io.rb, line 94
def write_nodes
        nodes.each do |node|
                file.write %Q{\tnode [\n} 
                file.write %Q{\t\tid "#{node.delete :id}"\n}
                node.keys.each do |key|
                        file.write %Q{\t\t#{key} }
                        if node[key].is_a? String
                                file.write %Q{"#{node[key]}"\n}
                        else
                                file.write %Q{#{node[key]}\n}
                        end
                end
                file.write %Q{\t]\n}
        end
end