Sha256: 7f71b41e5fcfd84379769d38891b2f027d0bcecc6ee5656b15537731cad1f01e

Contents?: true

Size: 981 Bytes

Versions: 143

Compression:

Stored size: 981 Bytes

Contents

require 'rgl/adjacency'

class Graph
  attr_reader :underlying

  def initialize(config, underlying=RGL::DirectedAdjacencyGraph.new)
    @config = config
    @underlying = underlying
    @edge_properties = {}
    @node_properties = {}
  end

  def add_node(name, opts)
    log("node: #{name}, opts: #{opts}")
    @underlying.add_vertex(name)
    @node_properties[name] = opts
  end

  def add_edge(from, to, opts)
    log("edge: #{from} -> #{to}")
    @underlying.add_edge(from, to)
    @edge_properties[[from, to]] = opts
  end

  def filter(source, destination)
    @underlying = GraphFilter.new(underlying).filter(source, destination)
  end

  def output(renderer)
    @underlying.each_vertex { |v| renderer.add_node(v, @node_properties[v] || {}) }
    @underlying.each_edge { |u, v|
      renderer.add_edge(u, v, opts(u, v))
    }
    renderer.output
  end

  def log(msg)
    puts msg if @config.debug?
  end

  private
  def opts(u, v)
    @edge_properties[[u, v]]
  end
end

Version data entries

143 entries across 143 versions & 1 rubygems

Version Path
aws_security_viz-0.2.5.pre.alpha.pre.35 lib/graph.rb
aws_security_viz-0.2.5.pre.alpha.pre.34 lib/graph.rb
aws_security_viz-0.2.5.pre.alpha.pre.33 lib/graph.rb
aws_security_viz-0.2.5.pre.alpha.pre.32 lib/graph.rb
aws_security_viz-0.2.5.pre.alpha.pre.31 lib/graph.rb
aws_security_viz-0.2.5.pre.alpha.pre.30 lib/graph.rb
aws_security_viz-0.2.5.pre.alpha.pre.29 lib/graph.rb
aws_security_viz-0.2.5.pre.alpha.pre.28 lib/graph.rb
aws_security_viz-0.2.5.pre.alpha.pre.27 lib/graph.rb
aws_security_viz-0.2.5.pre.alpha.pre.26 lib/graph.rb
aws_security_viz-0.2.5.pre.alpha.pre.25 lib/graph.rb
aws_security_viz-0.2.5.pre.alpha.pre.24 lib/graph.rb
aws_security_viz-0.2.5.pre.alpha.pre.23 lib/graph.rb
aws_security_viz-0.2.5.pre.alpha.pre.22 lib/graph.rb
aws_security_viz-0.2.5.pre.alpha.pre.21 lib/graph.rb
aws_security_viz-0.2.4 lib/graph.rb
aws_security_viz-0.2.4.pre.alpha.pre.20 lib/graph.rb
aws_security_viz-0.2.4.pre.alpha.pre.19 lib/graph.rb
aws_security_viz-0.2.4.pre.alpha.pre.18 lib/graph.rb
aws_security_viz-0.2.4.pre.alpha.pre.15 lib/graph.rb