lib/js_dependency/mermaid/root.rb in js_dependency-0.3.0 vs lib/js_dependency/mermaid/root.rb in js_dependency-0.3.1

- old
+ new

@@ -4,34 +4,51 @@ module JsDependency module Mermaid class Root attr_accessor :orientation + # @param [String] orientation def initialize(orientation = "LR") @orientation = orientation @list = [] end + # @param [String] parent + # @param [String] child def add(parent, child) @list << NodesLink.new(parent, child) end + # @param [Integer] name_level + # @param [nil, String] src_path + # @return [String] def export(name_level: 1, src_path: nil) + ([export_header] + export_nodes(name_level: name_level, src_path: src_path)).join("\n") + end + + # @return [String] + def export_header + "flowchart #{orientation}" + end + + # @param [Integer] name_level + # @param [nil, String] src_path + # @return [Array] + def export_nodes(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| + 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 end