# Module: YARD::Templates::Helpers::TextHelper

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

## Overview

Helper methods for text template formats.

## Instance Method Summary collapse

- #align_right(text, spacer = ' ', col = 72) ⇒ String

  Aligns text to the right.

- #h(text) ⇒ String

  Escapes text.

- #hr(col = 72, sep = "-") ⇒ String

  Returns a horizontal rule for output.

- #indent(text, len = 4) ⇒ String

  Indents `text` by `len` characters.

- #signature(meth) ⇒ String

  The formatted signature for a method.

- #title_align_right(text, col = 72) ⇒ String

  Aligns a title to the right.

- #wrap(text, col = 72) ⇒ String

  Wraps text at `col` columns.

## Instance Method Details

### #align_right(text, spacer = ' ', col = 72) ⇒ `String`

Returns aligns text to the right.

Returns:

- (`String`) —

  aligns text to the right

    39
    40
    41
    42

    # File 'lib/yard/templates/helpers/text_helper.rb', line 39

    def align_right(text, spacer = ' ', col = 72)
      text = text[0, col - 4] + '...' if (col - 1 - text.length) < 0
      spacer * (col - 1 - text.length) + " " + text
    end

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

Returns escapes text.

Returns:

- (`String`) —

  escapes text

    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21

    # File 'lib/yard/templates/helpers/text_helper.rb', line 8

    def h(text)
      out = String.new("")
      text = resolve_links(text)
      text = text.split(/\n/)
      text.each_with_index do |line, i|
        out <<
          case line
          when /^\s*$/; "\n\n"
          when /^\s+\S/, /^=/; line + "\n"
          else; line + (text[i + 1] =~ /^\s+\S/ ? "\n" : " ")
          end
      end
      out
    end

### #hr(col = 72, sep = "-") ⇒ `String`

Returns a horizontal rule for output

Returns:

- (`String`) —

  returns a horizontal rule for output

    45
    46
    47

    # File 'lib/yard/templates/helpers/text_helper.rb', line 45

    def hr(col = 72, sep = "-")
      sep * col
    end

### #indent(text, len = 4) ⇒ `String`

Returns indents `text` by `len` characters.

Returns:

- (`String`) —

  indents `text` by `len` characters.

    29
    30
    31

    # File 'lib/yard/templates/helpers/text_helper.rb', line 29

    def indent(text, len = 4)
      text.gsub(/^/, ' ' * len)
    end

### #signature(meth) ⇒ `String`

Returns the formatted signature for a method.

Returns:

- (`String`) —

  the formatted signature for a method

    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94

    # File 'lib/yard/templates/helpers/text_helper.rb', line 50

    def signature(meth)
      # use first overload tag if it has a return type and method itself does not
      if !meth.tag(:return) && meth.tag(:overload) && meth.tag(:overload).tag(:return)
        meth = meth.tag(:overload)
      end

      type = options.default_return || ""
      rmeth = meth
      if !rmeth.has_tag?(:return) && rmeth.respond_to?(:object)
        rmeth = meth.object
      end
      if rmeth.tag(:return) && rmeth.tag(:return).types
        types = rmeth.tags(:return).map {|t| t.types ? t.types : [] }.flatten.uniq
        first = types.first
        if types.size == 2 && types.last == 'nil'
          type = first + '?'
        elsif types.size == 2 && types.last =~ /^(Array)?<#{Regexp.quote types.first}>$/
          type = first + '+'
        elsif types.size > 2
          type = [first, '...'].join(', ')
        elsif types == ['void'] && options.hide_void_return
          type = ""
        else
          type = types.join(", ")
        end
      end
      type = "(#{type})" if type.include?(',')
      type = " -> #{type} " unless type.empty?
      scope = meth.scope == :class ? "#{meth.namespace.name}." : "#{meth.namespace.name.to_s.downcase}."
      name = meth.name
      blk = format_block(meth)
      args = format_args(meth)
      extras = []
      extras_text = ''
      rw = meth.namespace.attributes[meth.scope][meth.name]
      if rw
        attname = [rw[:read] ? 'read' : nil, rw[:write] ? 'write' : nil].compact
        attname = attname.size == 1 ? attname.join('') + 'only' : nil
        extras << attname if attname
      end
      extras << meth.visibility if meth.visibility != :public
      extras_text = '(' + extras.join(", ") + ')' unless extras.empty?
      title = "%s%s%s %s%s%s" % [scope, name, args, blk, type, extras_text]
      title.gsub(/\s+/, ' ')
    end

### #title_align_right(text, col = 72) ⇒ `String`

Returns aligns a title to the right.

Returns:

- (`String`) —

  aligns a title to the right

    34
    35
    36

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

    def title_align_right(text, col = 72)
      align_right(text, '-', col)
    end

### #wrap(text, col = 72) ⇒ `String`

Returns wraps text at `col` columns.

Returns:

- (`String`) —

  wraps text at `col` columns.

    24
    25
    26

    # File 'lib/yard/templates/helpers/text_helper.rb', line 24

    def wrap(text, col = 72)
      text.gsub(/(.{1,#{col}})( +|$\n?)|(.{1,#{col}})/, "\\1\\3\n")
    end