class Bundler::Graph::GraphVizClient - bundler: Ruby Standard Library Documentation

# class Bundler::Graph::GraphVizClient

### Public Class Methods

new(graph_instance) click to toggle source

    # File bundler/graph.rb, line 95
    def initialize(graph_instance)
      @graph_name    = graph_instance.class::GRAPH_NAME
      @groups        = graph_instance.groups
      @relations     = graph_instance.relations
      @node_options  = graph_instance.node_options
      @edge_options  = graph_instance.edge_options
      @output_file   = graph_instance.output_file
      @output_format = graph_instance.output_format
    end

### Public Instance Methods

g() click to toggle source

    # File bundler/graph.rb, line 105
    def g
      @g ||= ::GraphViz.digraph(@graph_name, concentrate: true, normalize: true, nodesep: 0.55) do |g|
        g.edge[:weight]   = 2
        g.edge[:fontname] = g.node[:fontname] = "Arial, Helvetica, SansSerif"
        g.edge[:fontsize] = 12
      end
    end

run() click to toggle source

    # File bundler/graph.rb, line 113
    def run
      @groups.each do |group|
        g.add_nodes(
          group, {
            style: "filled",
            fillcolor: "#B9B9D5",
            shape: "box3d",
            fontsize: 16,
          }.merge(@node_options[group])
        )
      end

      @relations.each do |parent, children|
        children.each do |child|
          if @groups.include?(parent)
            g.add_nodes(child, { style: "filled", fillcolor: "#B9B9D5" }.merge(@node_options[child]))
            g.add_edges(parent, child, { constraint: false }.merge(@edge_options["#{parent}_#{child}"]))
          else
            g.add_nodes(child, @node_options[child])
            g.add_edges(parent, child, @edge_options["#{parent}_#{child}"])
          end
        end
      end

      if @output_format.to_s == "debug"
        $stdout.puts g.output none: String
        Bundler.ui.info "debugging bundle viz..."
      else
        begin
          g.output @output_format.to_sym => "#{@output_file}.#{@output_format}"
          Bundler.ui.info "#{@output_file}.#{@output_format}"
        rescue ArgumentError => e
          warn "Unsupported output format. See Ruby-Graphviz/lib/graphviz/constants.rb"
          raise e
        end
      end
    end