Sha256: 8c367356d0eca4095bea597e6222bedc960f8b7629ca48a642b19e90527e6271

Contents?: true

Size: 1.75 KB

Versions: 1

Compression:

Stored size: 1.75 KB

Contents

module SimpleHdGraph
  module Renderer
    module PlantUML
      class Context
        def initialize
          @resource_renderer = Resource.new
        end

        #
        # @param node [ContextNode]
        #
        def render(node)
          resources =
            if node.resources.size > 0
              node.resources.map { |resource|
                indent_resource(resource)
              }.join
            end
          relations =
            if node.relations.size > 0
              node.relations.map { |relation|
                render_relation(relation)
              }.join("\n")
            end
          depends =
            if node.depends.size > 0
              node.depends.map { |depending|
                render_depends(depending)
              }.join("\n")
            end

          <<~EOD.gsub(/^$\n/, "")
            rectangle "#{node.alias}" as #{node.id} {
            #{resources}
            #{relations}
            }
            #{depends}
          EOD
        end

        #
        # @param resource [String]
        # @return [String]
        #
        def indent_resource(resource)
          @resource_renderer.render(resource).lines.map { |line|
            "  #{line}"
          }.join
        end

        #
        # @param relation [Hash]
        # @return [String]
        #
        # :reek:UtilityFunction
        def render_relation(relation)
          depender, dependee = relation.to_a.first
          "  #{depender} -d-|> #{dependee}"
        end

        #
        # @param depending [Hash]
        # @return [String]
        #
        # :reek:UtilityFunction
        def render_depends(depending)
          depender, dependee = depending.to_a.first
          "#{depender} -|> #{dependee}"
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
simple-hd-graph-0.3.5 lib/simple-hd-graph/renderer/plantuml/context.rb