60 lines
1.9 KiB
Ruby
60 lines
1.9 KiB
Ruby
require 'puppet-strings/yard/code_objects/group'
|
|
|
|
# Implements the group for Puppet classes.
|
|
class PuppetStrings::Yard::CodeObjects::Classes < PuppetStrings::Yard::CodeObjects::Group
|
|
# Gets the singleton instance of the group.
|
|
# @return Returns the singleton instance of the group.
|
|
def self.instance
|
|
super(:puppet_classes)
|
|
end
|
|
|
|
# Gets the display name of the group.
|
|
# @param [Boolean] prefix whether to show a prefix. Ignored for Puppet group namespaces.
|
|
# @return [String] Returns the display name of the group.
|
|
def name(prefix = false)
|
|
'Puppet Classes'
|
|
end
|
|
end
|
|
|
|
# Implements the Puppet class code object.
|
|
class PuppetStrings::Yard::CodeObjects::Class < PuppetStrings::Yard::CodeObjects::Base
|
|
attr_reader :statement
|
|
attr_reader :parameters
|
|
|
|
# Initializes a Puppet class code object.
|
|
# @param [PuppetStrings::Parsers::ClassStatement] statement The class statement that was parsed.
|
|
# @return [void]
|
|
def initialize(statement)
|
|
@statement = statement
|
|
@parameters = statement.parameters.map { |p| [p.name, p.value] }
|
|
super(PuppetStrings::Yard::CodeObjects::Classes.instance, statement.name)
|
|
end
|
|
|
|
# Gets the type of the code object.
|
|
# @return Returns the type of the code object.
|
|
def type
|
|
:puppet_class
|
|
end
|
|
|
|
# Gets the source of the code object.
|
|
# @return Returns the source of the code object.
|
|
def source
|
|
@statement.source
|
|
end
|
|
|
|
# Converts the code object to a hash representation.
|
|
# @return [Hash] Returns a hash representation of the code object.
|
|
def to_hash
|
|
hash = {}
|
|
hash[:name] = name
|
|
hash[:file] = file
|
|
hash[:line] = line
|
|
hash[:inherits] = statement.parent_class if statement.parent_class
|
|
hash[:docstring] = PuppetStrings::Json.docstring_to_hash(docstring)
|
|
defaults = Hash[*parameters.select{ |p| !p[1].nil? }.flatten]
|
|
hash[:defaults] = defaults unless defaults.empty?
|
|
hash[:source] = source unless source && source.empty?
|
|
hash
|
|
end
|
|
end
|