Merge pull request #26 from hkenney/issue/master/PDOC-27_3x_functions_should_accept_one_or_more_arguments

(PDOC-27) Don't require options for 3x functions
This commit is contained in:
Henrik Lindberg 2015-02-17 17:37:47 -08:00
commit 6f7a983dc7
4 changed files with 28 additions and 12 deletions

View File

@ -10,11 +10,11 @@ puppetversion = ENV['PUPPET_VERSION']
if puppetversion
gem 'puppet', puppetversion
else
gem 'puppet', '~> 3.6.2'
gem 'puppet'
end
group :test do
gem 'rspec'
gem "rspec", "~> 2.14.0", :require => false
gem 'mocha'
gem 'puppetlabs_spec_helper'
gem 'rspec-html-matchers'

View File

@ -66,13 +66,20 @@ class PuppetX::PuppetLabs::Strings::YARD::Handlers::Puppet3xFunctionHandler < YA
name = process_element(name)
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)}
# 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, Hash[opts]]
[name, options]
end
# Sometimes the YARD parser returns Heredoc strings that start with `<-`

View File

@ -21,18 +21,18 @@ describe PuppetX::PuppetLabs::Strings::Pops do
let(:manifest_default) {"#hello world\nclass foo($bar = 3) { }"}
let(:transformer) {PuppetX::PuppetLabs::Strings::Pops::YARDTransformer.new}
describe "transform method" do
it "should perform the correct transformation with parameter defaults" do
describe "transform method" do
it "should perform the correct transformation with parameter defaults" do
model = parser.parse_string(manifest_default).current.definitions.first
statements = transformer.transform(model)
expect(statements.parameters[0][0].class).to be(PuppetX::PuppetLabs::Strings::Pops::YARDStatement)
end
end
it "should perform the correct transofmration without parameter defaults" do
it "should perform the correct transofmration without parameter defaults" do
model = parser.parse_string(manifest).current.definitions.first
statements = transformer.transform(model)
expect(statements.parameters[0][1].class).to be(NilClass)
end
end
end
end
end

View File

@ -51,4 +51,13 @@ describe PuppetX::PuppetLabs::Strings::YARD::Handlers::Puppet3xFunctionHandler d
expect(the_method).to document_a(:type => :method, :docstring => "")
expect(the_namespace).to document_a(:type => :puppetnamespace)
end
it "should process documentation if only one option is passed to newfunction" do
parse <<-RUBY
newfunction(:the_functiion) do |args|
end
RUBY
expect(the_namespace).to document_a(:type => :puppetnamespace)
end
end