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

Instance Method Details

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


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


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


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


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


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


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


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