Class/Module Index [+]

Quicksearch

YARD::Templates::Helpers::HtmlHelper

The helper module for HTML templates.

Public Instance Methods

anchor_for(object) click to toggle source

@param [CodeObjects::Base] object the object to get an anchor for @return [String] the anchor for a specific object

# File lib/yard/templates/helpers/html_helper.rb, line 289
def anchor_for(object)
  case object
  when CodeObjects::MethodObject
    "#{object.name}-#{object.scope}_#{object.type}"
  when CodeObjects::ClassVariableObject
    "#{object.name.to_s.gsub('@@', '')}-#{object.type}"
  when CodeObjects::Base
    "#{object.name}-#{object.type}"
  when CodeObjects::Proxy
    object.path
  else
    object.to_s
  end
end
charset() click to toggle source

Returns the current character set. The default value can be overridden by setting the LANG environment variable or by overriding this method. In Ruby 1.9 you can also modify this value by setting Encoding.default_external.

@return [String] the current character set @since 0.5.4

# File lib/yard/templates/helpers/html_helper.rb, line 511
def charset
  has_encoding = defined?(::Encoding)
  if @file && has_encoding
    lang = @file.contents.encoding.to_s
  else
    return 'utf-8' unless has_encoding || lang = ENV['LANG']
    if has_encoding
      lang = ::Encoding.default_external.name.downcase
    else
      lang = lang.downcase.split('.').last
    end
  end
  case lang
  when "ascii-8bit", "us-ascii", "ascii-7bit"; 'iso-8859-1'
  when "utf8"; 'utf-8'
  else; lang
  end
end
format_object_name_list(objects) click to toggle source

Formats a list of objects and links them @return [String] a formatted list of objects

# File lib/yard/templates/helpers/html_helper.rb, line 397
def format_object_name_list(objects)
  objects.sort_by {|o| o.name.to_s.downcase }.map do |o|
    "<span class='name'>" + linkify(o, o.name) + "</span>"
  end.join(", ")
end
format_types(typelist, brackets = true) click to toggle source

Formats a list of types from a tag.

@param [Array<String>, FalseClass] typelist

the list of types to be formatted.

@param [Boolean] brackets omits the surrounding

brackets if +brackets+ is set to +false+.

@return [String] the list of types formatted

as [Type1, Type2, ...] with the types linked
to their respective descriptions.
# File lib/yard/templates/helpers/html_helper.rb, line 415
def format_types(typelist, brackets = true)
  return unless typelist.is_a?(Array)
  list = typelist.map do |type|
    type = type.gsub(/([<>])/) { h($1) }
    type = type.gsub(/([\w:]+)/) { $1 == "lt" || $1 == "gt" ? $1 : linkify($1, $1) }
    "<tt>" + type + "</tt>"
  end
  list.empty? ? "" : (brackets ? "(#{list.join(", ")})" : list.join(", "))
end
h(text) click to toggle source

Escapes HTML entities

@param [String] text the text to escape @return [String] the HTML with escaped entities

# File lib/yard/templates/helpers/html_helper.rb, line 16
def h(text)
  CGI.escapeHTML(text.to_s)
end
html_markup_html(text) click to toggle source

Converts HTML to HTML @param [String] text input html @return [String] output HTML @since 0.6.0

# File lib/yard/templates/helpers/html_helper.rb, line 124
def html_markup_html(text)
  text
end
html_markup_markdown(text) click to toggle source

Converts Markdown to HTML @param [String] text input Markdown text @return [String] output HTML @since 0.6.0

# File lib/yard/templates/helpers/html_helper.rb, line 57
def html_markup_markdown(text)
  # TODO: other libraries might be more complex
  provider = markup_class(:markdown)
  if provider.to_s == 'RDiscount'
    provider.new(text, :autolink).to_html
  elsif provider.to_s == 'RedcarpetCompat'
    provider.new(text, :no_intraemphasis, :gh_blockcode,
                       :fenced_code, :autolink).to_html
  else
    provider.new(text).to_html
  end
end
html_markup_none(text) click to toggle source

@return [String] the same text with no markup @since 0.6.6

# File lib/yard/templates/helpers/html_helper.rb, line 116
def html_markup_none(text)
  h(text)
end
html_markup_pre(text) click to toggle source

Converts plaintext to pre-formatted HTML @param [String] text the input text @return [String] the output HTML @since 0.6.0

# File lib/yard/templates/helpers/html_helper.rb, line 102
def html_markup_pre(text)
  "<pre>" + h(text) + "</pre>"
end
html_markup_rdoc(text) click to toggle source

Converts RDoc formatting (SimpleMarkup) to HTML @param [String] text the input RDoc formatted text @return [String] output HTML @since 0.6.0

# File lib/yard/templates/helpers/html_helper.rb, line 92
def html_markup_rdoc(text)
  doc = markup_class(:rdoc).new(text)
  doc.from_path = url_for(object) if doc.respond_to?(:from_path=)
  doc.to_html
end
html_markup_ruby(source) click to toggle source

Highlights Ruby source. Similar to {html_syntax_highlight}, but this method is meant to be called from {htmlify} when markup is set to "ruby".

@param [String] source the Ruby source @return [String] the highlighted HTML @since 0.7.0

# File lib/yard/templates/helpers/html_helper.rb, line 135
def html_markup_ruby(source)
  '<pre class="code ruby">' + html_syntax_highlight(source, :ruby) + '</pre>'
end
html_markup_text(text) click to toggle source

Converts plaintext to regular HTML @param [String] text the input text @return [String] the output HTML @since 0.6.0

# File lib/yard/templates/helpers/html_helper.rb, line 110
def html_markup_text(text)
  h(text).gsub(/\r?\n/, '<br/>')
end
html_markup_textile(text) click to toggle source

Converts Textile to HTML @param [String] text the input Textile text @return [String] output HTML @since 0.6.0

# File lib/yard/templates/helpers/html_helper.rb, line 74
def html_markup_textile(text)
  doc = markup_class(:textile).new(text)
  doc.hard_breaks = false if doc.respond_to?(:hard_breaks=)
  doc.to_html
end
html_markup_textile_strict(text) click to toggle source

Converts plaintext to strict Textile (hard breaks) @param [String] text the input textile data @return [String] the output HTML @since 0.6.0

# File lib/yard/templates/helpers/html_helper.rb, line 84
def html_markup_textile_strict(text)
  markup_class(:textile).new(text).to_html
end
html_syntax_highlight(source, type = nil) click to toggle source

Syntax highlights source in language type.

@note To support a specific language type, implement the method

+html_syntax_highlight_TYPE+ in this class.

@param [String] source the source code to highlight @param [Symbol, String] type the language type (:ruby, :plain, etc). Use

:plain for no syntax highlighting.

@return [String] the highlighted source

# File lib/yard/templates/helpers/html_helper.rb, line 155
def html_syntax_highlight(source, type = nil)
  return "" unless source
  return h(source) unless options.highlight

  new_type, source = parse_lang_for_codeblock(source)
  type ||= new_type || :ruby
  meth = "html_syntax_highlight_#{type}"
  respond_to?(meth) ? send(meth, source) : h(source)
end
html_syntax_highlight_plain(source) click to toggle source

@return [String] unhighlighted source

# File lib/yard/templates/helpers/html_helper.rb, line 166
def html_syntax_highlight_plain(source)
  h(source)
end
htmlify(text, markup = options.markup) click to toggle source

Turns text into HTML using markup style formatting.

@param [String] text the text to format @param [Symbol] markup examples are :markdown, :textile, :rdoc.

To add a custom markup type, see {MarkupHelper}

@return [String] the HTML

# File lib/yard/templates/helpers/html_helper.rb, line 36
def htmlify(text, markup = options.markup)
  markup_meth = "html_markup_#{markup}"
  return text unless respond_to?(markup_meth)
  return "" unless text
  return text unless markup
  html = send(markup_meth, text)
  if html.respond_to?(:encode)
    html = html.force_encoding(text.encoding) # for libs that mess with encoding
    html = html.encode(:invalid => :replace, :replace => '?')
  end
  html = resolve_links(html)
  unless [:text, :none, :pre].include?(markup)
    html = parse_codeblocks(html)
  end
  html
end
htmlify_line(*args) click to toggle source

@return [String] HTMLified text as a single line (paragraphs removed)

# File lib/yard/templates/helpers/html_helper.rb, line 140
def htmlify_line(*args)
  "<div class='inline'>" + htmlify(*args) + "</div>"
end
signature(meth, link = true, show_extras = true, full_attr_name = true) click to toggle source

Formats the signature of method meth.

@param [CodeObjects::MethodObject] meth the method object to list

the signature of

@param [Boolean] link whether to link the method signature to the details view @param [Boolean] show_extras whether to show extra meta-data (visibility, attribute info) @param [Boolean] full_attr_name whether to show the full attribute name

("name=" instead of "name")

@return [String] the formatted method signature

# File lib/yard/templates/helpers/html_helper.rb, line 468
def signature(meth, link = true, show_extras = true, full_attr_name = true)
  meth = convert_method_to_overload(meth)

  type = signature_types(meth, link)
  scope = meth.scope == :class ? "+" : "-"
  name = full_attr_name ? meth.name : meth.name.to_s.gsub(/^(\w+)=$/, '\1')
  blk = format_block(meth)
  args = !full_attr_name && meth.writer? ? "" : format_args(meth)
  extras = []
  extras_text = ''
  if show_extras
    if rw = meth.attr_info
      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 = ' <span class="extras">(' + extras.join(", ") + ')</span>' unless extras.empty?
  end
  title = "%s %s<strong>%s</strong>%s %s" % [scope, type, h(name), args, blk]
  if link
    if meth.is_a?(YARD::CodeObjects::MethodObject)
      link_title = "#{h meth.name(true)} (#{meth.scope} #{meth.type})"
    else
      link_title = "#{h name} (#{meth.type})"
    end
    obj = meth.respond_to?(:object) ? meth.object : meth
    url = url_for(object, obj)
    link_url(url, title, :title => link_title) + extras_text
  else
    title + extras_text
  end
end
signature_types(meth, link = true) click to toggle source

Get the return types for a method signature.

@param [CodeObjects::MethodObject] meth the method object @param [Boolean] link whether to link the types @return [String] the signature types @since 0.5.3

# File lib/yard/templates/helpers/html_helper.rb, line 431
def signature_types(meth, link = true)
  meth = convert_method_to_overload(meth)
  if meth.respond_to?(:object) && !meth.has_tag?(:return)
    meth = meth.object
  end

  type = options.default_return || ""
  if meth.tag(:return) && meth.tag(:return).types
    types = meth.tags(:return).map {|t| t.types ? t.types : [] }.flatten.uniq
    first = link ? h(types.first) : format_types([types.first], false)
    if types.size == 2 && types.last == 'nil'
      type = first + '<sup>?</sup>'
    elsif types.size == 2 && types.last =~ /^(Array)?<#{Regexp.quote types.first}>$/
      type = first + '<sup>+</sup>'
    elsif types.size > 2
      type = [first, '...'].join(', ')
    elsif types == ['void'] && options.hide_void_return
      type = ""
    else
      type = link ? h(types.join(", ")) : format_types(types, false)
    end
  elsif !type.empty?
    type = link ? h(type) : format_types([type], false)
  end
  type = "(#{type}) " unless type.empty?
  type
end
url_for(obj, anchor = nil, relative = true) click to toggle source

Returns the URL for an object.

@param [String, CodeObjects::Base] obj the object (or object path) to link to @param [String] anchor the anchor to link to @param [Boolean] relative use a relative or absolute link @return [String] the URL location of the object

# File lib/yard/templates/helpers/html_helper.rb, line 310
def url_for(obj, anchor = nil, relative = true)
  link = nil
  return link unless serializer

  if obj.is_a?(CodeObjects::Base) && !obj.is_a?(CodeObjects::NamespaceObject)
    # If the obj is not a namespace obj make it the anchor.
    anchor, obj = obj, obj.namespace
  end

  objpath = serializer.serialized_path(obj)
  return link unless objpath

  if relative
    fromobj = object
    if object.is_a?(CodeObjects::Base) &&
        !object.is_a?(CodeObjects::NamespaceObject)
      fromobj = owner
    end

    from = serializer.serialized_path(fromobj)
    link = File.relative_path(from, objpath)
  else
    link = objpath
  end

  link + (anchor ? '#' + urlencode(anchor_for(anchor)) : '')
end
url_for_file(filename, anchor = nil) click to toggle source

Returns the URL for a specific file

@param [String, CodeObjects::ExtraFileObject] filename the filename to link to @param [String] anchor optional anchor @return [String] the URL pointing to the file

# File lib/yard/templates/helpers/html_helper.rb, line 343
def url_for_file(filename, anchor = nil)
  return '' unless serializer
  fromobj = object
  if CodeObjects::Base === fromobj && !fromobj.is_a?(CodeObjects::NamespaceObject)
    fromobj = fromobj.namespace
  end
  from = serializer.serialized_path(fromobj)
  if filename == options.readme
    path = 'index.html'
  else
    path = serializer.serialized_path(filename)
  end
  link = File.relative_path(from, path)
  link += (anchor ? '#' + urlencode(anchor) : '')
  link
end
url_for_frameset() click to toggle source

Returns the URL for the frameset page

@return [String] the URL pointing to the frames page @since 0.8.0

# File lib/yard/templates/helpers/html_helper.rb, line 373
def url_for_frameset
  url_for_file("frames.html")
end
url_for_index() click to toggle source

Returns the URL for the alphabetic index page

@return [String] the URL pointing to the first main page the

user should see.
# File lib/yard/templates/helpers/html_helper.rb, line 389
def url_for_index
  url_for_file("_index.html")
end
url_for_list(type) click to toggle source

Returns the URL for a list type

@param [String, Symbol] type the list type to generate a URL for @return [String] the URL pointing to the list @since 0.8.0

# File lib/yard/templates/helpers/html_helper.rb, line 365
def url_for_list(type)
  url_for_file("#{type}_list.html")
end
url_for_main() click to toggle source

Returns the URL for the main page (README or alphabetic index)

@return [String] the URL pointing to the first main page the

user should see.
# File lib/yard/templates/helpers/html_helper.rb, line 381
def url_for_main
  url_for_file("index.html")
end
urlencode(text) click to toggle source

Escapes a URL

@param [String] text the URL @return [String] the escaped URL

# File lib/yard/templates/helpers/html_helper.rb, line 24
def urlencode(text)
  CGI.escape(text.to_s)
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.