# Module: YARD::Templates::Helpers::UMLHelper

Defined in:
  lib/yard/templates/helpers/uml_helper.rb

## Overview

Helpers for UML template format

## Instance Method Summary collapse

- #format_path(object) ⇒ String

  Formats the path of an object for Graphviz syntax.

- #h(text) ⇒ String

  Encodes text in escaped Graphviz syntax.

- #tidy(data) ⇒ String

  Tidies data by formatting and indenting text.

- #uml_visibility(object) ⇒ String

  Official UML visibility prefix syntax for an object given its visibility.

## Instance Method Details

### #format_path(object) ⇒ `String`

Formats the path of an object for Graphviz syntax

Parameters:

- object (`CodeObjects::Base`) —

  an object to format the path of

Returns:

- (`String`) —

  the encoded path

    20
    21
    22

    # File 'lib/yard/templates/helpers/uml_helper.rb', line 20

    def format_path(object)
      object.path.gsub('::', '_')
    end

### #h(text) ⇒ `String`

Encodes text in escaped Graphviz syntax

Parameters:

- text (`String`) —

  text to encode

Returns:

- (`String`) —

  the encoded text

    27
    28
    29

    # File 'lib/yard/templates/helpers/uml_helper.rb', line 27

    def h(text)
      text.to_s.gsub(/(\W)/, '\\\\\1')
    end

### #tidy(data) ⇒ `String`

Tidies data by formatting and indenting text

Parameters:

- data (`String`) —

  pre-formatted text

Returns:

- (`String`) —

  tidied text.

    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44

    # File 'lib/yard/templates/helpers/uml_helper.rb', line 34

    def tidy(data)
      indent = 0
      data.split(/\n/).map do |line|
        line.gsub!(/^\s*/, '')
        next if line.empty?
        indent -= 1 if line =~ /^\s*\}\s*$/
        line = (' ' * (indent * 2)) + line
        indent += 1 if line =~ /\{\s*$/
        line
      end.compact.join("\n") + "\n"
    end

### #uml_visibility(object) ⇒ `String`

Official UML visibility prefix syntax for an object given its visibility

Parameters:

- object (`CodeObjects::Base`) —

  the object to retrieve visibility for

Returns:

- (`String`) —

  the UML visibility prefix

    9
    10
    11
    12
    13
    14
    15

    # File 'lib/yard/templates/helpers/uml_helper.rb', line 9

    def uml_visibility(object)
      case object.visibility
      when :public;    '+'
      when :protected; '#'
      when :private;   '-'
      end
    end