Sha256: 7e40f208bb6d08a2cd0b8839c6b60831e2ac88c69258574f129c001e33740869

Contents?: true

Size: 871 Bytes

Versions: 1

Compression:

Stored size: 871 Bytes

Contents

module Marmerdo
  class DomainDiagramGenerator
    def initialize(output_path:, nodes:, enable_link_extension:)
      @output_path = output_path
      @nodes = nodes
      @enable_link_extension = enable_link_extension
    end

    # @return [String] mermaid class diagram
    def generate
      classes = @nodes.map(&:to_mermaid_line)
      links = @nodes.map do |node|
        node.generate_mermaid_link(@output_path, enable_link_extension: @enable_link_extension)
      end

      relationships = @nodes.flat_map do |node|
        node.relationships.map do |relationship|
          relationship.to_mermaid_str(node.name)
        end
      end

      [
        "classDiagram",
        classes,
        links,
        relationships
      ].flatten.join("\n")
    end

    private

    def nodes_by_name
      @nodes_by_name ||= @nodes.group_by(&:name)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
marmerdo-0.2.3 lib/marmerdo/domain_diagram_generator.rb