class HereDocHelper

Constants

HEREDOC_START

Sometimes the YARD parser returns Heredoc strings that start with `<-` instead of `<<-`.

Public Instance Methods

is_heredoc?(str) click to toggle source
# File lib/puppet_x/puppetlabs/strings/yard/handlers/heredoc_helper.rb, line 41
def is_heredoc?(str)
  HEREDOC_START.match(str)
end
process_element(ele) click to toggle source

Turns an entry in the method parameter list into a string.

@param ele [YARD::Parser::Ruby::AstNode] @return [String]

# File lib/puppet_x/puppetlabs/strings/yard/handlers/heredoc_helper.rb, line 49
def process_element(ele)
  ele = ele.jump(:ident, :string_content)

  case ele.type
  when :ident
    ele.source
  when :string_content
    source = ele.source
    if is_heredoc? source
      process_heredoc(source)
    else
      source
    end
  end
end
process_heredoc(source) click to toggle source

Cleans up and formats Heredoc contents parsed by YARD.

@param source [String] @return [String]

# File lib/puppet_x/puppetlabs/strings/yard/handlers/heredoc_helper.rb, line 69
def process_heredoc(source)
  source = source.lines.to_a

  # YARD adds a line of source context on either side of the Heredoc
  # contents.
  source.shift
  source.pop

  # This utility method normalizes indentation and trims whitespace.
  Puppet::Util::Docs.scrub(source.join)
end
process_parameters(statement) click to toggle source

Extracts the Puppet function name and options hash from the parsed definition.

@return [(String, Hash{String => String})]

# File lib/puppet_x/puppetlabs/strings/yard/handlers/heredoc_helper.rb, line 14
def process_parameters(statement)
  # Passing `false` to prameters excludes the block param from the returned
  # list.
  name, opts = statement.parameters(false).compact

  name = process_element(name)

  # Don't try to process options if we don't have any
  if !opts.nil?
    opts = opts.map do |tuple|
      # Jump down into the S-Expression that represents a hashrocket, `=>`,
      # and the values on either side of it.
      tuple.jump(:assoc).map{|e| process_element(e)}
    end

    options = Hash[opts]
  else
    options = {}
  end

  [name, options]
end