class Diagram

Attributes

actors[RW]
nodes[RW]

Public Class Methods

new(file=nil) click to toggle source
# File lib/use_case_diagram/diagram.rb, line 39
def initialize(file=nil)
  @file=file
  @actors=Actors.new
  @nodes=Nodes.new
  @uses={}
  @extends={}
  @includes={}
  @generalises={}
  
end

Public Instance Methods

extends(from_u,to_u) click to toggle source
# File lib/use_case_diagram/diagram.rb, line 72
def extends(from_u,to_u)
  relate(@extends,from_u,to_u)
end
extends_to_dot() click to toggle source
# File lib/use_case_diagram/diagram.rb, line 101
def extends_to_dot
  return relations_to_dot(@extends)
end
fill_nodes() click to toggle source

fill nodes not defined by node a line

# File lib/use_case_diagram/diagram.rb, line 123
def fill_nodes
  fill_nodes_from(@uses)
  fill_nodes_from(@extends)
  fill_nodes_from(@includes)
  fill_nodes_from(@generalises)
end
fill_nodes_from(hash) click to toggle source
# File lib/use_case_diagram/diagram.rb, line 114
def fill_nodes_from(hash)
  hash.to_a.flatten.each do |node|
    if (!@nodes.find(node) && !@actors.find(node))
       @nodes.add(node)
    end
  end
end
generalises(from_u,to_u) click to toggle source
# File lib/use_case_diagram/diagram.rb, line 80
def generalises(from_u,to_u)
  relate(@generalises,from_u,to_u)
end
generalises_to_dot() click to toggle source
# File lib/use_case_diagram/diagram.rb, line 110
def generalises_to_dot
  return relations_to_dot(@generalises)
end
includes(from_u,to_u) click to toggle source
# File lib/use_case_diagram/diagram.rb, line 76
def includes(from_u,to_u)
  relate(@includes,from_u,to_u)
end
includes_to_dot() click to toggle source
# File lib/use_case_diagram/diagram.rb, line 106
def includes_to_dot
  return relations_to_dot(@includes)
end
inspect() click to toggle source
# File lib/use_case_diagram/diagram.rb, line 50
def inspect
  puts "Actors:#{@actors.count}"
  puts "Nodes:#{@nodes.count}"
  puts "Uses:#{@uses.count}"
  puts "Includes:#{@includes.count}"
  puts "Extends:#{@extends.count}"
  
end
relate(relation,from_u,to_u) click to toggle source
# File lib/use_case_diagram/diagram.rb, line 59
def relate(relation,from_u,to_u)
  if relation[from_u].nil?
    relation[from_u]=[]
  end
  
  relation[from_u] << to_u
  
end
relations_to_dot(relations) click to toggle source
# File lib/use_case_diagram/diagram.rb, line 86
def relations_to_dot(relations)
   res=''
   relations.each do |from_use,to_use|
     to_use.each do |to_u|
      res += "#{from_use.to_s.dquote} -> #{to_u.to_s.dquote};\n"        
     end
   end
   
   return res
end
to_dot() click to toggle source
# File lib/use_case_diagram/diagram.rb, line 131
def to_dot
  
  fill_nodes
  
  res=DIAG_TPL
  
  res=res.gsub('#ACTORS#',@actors.to_dot)
  res=res.gsub('#NODES#',@nodes.to_dot)
  res=res.gsub('#USES#',uses_to_dot)

  res=res.gsub('#EXTENDS#',extends_to_dot)
  res=res.gsub('#INCLUDES#',includes_to_dot)
  res=res.gsub('#GENERALISES#',generalises_to_dot)

  return res
end
uses(from_u,to_u) click to toggle source
# File lib/use_case_diagram/diagram.rb, line 68
def uses(from_u,to_u)
  relate(@uses,from_u,to_u)
end
uses_to_dot() click to toggle source
# File lib/use_case_diagram/diagram.rb, line 97
def uses_to_dot
  return relations_to_dot(@uses)
end