Sha256: eea986cc87db1e00c2774a7cc2ae9abdbf39205b1fa55155ac27e4d21c569f4c

Contents?: true

Size: 1.26 KB

Versions: 1

Compression:

Stored size: 1.26 KB

Contents

# frozen_string_literal: true

require_relative "nodes_link"
module JsDependency
  module Mermaid
    class Root
      attr_accessor :orientation

      def initialize(orientation = "LR")
        @orientation = orientation
        @list = []
      end

      def add(parent, child)
        @list << NodesLink.new(parent, child)
      end

      def export(name_level: 1, src_path: nil)
        nodes_links = if src_path
                        src_pathname = Pathname.new(src_path).realpath
                        @list.map do |nodes_link|
                          NodesLink.new(nodes_link.parent.exist? ? nodes_link.parent.relative_path_from(src_pathname.to_s) : nodes_link.parent.to_s,
                                        nodes_link.child.exist? ? nodes_link.child.relative_path_from(src_pathname.to_s) : nodes_link.child.to_s)
                        end
                      else
                        @list
                      end
        str = "flowchart #{orientation}\n"
        str + nodes_links.uniq do |link|
          "#{link.parent}__#{link.child}"
        end.sort_by { |link| "#{link.parent}__#{link.child}" }.map do |link|
          "#{link.parent_module_name(name_level)} --> #{link.child_module_name(name_level)}"
        end.join("\n")
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
js_dependency-0.3.0 lib/js_dependency/mermaid/root.rb