Sha256: 03e3e508eeb6ea4609d58b4452611b36906f6346717a4aa5edb9b90f6dd06ef7

Contents?: true

Size: 1.12 KB

Versions: 4

Compression:

Stored size: 1.12 KB

Contents

# Sets visibility of a constant (class, module, const)
class YARD::Handlers::Ruby::PrivateConstantHandler < YARD::Handlers::Ruby::Base
  namespace_only
  handles method_call(:private_constant)
  
  process do
    errors = []
    statement.parameters.each do |param|
      next unless AstNode === param
      begin
        privatize_constant(param)
      rescue UndocumentableError => err
        errors << err.message
      end
    end
    if errors.size > 0
      msg = errors.size == 1 ? ": #{errors[0]}" : "s: #{errors.join(", ")}"
      raise UndocumentableError, "private constant#{msg} for #{namespace.path}"
    end
  end
  
  private
  
  def privatize_constant(node)
    if node.literal? || (node.type == :var_ref && node[0].type == :const)
      node = node.jump(:tstring_content, :const)
      const = Proxy.new(namespace, node[0])
      ensure_loaded!(const)
      const.visibility = :private
    else
      raise UndocumentableError, "invalid argument to private_constant: #{node.source}"
    end
  rescue NamespaceMissingError
    raise UndocumentableError, "private visibility set on unrecognized constant: #{node[0]}"
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
yard-0.6.8 lib/yard/handlers/ruby/private_constant_handler.rb
yard-0.6.7 lib/yard/handlers/ruby/private_constant_handler.rb
yard-0.6.6 lib/yard/handlers/ruby/private_constant_handler.rb
yard-0.6.5 lib/yard/handlers/ruby/private_constant_handler.rb