93 lines
2.9 KiB
Ruby
93 lines
2.9 KiB
Ruby
require 'puppet-strings/yard/code_objects/group'
|
|
|
|
# Implements the group for Puppet providers.
|
|
class PuppetStrings::Yard::CodeObjects::Providers < PuppetStrings::Yard::CodeObjects::Group
|
|
# Gets the singleton instance of the group.
|
|
# @param [String] type The resource type name for the provider.
|
|
# @return Returns the singleton instance of the group.
|
|
def self.instance(type)
|
|
super("puppet_providers_#{type}".intern)
|
|
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)
|
|
'Providers'
|
|
end
|
|
end
|
|
|
|
# Implements the Puppet provider code object.
|
|
class PuppetStrings::Yard::CodeObjects::Provider < PuppetStrings::Yard::CodeObjects::Base
|
|
attr_reader :type_name, :confines, :features, :defaults, :commands
|
|
|
|
# Initializes a Puppet provider code object.
|
|
# @param [String] type_name The resource type name for the provider.
|
|
# @param [String] name The name of the provider.s
|
|
# @return [void]
|
|
def initialize(type_name, name)
|
|
@type_name = type_name
|
|
super(PuppetStrings::Yard::CodeObjects::Providers.instance(type_name), name)
|
|
end
|
|
|
|
# Gets the type of the code object.
|
|
# @return Returns the type of the code object.
|
|
def type
|
|
:puppet_provider
|
|
end
|
|
|
|
# Adds a confine to the provider.
|
|
# @param [String] key The confine's key.
|
|
# @param [String] value The confine's value.
|
|
# @return [void]
|
|
def add_confine(key, value)
|
|
return unless key && value
|
|
@confines ||= {}
|
|
@confines[key] = value
|
|
end
|
|
|
|
# Adds a feature to the provider.
|
|
# @param [String] feature The feature to add to the provider.
|
|
# @return [void]
|
|
def add_feature(feature)
|
|
return unless feature
|
|
@features ||= []
|
|
@features << feature
|
|
end
|
|
|
|
# Adds a default to the provider.
|
|
# @param [Array] constraints List of related key-pair values for the default.
|
|
# @return [void]
|
|
def add_default(constraints)
|
|
return unless constraints
|
|
@defaults ||= []
|
|
@defaults << constraints
|
|
end
|
|
|
|
# Adds a command to the provider.
|
|
# @param [String] key The command's key.
|
|
# @param [String] value The command's value.
|
|
# @return [void]
|
|
def add_command(key, value)
|
|
return unless key && value
|
|
@commands ||= {}
|
|
@commands[key] = value
|
|
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[:type_name] = type_name
|
|
hash[:file] = file
|
|
hash[:line] = line
|
|
hash[:docstring] = PuppetStrings::Json.docstring_to_hash(docstring)
|
|
hash[:confines] = confines if confines && !confines.empty?
|
|
hash[:features] = features if features && !features.empty?
|
|
hash[:defaults] = defaults if defaults && !defaults.empty?
|
|
hash[:commands] = commands if commands && !commands.empty?
|
|
hash
|
|
end
|
|
end
|