puppet-strings 2.1.0 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +18 -3
  3. data/Gemfile +3 -2
  4. data/Rakefile +5 -0
  5. data/lib/puppet-strings.rb +10 -1
  6. data/lib/puppet-strings/describe.rb +68 -0
  7. data/lib/puppet-strings/json.rb +0 -38
  8. data/lib/puppet-strings/markdown/base.rb +18 -16
  9. data/lib/puppet-strings/markdown/templates/function.erb +26 -0
  10. data/lib/puppet-strings/markdown/templates/resource_type.erb +4 -0
  11. data/lib/puppet-strings/tasks/generate.rb +7 -1
  12. data/lib/puppet-strings/version.rb +1 -1
  13. data/lib/puppet-strings/yard/code_objects/class.rb +1 -1
  14. data/lib/puppet-strings/yard/code_objects/defined_type.rb +1 -1
  15. data/lib/puppet-strings/yard/code_objects/function.rb +3 -3
  16. data/lib/puppet-strings/yard/code_objects/plan.rb +1 -1
  17. data/lib/puppet-strings/yard/code_objects/provider.rb +1 -1
  18. data/lib/puppet-strings/yard/code_objects/type.rb +3 -2
  19. data/lib/puppet-strings/yard/handlers.rb +1 -0
  20. data/lib/puppet-strings/yard/handlers/ruby/base.rb +11 -0
  21. data/lib/puppet-strings/yard/handlers/ruby/function_handler.rb +1 -9
  22. data/lib/puppet-strings/yard/handlers/ruby/provider_handler.rb +1 -9
  23. data/lib/puppet-strings/yard/handlers/ruby/rsapi_handler.rb +1 -1
  24. data/lib/puppet-strings/yard/handlers/ruby/type_base.rb +130 -0
  25. data/lib/puppet-strings/yard/handlers/ruby/type_extras_handler.rb +56 -0
  26. data/lib/puppet-strings/yard/handlers/ruby/type_handler.rb +3 -115
  27. data/lib/puppet-strings/yard/parsers/json/parser.rb +3 -1
  28. data/lib/puppet-strings/yard/tags/overload_tag.rb +1 -1
  29. data/lib/puppet-strings/yard/util.rb +48 -0
  30. data/lib/puppet/face/strings.rb +66 -1
  31. data/spec/fixtures/unit/markdown/output.md +64 -0
  32. data/spec/fixtures/unit/markdown/output_with_plan.md +64 -0
  33. data/spec/spec_helper.rb +1 -0
  34. data/spec/unit/puppet-strings/describe_spec.rb +141 -0
  35. data/spec/unit/puppet-strings/json_spec.rb +65 -11
  36. data/spec/unit/puppet-strings/markdown_spec.rb +13 -0
  37. data/spec/unit/puppet-strings/yard/handlers/json/task_handler_spec.rb +4 -12
  38. data/spec/unit/puppet-strings/yard/handlers/ruby/function_handler_spec.rb +1 -1
  39. data/spec/unit/puppet-strings/yard/handlers/ruby/rsapi_handler_spec.rb +21 -0
  40. data/spec/unit/puppet-strings/yard/handlers/ruby/type_handler_spec.rb +26 -0
  41. data/spec/unit/puppet-strings/yard/parsers/json/parser_spec.rb +5 -3
  42. metadata +7 -6
  43. data/spec/fixtures/unit/json/output.json +0 -660
  44. data/spec/fixtures/unit/json/output_with_plan.json +0 -697
  45. data/spec/fixtures/unit/json/output_without_puppet_function.json +0 -480
@@ -202,28 +202,82 @@ path this type will autorequire that file.
202
202
  SOURCE
203
203
  end
204
204
 
205
- let(:filename) do
206
- if TEST_PUPPET_PLANS
207
- 'output_with_plan.json'
208
- else
209
- TEST_PUPPET_FUNCTIONS ? 'output.json' : 'output_without_puppet_function.json'
205
+ RSpec.shared_examples "correct JSON" do
206
+ it 'should include data for Puppet Classes' do
207
+ puppet_class_json = YARD::Registry.all(:puppet_class).sort_by!(&:name).map!(&:to_hash).to_json
208
+
209
+ expect(json_output).to include_json(puppet_class_json)
210
+ end
211
+
212
+ it 'should include data for Puppet Defined Types' do
213
+ defined_types_json = YARD::Registry.all(:puppet_defined_type).sort_by!(&:name).map!(&:to_hash).to_json
214
+
215
+ expect(json_output).to include_json(defined_types_json)
216
+ end
217
+
218
+ it 'should include data for Puppet Resouce Types' do
219
+ resource_types_json = YARD::Registry.all(:puppet_type).sort_by!(&:name).map!(&:to_hash).to_json
220
+
221
+ expect(json_output).to include_json(resource_types_json)
222
+ end
223
+
224
+ it 'should include data for Puppet Providers' do
225
+ providers_json = YARD::Registry.all(:puppet_provider).sort_by!(&:name).map!(&:to_hash).to_json
226
+
227
+ expect(json_output).to include_json(providers_json)
228
+ end
229
+
230
+ it 'should include data for Puppet Functions', if: TEST_PUPPET_FUNCTIONS do
231
+ puppet_functions_json = YARD::Registry.all(:puppet_function).sort_by!(&:name).map!(&:to_hash).to_json
232
+
233
+ expect(json_output).to include_json(puppet_functions_json)
234
+ end
235
+
236
+ it 'should include data for Puppet Tasks' do
237
+ puppet_tasks_json = YARD::Registry.all(:puppet_task).sort_by!(&:name).map!(&:to_hash).to_json
238
+
239
+ expect(json_output).to include_json(puppet_tasks_json)
240
+ end
241
+
242
+ it 'should include data for Puppet Plans', if: TEST_PUPPET_PLANS do
243
+ puppet_plans_json = YARD::Registry.all(:puppet_plan).sort_by!(&:name).map!(&:to_hash).to_json
244
+
245
+ expect(json_output).to include_json(puppet_plans_json)
210
246
  end
211
247
  end
212
- let(:baseline_path) { File.join(File.dirname(__FILE__), "../../fixtures/unit/json/#{filename}") }
213
- let(:baseline) { File.read(baseline_path) }
214
248
 
215
249
  describe 'rendering JSON to a file' do
216
- it 'should output the expected JSON content' do
250
+ let(:json_output) do
251
+ json_output = nil
252
+
217
253
  Tempfile.open('json') do |file|
218
254
  PuppetStrings::Json.render(file.path)
219
- expect(File.read(file.path)).to eq(baseline)
255
+
256
+ json_output = File.read(file.path)
220
257
  end
258
+
259
+ json_output
221
260
  end
261
+
262
+ include_examples "correct JSON"
222
263
  end
223
264
 
224
265
  describe 'rendering JSON to stdout' do
225
- it 'should output the expected JSON content' do
226
- expect{ PuppetStrings::Json.render(nil) }.to output(baseline).to_stdout
266
+ let(:json_output) { @json_output }
267
+
268
+ before(:each) do
269
+ output = StringIO.new
270
+
271
+ old_stdout = $stdout
272
+ $stdout = output
273
+
274
+ PuppetStrings::Json.render(nil)
275
+
276
+ $stdout = old_stdout
277
+
278
+ @json_output = output.string
227
279
  end
280
+
281
+ include_examples "correct JSON"
228
282
  end
229
283
  end
@@ -108,12 +108,20 @@ SOURCE
108
108
  # @option param3 [Array] :param3opt Something about this option
109
109
  # @raise SomeError this is some error
110
110
  # @return [Undef] Returns nothing.
111
+ # @example Test
112
+ # $result = func(1, 2)
111
113
  function func(Integer $param1, $param2, String $param3 = hi) {
112
114
  }
113
115
  SOURCE
114
116
 
115
117
  YARD::Parser::SourceParser.parse_string(<<-SOURCE, :ruby)
116
118
  # An example 4.x function.
119
+ #
120
+ # @example Calling the function
121
+ # $result = func4x(1, 'foo')
122
+ #
123
+ # @example Calling the function with all args
124
+ # $result = func4x(1, 'foo', ['bar'])
117
125
  Puppet::Functions.create_function(:func4x) do
118
126
  # An overview for the first overload.
119
127
  # @raise SomeError this is some error
@@ -123,6 +131,9 @@ Puppet::Functions.create_function(:func4x) do
123
131
  # @option param2 [String] :option2 another option
124
132
  # @param param3 The third parameter.
125
133
  # @return Returns nothing.
134
+ # @example Calling the function foo
135
+ # $result = func4x(1, 'foooo')
136
+ #
126
137
  dispatch :foo do
127
138
  param 'Integer', :param1
128
139
  param 'Any', :param2
@@ -134,6 +145,8 @@ Puppet::Functions.create_function(:func4x) do
134
145
  # @param param The first parameter.
135
146
  # @param block The block parameter.
136
147
  # @return Returns a string.
148
+ # @example Calling the function bar
149
+ # $result = func4x(1, 'bar', ['foo'])
137
150
  dispatch :other do
138
151
  param 'Boolean', :param
139
152
  block_param
@@ -7,15 +7,7 @@ describe PuppetStrings::Yard::Handlers::JSON::TaskHandler do
7
7
  YARD::Registry.all(:puppet_task)
8
8
  }
9
9
 
10
- describe 'parsing source without a task definition' do
11
- let(:source) { 'notice hi' }
12
-
13
- it 'no defined types should be in the registry' do
14
- expect(subject.empty?).to eq(true)
15
- end
16
- end
17
-
18
- describe 'parsing source with a syntax error' do
10
+ describe 'parsing task metadata with a syntax error' do
19
11
  let(:source) { <<-SOURCE
20
12
  {
21
13
  "input_method": "stdin",
@@ -35,7 +27,7 @@ SOURCE
35
27
  end
36
28
  end
37
29
 
38
- describe 'parsing a defined type with a missing docstring' do
30
+ describe 'parsing task metadata with a missing description' do
39
31
  let(:source) { <<-SOURCE
40
32
  {
41
33
  "input_method": "stdin",
@@ -66,7 +58,7 @@ SOURCE
66
58
  end
67
59
  end
68
60
 
69
- describe 'parsing a defined type with a docstring' do
61
+ describe 'parsing task metadata with a description' do
70
62
  let(:source) { <<-SOURCE
71
63
  {
72
64
  "description": "Allows you to backup your database to local file.",
@@ -102,7 +94,7 @@ SOURCE
102
94
  end
103
95
  end
104
96
 
105
- describe 'parsing a Task with a missing parameter description' do
97
+ describe 'parsing task metadata with a missing parameter description' do
106
98
  let(:source) { <<-SOURCE
107
99
  {
108
100
  "description": "Allows you to backup your database to local file.",
@@ -289,7 +289,7 @@ SOURCE
289
289
  }
290
290
 
291
291
  it 'does not throw an error with no @return' do
292
- expect { subject }.not_to raise_error NoMethodError
292
+ expect { subject }.not_to raise_error
293
293
  end
294
294
 
295
295
  it 'contains a return data type' do
@@ -211,4 +211,25 @@ SOURCE
211
211
  end
212
212
  end
213
213
  end
214
+
215
+ describe 'parsing a type with title_patterns' do
216
+ let(:source) { <<-SOURCE
217
+ Puppet::ResourceApi.register_type(
218
+ name: 'database',
219
+ docs: 'An example database server resource type.',
220
+ title_patterns: [
221
+ {
222
+ pattern: %r{(?<name>.*)},
223
+ desc: 'Generic title match',
224
+ }
225
+ ]
226
+ )
227
+ SOURCE
228
+ }
229
+
230
+ it 'should not emit a warning' do
231
+ expect{ subject }.not_to output(/\[warn\].*unexpected construct regexp_literal/).to_stdout_from_any_process
232
+ end
233
+ end
234
+
214
235
  end
@@ -72,6 +72,32 @@ SOURCE
72
72
  end
73
73
  end
74
74
 
75
+ describe 'parsing a type with a param with arguments' do
76
+ let(:source) { <<-SOURCE
77
+ Puppet::Type.newtype(:database) do
78
+ feature :encryption, 'The provider supports encryption.', methods: [:encrypt]
79
+
80
+ newparam(:encryption_key, :parent => Puppet::Parameter::Boolean, required_features: :encryption) do
81
+ desc 'The encryption key to use.'
82
+ defaultto false
83
+ end
84
+ end
85
+ SOURCE
86
+ }
87
+
88
+ it 'should correctly detect the required_feature' do
89
+ expect(subject.size).to eq(1)
90
+ object = subject.first
91
+ expect(object.parameters[0].required_features).to eq('encryption')
92
+ end
93
+
94
+ it 'should correctly detect a boolean parent' do
95
+ expect(subject.size).to eq(1)
96
+ object = subject.first
97
+ expect(object.parameters[0].default).to eq('false')
98
+ end
99
+ end
100
+
75
101
  describe 'parsing a type definition' do
76
102
  let(:source) { <<-SOURCE
77
103
  # @!puppet.type.param [value1, value2] dynamic_param Documentation for a dynamic parameter.
@@ -6,7 +6,7 @@ describe PuppetStrings::Yard::Parsers::JSON::Parser do
6
6
  let(:file) { 'test.json' }
7
7
 
8
8
  describe 'initialization of the parser' do
9
- let(:source) { 'notice hi' }
9
+ let(:source) { '{}' }
10
10
 
11
11
  it 'should store the original source' do
12
12
  expect(subject.source).to eq(source)
@@ -18,6 +18,7 @@ describe PuppetStrings::Yard::Parsers::JSON::Parser do
18
18
 
19
19
  it 'should have no relevant statements' do
20
20
  subject.parse
21
+
21
22
  expect(subject.enumerator.empty?).to be_truthy
22
23
  end
23
24
  end
@@ -34,7 +35,7 @@ SOURCE
34
35
  end
35
36
 
36
37
 
37
- describe 'parsing puppet functions with return type in defintion', if: TEST_FUNCTION_RETURN_TYPE do
38
+ describe 'parsing valid task metadata JSON' do
38
39
  let(:source) { <<SOURCE
39
40
  {
40
41
  "description": "Allows you to backup your database to local file.",
@@ -60,8 +61,9 @@ SOURCE
60
61
  }
61
62
  SOURCE
62
63
  }
63
- it 'should parse the puppet function statement' do
64
+ it 'should parse the JSON and extract a TaskStatement' do
64
65
  subject.parse
66
+
65
67
  expect(subject.enumerator.size).to eq(1)
66
68
  statement = subject.enumerator.first
67
69
  expect(statement).to be_instance_of(PuppetStrings::Yard::Parsers::JSON::TaskStatement)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppet-strings
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Puppet Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-26 00:00:00.000000000 Z
11
+ date: 2019-04-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: yard
@@ -60,6 +60,7 @@ files:
60
60
  - Rakefile
61
61
  - codecov.yml
62
62
  - lib/puppet-strings.rb
63
+ - lib/puppet-strings/describe.rb
63
64
  - lib/puppet-strings/json.rb
64
65
  - lib/puppet-strings/markdown.rb
65
66
  - lib/puppet-strings/markdown/base.rb
@@ -110,6 +111,8 @@ files:
110
111
  - lib/puppet-strings/yard/handlers/ruby/function_handler.rb
111
112
  - lib/puppet-strings/yard/handlers/ruby/provider_handler.rb
112
113
  - lib/puppet-strings/yard/handlers/ruby/rsapi_handler.rb
114
+ - lib/puppet-strings/yard/handlers/ruby/type_base.rb
115
+ - lib/puppet-strings/yard/handlers/ruby/type_extras_handler.rb
113
116
  - lib/puppet-strings/yard/handlers/ruby/type_handler.rb
114
117
  - lib/puppet-strings/yard/parsers.rb
115
118
  - lib/puppet-strings/yard/parsers/json/parser.rb
@@ -208,13 +211,11 @@ files:
208
211
  - spec/fixtures/acceptance/modules/test/manifests/init.pp
209
212
  - spec/fixtures/acceptance/modules/test/manifests/triple_nested_classes.pp
210
213
  - spec/fixtures/acceptance/modules/test/metadata.json
211
- - spec/fixtures/unit/json/output.json
212
- - spec/fixtures/unit/json/output_with_plan.json
213
- - spec/fixtures/unit/json/output_without_puppet_function.json
214
214
  - spec/fixtures/unit/markdown/output.md
215
215
  - spec/fixtures/unit/markdown/output_with_plan.md
216
216
  - spec/spec_helper.rb
217
217
  - spec/spec_helper_acceptance.rb
218
+ - spec/unit/puppet-strings/describe_spec.rb
218
219
  - spec/unit/puppet-strings/json_spec.rb
219
220
  - spec/unit/puppet-strings/markdown/base_spec.rb
220
221
  - spec/unit/puppet-strings/markdown_spec.rb
@@ -252,7 +253,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
252
253
  requirements:
253
254
  - puppet, >= 4.0.0
254
255
  rubyforge_project:
255
- rubygems_version: 2.7.6
256
+ rubygems_version: 2.5.1
256
257
  signing_key:
257
258
  specification_version: 4
258
259
  summary: Puppet documentation via YARD
@@ -1,660 +0,0 @@
1
- {
2
- "puppet_classes": [
3
- {
4
- "name": "klass",
5
- "file": "(stdin)",
6
- "line": 7,
7
- "inherits": "foo::bar",
8
- "docstring": {
9
- "text": "A simple class.",
10
- "tags": [
11
- {
12
- "tag_name": "todo",
13
- "text": "Do a thing"
14
- },
15
- {
16
- "tag_name": "note",
17
- "text": "Some note"
18
- },
19
- {
20
- "tag_name": "param",
21
- "text": "First param.",
22
- "types": [
23
- "Integer"
24
- ],
25
- "name": "param1"
26
- },
27
- {
28
- "tag_name": "param",
29
- "text": "Second param.",
30
- "types": [
31
- "Any"
32
- ],
33
- "name": "param2"
34
- },
35
- {
36
- "tag_name": "param",
37
- "text": "Third param.",
38
- "types": [
39
- "String"
40
- ],
41
- "name": "param3"
42
- }
43
- ]
44
- },
45
- "defaults": {
46
- "param3": "hi"
47
- },
48
- "source": "class klass(Integer $param1, $param2, String $param3 = hi) inherits foo::bar {\n}"
49
- }
50
- ],
51
- "defined_types": [
52
- {
53
- "name": "dt",
54
- "file": "(stdin)",
55
- "line": 14,
56
- "docstring": {
57
- "text": "A simple defined type.",
58
- "tags": [
59
- {
60
- "tag_name": "param",
61
- "text": "First param.",
62
- "types": [
63
- "Integer"
64
- ],
65
- "name": "param1"
66
- },
67
- {
68
- "tag_name": "param",
69
- "text": "Second param.",
70
- "types": [
71
- "Any"
72
- ],
73
- "name": "param2"
74
- },
75
- {
76
- "tag_name": "param",
77
- "text": "Third param.",
78
- "types": [
79
- "String"
80
- ],
81
- "name": "param3"
82
- }
83
- ]
84
- },
85
- "defaults": {
86
- "param3": "hi"
87
- },
88
- "source": "define dt(Integer $param1, $param2, String $param3 = hi) {\n}"
89
- }
90
- ],
91
- "resource_types": [
92
- {
93
- "name": "apt_key",
94
- "file": "(stdin)",
95
- "line": 92,
96
- "docstring": {
97
- "text": "This type provides Puppet with the capabilities to manage GPG keys needed\nby apt to perform package validation. Apt has it's own GPG keyring that can\nbe manipulated through the `apt-key` command.\n**Autorequires**:\nIf Puppet is given the location of a key file which looks like an absolute\npath this type will autorequire that file.",
98
- "tags": [
99
- {
100
- "tag_name": "summary",
101
- "text": "Example resource type using the new API."
102
- },
103
- {
104
- "tag_name": "raise",
105
- "text": "SomeError"
106
- },
107
- {
108
- "tag_name": "example",
109
- "text": "apt_key { '6F6B15509CF8E59E6E469F327F438280EF8D349F':\n source => 'http://apt.puppetlabs.com/pubkey.gpg'\n}",
110
- "name": "here's an example"
111
- }
112
- ]
113
- },
114
- "properties": [
115
- {
116
- "name": "ensure",
117
- "description": "Whether this apt key should be present or absent on the target system.",
118
- "data_type": "Enum[present, absent]"
119
- },
120
- {
121
- "name": "created",
122
- "description": "Date the key was created, in ISO format.",
123
- "data_type": "String"
124
- }
125
- ],
126
- "parameters": [
127
- {
128
- "name": "id",
129
- "description": "The ID of the key you want to manage.",
130
- "data_type": "Variant[Pattern[/A(0x)?[0-9a-fA-F]{8}Z/], Pattern[/A(0x)?[0-9a-fA-F]{16}Z/], Pattern[/A(0x)?[0-9a-fA-F]{40}Z/]]",
131
- "isnamevar": true
132
- }
133
- ]
134
- },
135
- {
136
- "name": "database",
137
- "file": "(stdin)",
138
- "line": 54,
139
- "docstring": {
140
- "text": "An example database server resource type."
141
- },
142
- "properties": [
143
- {
144
- "name": "ensure",
145
- "description": "What state the database should be in.",
146
- "values": [
147
- "present",
148
- "absent",
149
- "up",
150
- "down"
151
- ],
152
- "aliases": {
153
- "up": "present",
154
- "down": "absent"
155
- },
156
- "default": "up"
157
- },
158
- {
159
- "name": "file",
160
- "description": "The database file to use."
161
- },
162
- {
163
- "name": "log_level",
164
- "description": "The log level to use.",
165
- "values": [
166
- "debug",
167
- "warn",
168
- "error"
169
- ],
170
- "default": "warn"
171
- }
172
- ],
173
- "parameters": [
174
- {
175
- "name": "address",
176
- "description": "The database server name.",
177
- "isnamevar": true
178
- },
179
- {
180
- "name": "encryption_key",
181
- "description": "The encryption key to use."
182
- },
183
- {
184
- "name": "encrypt",
185
- "description": "Whether or not to encrypt the database.",
186
- "values": [
187
- "true",
188
- "false",
189
- "yes",
190
- "no"
191
- ],
192
- "default": "false"
193
- }
194
- ],
195
- "features": [
196
- {
197
- "name": "encryption",
198
- "description": "The provider supports encryption."
199
- }
200
- ]
201
- }
202
- ],
203
- "providers": [
204
- {
205
- "name": "linux",
206
- "type_name": "database",
207
- "file": "(stdin)",
208
- "line": 43,
209
- "docstring": {
210
- "text": "An example provider on Linux."
211
- },
212
- "confines": {
213
- "kernel": "Linux",
214
- "osfamily": "RedHat"
215
- },
216
- "features": [
217
- "implements_some_feature",
218
- "some_other_feature"
219
- ],
220
- "defaults": [
221
- [
222
- [
223
- "kernel",
224
- "Linux"
225
- ]
226
- ],
227
- [
228
- [
229
- "osfamily",
230
- "RedHat"
231
- ],
232
- [
233
- "operatingsystemmajrelease",
234
- "7"
235
- ]
236
- ]
237
- ],
238
- "commands": {
239
- "foo": "/usr/bin/foo"
240
- }
241
- }
242
- ],
243
- "puppet_functions": [
244
- {
245
- "name": "func",
246
- "file": "(stdin)",
247
- "line": 6,
248
- "type": "puppet",
249
- "signatures": [
250
- {
251
- "signature": "func(Integer $param1, Any $param2, String $param3 = hi)",
252
- "docstring": {
253
- "text": "A simple function.",
254
- "tags": [
255
- {
256
- "tag_name": "param",
257
- "text": "First param.",
258
- "types": [
259
- "Integer"
260
- ],
261
- "name": "param1"
262
- },
263
- {
264
- "tag_name": "param",
265
- "text": "Second param.",
266
- "types": [
267
- "Any"
268
- ],
269
- "name": "param2"
270
- },
271
- {
272
- "tag_name": "param",
273
- "text": "Third param.",
274
- "types": [
275
- "String"
276
- ],
277
- "name": "param3"
278
- },
279
- {
280
- "tag_name": "return",
281
- "text": "Returns nothing.",
282
- "types": [
283
- "Undef"
284
- ]
285
- }
286
- ]
287
- }
288
- }
289
- ],
290
- "docstring": {
291
- "text": "A simple function.",
292
- "tags": [
293
- {
294
- "tag_name": "param",
295
- "text": "First param.",
296
- "types": [
297
- "Integer"
298
- ],
299
- "name": "param1"
300
- },
301
- {
302
- "tag_name": "param",
303
- "text": "Second param.",
304
- "types": [
305
- "Any"
306
- ],
307
- "name": "param2"
308
- },
309
- {
310
- "tag_name": "param",
311
- "text": "Third param.",
312
- "types": [
313
- "String"
314
- ],
315
- "name": "param3"
316
- },
317
- {
318
- "tag_name": "return",
319
- "text": "Returns nothing.",
320
- "types": [
321
- "Undef"
322
- ]
323
- }
324
- ]
325
- },
326
- "defaults": {
327
- "param3": "hi"
328
- },
329
- "source": "function func(Integer $param1, $param2, String $param3 = hi) {\n}"
330
- },
331
- {
332
- "name": "func3x",
333
- "file": "(stdin)",
334
- "line": 1,
335
- "type": "ruby3x",
336
- "signatures": [
337
- {
338
- "signature": "func3x(String $first, Any $second)",
339
- "docstring": {
340
- "text": "An example 3.x function.",
341
- "tags": [
342
- {
343
- "tag_name": "param",
344
- "text": "The first parameter.",
345
- "types": [
346
- "String"
347
- ],
348
- "name": "first"
349
- },
350
- {
351
- "tag_name": "param",
352
- "text": "The second parameter.",
353
- "types": [
354
- "Any"
355
- ],
356
- "name": "second"
357
- },
358
- {
359
- "tag_name": "return",
360
- "text": "Returns nothing.",
361
- "types": [
362
- "Undef"
363
- ]
364
- }
365
- ]
366
- }
367
- }
368
- ],
369
- "docstring": {
370
- "text": "An example 3.x function.",
371
- "tags": [
372
- {
373
- "tag_name": "param",
374
- "text": "The first parameter.",
375
- "types": [
376
- "String"
377
- ],
378
- "name": "first"
379
- },
380
- {
381
- "tag_name": "param",
382
- "text": "The second parameter.",
383
- "types": [
384
- "Any"
385
- ],
386
- "name": "second"
387
- },
388
- {
389
- "tag_name": "return",
390
- "text": "Returns nothing.",
391
- "types": [
392
- "Undef"
393
- ]
394
- }
395
- ]
396
- },
397
- "source": "Puppet::Parser::Functions.newfunction(:func3x, doc: <<-DOC\nAn example 3.x function.\n@param [String] first The first parameter.\n@param second The second parameter.\n@return [Undef] Returns nothing.\nDOC\n) do |*args|\nend"
398
- },
399
- {
400
- "name": "func4x",
401
- "file": "(stdin)",
402
- "line": 11,
403
- "type": "ruby4x",
404
- "signatures": [
405
- {
406
- "signature": "func4x(Integer $param1, Any $param2, Optional[Array[String]] $param3)",
407
- "docstring": {
408
- "text": "The first overload.",
409
- "tags": [
410
- {
411
- "tag_name": "param",
412
- "text": "The first parameter.",
413
- "types": [
414
- "Integer"
415
- ],
416
- "name": "param1"
417
- },
418
- {
419
- "tag_name": "param",
420
- "text": "The second parameter.",
421
- "types": [
422
- "Any"
423
- ],
424
- "name": "param2"
425
- },
426
- {
427
- "tag_name": "param",
428
- "text": "The third parameter.",
429
- "types": [
430
- "Optional[Array[String]]"
431
- ],
432
- "name": "param3"
433
- },
434
- {
435
- "tag_name": "return",
436
- "text": "Returns nothing.",
437
- "types": [
438
- "Undef"
439
- ]
440
- }
441
- ]
442
- }
443
- },
444
- {
445
- "signature": "func4x(Boolean $param, Callable &$block)",
446
- "docstring": {
447
- "text": "",
448
- "tags": [
449
- {
450
- "tag_name": "param",
451
- "text": "The first parameter.",
452
- "types": [
453
- "Boolean"
454
- ],
455
- "name": "param"
456
- },
457
- {
458
- "tag_name": "param",
459
- "text": "The block parameter.",
460
- "types": [
461
- "Callable"
462
- ],
463
- "name": "&block"
464
- },
465
- {
466
- "tag_name": "return",
467
- "text": "Returns a string.",
468
- "types": [
469
- "String"
470
- ]
471
- }
472
- ]
473
- }
474
- }
475
- ],
476
- "docstring": {
477
- "text": "An example 4.x function.",
478
- "tags": [
479
- {
480
- "tag_name": "overload",
481
- "signature": "func4x(Integer $param1, Any $param2, Optional[Array[String]] $param3)",
482
- "docstring": {
483
- "text": "The first overload.",
484
- "tags": [
485
- {
486
- "tag_name": "param",
487
- "text": "The first parameter.",
488
- "types": [
489
- "Integer"
490
- ],
491
- "name": "param1"
492
- },
493
- {
494
- "tag_name": "param",
495
- "text": "The second parameter.",
496
- "types": [
497
- "Any"
498
- ],
499
- "name": "param2"
500
- },
501
- {
502
- "tag_name": "param",
503
- "text": "The third parameter.",
504
- "types": [
505
- "Optional[Array[String]]"
506
- ],
507
- "name": "param3"
508
- },
509
- {
510
- "tag_name": "return",
511
- "text": "Returns nothing.",
512
- "types": [
513
- "Undef"
514
- ]
515
- }
516
- ]
517
- },
518
- "name": "func4x"
519
- },
520
- {
521
- "tag_name": "overload",
522
- "signature": "func4x(Boolean $param, Callable &$block)",
523
- "docstring": {
524
- "text": "",
525
- "tags": [
526
- {
527
- "tag_name": "param",
528
- "text": "The first parameter.",
529
- "types": [
530
- "Boolean"
531
- ],
532
- "name": "param"
533
- },
534
- {
535
- "tag_name": "param",
536
- "text": "The block parameter.",
537
- "types": [
538
- "Callable"
539
- ],
540
- "name": "&block"
541
- },
542
- {
543
- "tag_name": "return",
544
- "text": "Returns a string.",
545
- "types": [
546
- "String"
547
- ]
548
- }
549
- ]
550
- },
551
- "name": "func4x"
552
- }
553
- ]
554
- },
555
- "source": "Puppet::Functions.create_function(:func4x) do\n # The first overload.\n # @param param1 The first parameter.\n # @param param2 The second parameter.\n # @param param3 The third parameter.\n # @return Returns nothing.\n dispatch :foo do\n param 'Integer', :param1\n param 'Any', :param2\n optional_param 'Array[String]', :param3\n return_type 'Undef'\n end\n\n # @param param The first parameter.\n # @param block The block parameter.\n # @return Returns a string.\n dispatch :other do\n param 'Boolean', :param\n block_param\n return_type 'String'\n end\nend"
556
- },
557
- {
558
- "name": "func4x_1",
559
- "file": "(stdin)",
560
- "line": 35,
561
- "type": "ruby4x",
562
- "signatures": [
563
- {
564
- "signature": "func4x_1(Integer $param1)",
565
- "docstring": {
566
- "text": "An example 4.x function with only one signature.",
567
- "tags": [
568
- {
569
- "tag_name": "param",
570
- "text": "The first parameter.",
571
- "types": [
572
- "Integer"
573
- ],
574
- "name": "param1"
575
- },
576
- {
577
- "tag_name": "return",
578
- "text": "Returns nothing.",
579
- "types": [
580
- "Undef"
581
- ]
582
- }
583
- ]
584
- }
585
- }
586
- ],
587
- "docstring": {
588
- "text": "An example 4.x function with only one signature.",
589
- "tags": [
590
- {
591
- "tag_name": "param",
592
- "text": "The first parameter.",
593
- "types": [
594
- "Integer"
595
- ],
596
- "name": "param1"
597
- },
598
- {
599
- "tag_name": "return",
600
- "text": "Returns nothing.",
601
- "types": [
602
- "Undef"
603
- ]
604
- }
605
- ]
606
- },
607
- "source": "Puppet::Functions.create_function(:func4x_1) do\n # @param param1 The first parameter.\n # @return [Undef] Returns nothing.\n dispatch :foobarbaz do\n param 'Integer', :param1\n end\nend"
608
- }
609
- ],
610
- "puppet_tasks": [
611
- {
612
- "name": "(stdin)",
613
- "file": "(stdin)",
614
- "line": 0,
615
- "docstring": {
616
- "text": "Allows you to backup your database to local file.",
617
- "tags": [
618
- {
619
- "name": "database",
620
- "tag_name": "param",
621
- "text": "Database to connect to",
622
- "types": [
623
- "Optional[String[1]]"
624
- ]
625
- },
626
- {
627
- "name": "user",
628
- "tag_name": "param",
629
- "text": "The user",
630
- "types": [
631
- "Optional[String[1]]"
632
- ]
633
- },
634
- {
635
- "name": "password",
636
- "tag_name": "param",
637
- "text": "The password",
638
- "types": [
639
- "Optional[String[1]]"
640
- ]
641
- },
642
- {
643
- "name": "sql",
644
- "tag_name": "param",
645
- "text": "Path to file you want backup to",
646
- "types": [
647
- "String[1]"
648
- ]
649
- }
650
- ]
651
- },
652
- "source": "{\n \"description\": \"Allows you to backup your database to local file.\",\n \"input_method\": \"stdin\",\n \"parameters\": {\n \"database\": {\n \"description\": \"Database to connect to\",\n \"type\": \"Optional[String[1]]\"\n },\n \"user\": {\n \"description\": \"The user\",\n \"type\": \"Optional[String[1]]\"\n },\n \"password\": {\n \"description\": \"The password\",\n \"type\": \"Optional[String[1]]\"\n },\n \"sql\": {\n \"description\": \"Path to file you want backup to\",\n \"type\": \"String[1]\"\n }\n }\n}\n",
653
- "supports_noop": false,
654
- "input_method": "stdin"
655
- }
656
- ],
657
- "puppet_plans": [
658
-
659
- ]
660
- }