(PDOC-3) Add method headers for new libraries

Add some comments for the new methods that have been introduced
to ensure that the code is readable and well documented.
This commit is contained in:
Hailee Kenney 2014-09-19 14:44:22 -07:00
parent 58fef9e8f6
commit 94ff0a4445
4 changed files with 35 additions and 8 deletions

View File

@ -43,6 +43,7 @@ Puppet::Face.define(:strings, '0.0.1') do
when_invoked do |*args| when_invoked do |*args|
check_required_features check_required_features
require 'puppetx/puppetlabs/strings/yard/plugin' require 'puppetx/puppetlabs/strings/yard/plugin'
opts = args.pop opts = args.pop
module_names = args module_names = args

View File

@ -2,6 +2,7 @@ require 'puppetx/puppetlabs/strings'
module Puppetx::PuppetLabs::Strings::Actions module Puppetx::PuppetLabs::Strings::Actions
# Holds the name of a module and the file path to its YARD index
ModuleIndex = Struct.new(:name, :index_path) ModuleIndex = Struct.new(:name, :index_path)
# A list of globs that generates the default list of module files from which # A list of globs that generates the default list of module files from which
@ -11,6 +12,7 @@ module Puppetx::PuppetLabs::Strings::Actions
# default file list that YARD uses. Consider an upstream PR for this. # default file list that YARD uses. Consider an upstream PR for this.
MODULE_SOURCEFILES = ['manifests/**/*.pp', 'lib/**/*.rb'] MODULE_SOURCEFILES = ['manifests/**/*.pp', 'lib/**/*.rb']
# Ensures that the user has the needed features to use puppet strings
def check_required_features def check_required_features
unless Puppet.features.yard? unless Puppet.features.yard?
raise RuntimeError, "The 'yard' gem must be installed in order to use this face." raise RuntimeError, "The 'yard' gem must be installed in order to use this face."
@ -33,11 +35,15 @@ module Puppetx::PuppetLabs::Strings::Actions
yard_args yard_args
end end
# Builds doc indices (.yardoc directories) for modules.
# Currently lacks the fine-grained control over where these
# indices are created and just dumps them in the module roots.
#
# @return [Array<Module>] the modules to be documented
#
# @param [Array<String>] a list of the module source files
def index_documentation_for_modules(module_names) def index_documentation_for_modules(module_names)
check_required_features # NOTE: The return value of the `module` Face seems to have changed in
require 'puppetx/puppetlabs/strings/yard/plugin'
# NOTE: The retrun value of the `module` Face seems to have changed in
# 3.6.x. This part of the code will blow up if run under an earlier # 3.6.x. This part of the code will blow up if run under an earlier
# version of Puppet. # version of Puppet.
modules = Puppet::Face[:module, :current].list modules = Puppet::Face[:module, :current].list
@ -55,32 +61,45 @@ module Puppetx::PuppetLabs::Strings::Actions
Dir.chdir(m.path) do Dir.chdir(m.path) do
YARD::CLI::Yardoc.run(*yard_args) YARD::CLI::Yardoc.run(*yard_args)
# Cear the global Registry so that objects from one module don't # Clear the global Registry so that objects from one module don't
# bleed into the next. # bleed into the next.
YARD::Registry.clear YARD::Registry.clear
end end
end end
end end
# Extracts the needed information of the modules we're documenting
#
# @return [Array<ModuleIndex>] An array of representation of the modules
# to produce documentation for. Each ModuleIndex contains the module name
# and the path to its YARD index
#
# @param [Array<String>] a list of the module source files
def generate_module_tuples(module_list) def generate_module_tuples(module_list)
module_list.map do |mod| module_list.map do |mod|
name = (mod.forge_name || mod.name).gsub('/', '-') name = (mod.forge_name || mod.name).gsub('/', '-')
yard_index = File.join(mod.path, '.yardoc') yard_index = File.join(mod.path, '.yardoc')
#[name, yard_index]
ModuleIndex.new(name, yard_index) ModuleIndex.new(name, yard_index)
end end
end end
# Hands off the needed information to YARD so it may
# serve the documentation
#
# @param [Array<String>] a list of all the arguments to pass to YARD
def serve_documentation(*yard_args) def serve_documentation(*yard_args)
merge_puppet_args!(yard_args) merge_puppet_args!(yard_args)
# Hand off to YARD for further processing.
YARD::CLI::Server.run(*yard_args) YARD::CLI::Server.run(*yard_args)
end end
# Hands off the needed information to YARD so it may
# generate the documentation
#
# @param [Array<String>] a list of all the arguments to pass to YARD
def generate_documentation(*yard_args) def generate_documentation(*yard_args)
merge_puppet_args!(yard_args) merge_puppet_args!(yard_args)
# Hand off to YARD for further processing.
YARD::CLI::Yardoc.run(*yard_args) YARD::CLI::Yardoc.run(*yard_args)
end end
end end

View File

@ -3,11 +3,17 @@ require 'spec_helper'
module StringsSpec module StringsSpec
module Parsing module Parsing
# Cleans up the Registry and gives YARD some source code
# to generate documentation for
def parse(string, parser = :ruby) def parse(string, parser = :ruby)
Registry.clear Registry.clear
YARD::Parser::SourceParser.parse_string(string, parser) YARD::Parser::SourceParser.parse_string(string, parser)
end end
# A custom matcher that allows us to compare aspects of a
# Code Objects to the specified values. This gives us a
# simplified way to ensure that the Code Object added to the
# Registry is what we expect when testing handlers
RSpec::Matchers.define :document_a do |arguments| RSpec::Matchers.define :document_a do |arguments|
match do |actual| match do |actual|
compare_values(actual).empty? compare_values(actual).empty?

View File

@ -102,3 +102,4 @@ describe Puppet::Face do
File.read(File.join(dir, modulename, 'doc', file)) File.read(File.join(dir, modulename, 'doc', file))
end end
end end