puppet-strings 2.1.0 → 2.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +78 -4
- data/CONTRIBUTING.md +32 -2
- data/README.md +81 -17
- data/lib/puppet-strings.rb +13 -4
- data/lib/puppet-strings/describe.rb +68 -0
- data/lib/puppet-strings/json.rb +2 -38
- data/lib/puppet-strings/markdown.rb +3 -1
- data/lib/puppet-strings/markdown/base.rb +37 -16
- data/lib/puppet-strings/markdown/data_type.rb +34 -0
- data/lib/puppet-strings/markdown/data_types.rb +41 -0
- data/lib/puppet-strings/markdown/function.rb +2 -2
- data/lib/puppet-strings/markdown/resource_type.rb +19 -2
- data/lib/puppet-strings/markdown/table_of_contents.rb +1 -0
- data/lib/puppet-strings/markdown/templates/classes_and_defines.erb +12 -4
- data/lib/puppet-strings/markdown/templates/data_type.erb +93 -0
- data/lib/puppet-strings/markdown/templates/data_type_function.erb +67 -0
- data/lib/puppet-strings/markdown/templates/function.erb +36 -1
- data/lib/puppet-strings/markdown/templates/puppet_task.erb +1 -1
- data/lib/puppet-strings/markdown/templates/resource_type.erb +32 -12
- data/lib/puppet-strings/markdown/templates/table_of_contents.erb +6 -6
- data/lib/puppet-strings/tasks/generate.rb +10 -3
- data/lib/puppet-strings/version.rb +1 -1
- data/lib/puppet-strings/yard.rb +16 -0
- data/lib/puppet-strings/yard/code_objects.rb +2 -0
- data/lib/puppet-strings/yard/code_objects/class.rb +2 -2
- data/lib/puppet-strings/yard/code_objects/data_type.rb +100 -0
- data/lib/puppet-strings/yard/code_objects/data_type_alias.rb +58 -0
- data/lib/puppet-strings/yard/code_objects/defined_type.rb +2 -2
- data/lib/puppet-strings/yard/code_objects/function.rb +4 -4
- data/lib/puppet-strings/yard/code_objects/plan.rb +2 -2
- data/lib/puppet-strings/yard/code_objects/provider.rb +1 -1
- data/lib/puppet-strings/yard/code_objects/task.rb +1 -1
- data/lib/puppet-strings/yard/code_objects/type.rb +48 -6
- data/lib/puppet-strings/yard/handlers.rb +3 -0
- data/lib/puppet-strings/yard/handlers/puppet/data_type_alias_handler.rb +24 -0
- data/lib/puppet-strings/yard/handlers/ruby/base.rb +12 -1
- data/lib/puppet-strings/yard/handlers/ruby/data_type_handler.rb +393 -0
- data/lib/puppet-strings/yard/handlers/ruby/function_handler.rb +2 -12
- data/lib/puppet-strings/yard/handlers/ruby/provider_handler.rb +1 -9
- data/lib/puppet-strings/yard/handlers/ruby/rsapi_handler.rb +3 -3
- data/lib/puppet-strings/yard/handlers/ruby/type_base.rb +135 -0
- data/lib/puppet-strings/yard/handlers/ruby/type_extras_handler.rb +56 -0
- data/lib/puppet-strings/yard/handlers/ruby/type_handler.rb +9 -115
- data/lib/puppet-strings/yard/parsers/json/parser.rb +4 -2
- data/lib/puppet-strings/yard/parsers/puppet/parser.rb +14 -7
- data/lib/puppet-strings/yard/parsers/puppet/statement.rb +25 -0
- data/lib/puppet-strings/yard/tags.rb +2 -0
- data/lib/puppet-strings/yard/tags/enum_tag.rb +12 -0
- data/lib/puppet-strings/yard/tags/factory.rb +16 -0
- data/lib/puppet-strings/yard/tags/overload_tag.rb +2 -2
- data/lib/puppet-strings/yard/templates/default/fulldoc/html/full_list_puppet_data_type.erb +10 -0
- data/lib/puppet-strings/yard/templates/default/fulldoc/html/setup.rb +9 -0
- data/lib/puppet-strings/yard/templates/default/layout/html/objects.erb +2 -0
- data/lib/puppet-strings/yard/templates/default/layout/html/setup.rb +18 -1
- data/lib/puppet-strings/yard/templates/default/puppet_data_type/html/box_info.erb +10 -0
- data/lib/puppet-strings/yard/templates/default/puppet_data_type/html/header.erb +1 -0
- data/lib/puppet-strings/yard/templates/default/puppet_data_type/html/method_details_list.erb +6 -0
- data/lib/puppet-strings/yard/templates/default/puppet_data_type/html/note.erb +6 -0
- data/lib/puppet-strings/yard/templates/default/puppet_data_type/html/overview.erb +6 -0
- data/lib/puppet-strings/yard/templates/default/puppet_data_type/html/setup.rb +13 -0
- data/lib/puppet-strings/yard/templates/default/puppet_data_type/html/source.erb +12 -0
- data/lib/puppet-strings/yard/templates/default/puppet_data_type/html/summary.erb +4 -0
- data/lib/puppet-strings/yard/templates/default/puppet_data_type/html/todo.erb +6 -0
- data/lib/puppet-strings/yard/templates/default/puppet_data_type_alias/html/alias_of.erb +10 -0
- data/lib/puppet-strings/yard/templates/default/puppet_data_type_alias/html/box_info.erb +10 -0
- data/lib/puppet-strings/yard/templates/default/puppet_data_type_alias/html/header.erb +1 -0
- data/lib/puppet-strings/yard/templates/default/puppet_data_type_alias/html/note.erb +6 -0
- data/lib/puppet-strings/yard/templates/default/puppet_data_type_alias/html/overview.erb +6 -0
- data/lib/puppet-strings/yard/templates/default/puppet_data_type_alias/html/setup.rb +17 -0
- data/lib/puppet-strings/yard/templates/default/puppet_data_type_alias/html/source.erb +12 -0
- data/lib/puppet-strings/yard/templates/default/puppet_data_type_alias/html/summary.erb +4 -0
- data/lib/puppet-strings/yard/templates/default/puppet_data_type_alias/html/todo.erb +6 -0
- data/lib/puppet-strings/yard/templates/default/puppet_type/html/setup.rb +3 -1
- data/lib/puppet-strings/yard/templates/default/tags/html/enum.erb +17 -0
- data/lib/puppet-strings/yard/templates/default/tags/setup.rb +7 -0
- data/lib/puppet-strings/yard/util.rb +48 -0
- data/lib/puppet/face/strings.rb +68 -3
- metadata +36 -45
- data/Gemfile +0 -37
- data/HISTORY.md +0 -218
- data/JSON.md +0 -802
- data/Rakefile +0 -93
- data/codecov.yml +0 -3
- data/misc/ANNOUNCEMENT_TEMPLATE.md +0 -40
- data/spec/acceptance/emit_json_options.rb +0 -71
- data/spec/acceptance/generate_markdown_spec.rb +0 -49
- data/spec/acceptance/lib/util.rb +0 -163
- data/spec/acceptance/running_strings_generate.rb +0 -54
- data/spec/fixtures/acceptance/modules/test/functions/add.pp +0 -9
- data/spec/fixtures/acceptance/modules/test/lib/puppet/functions/4x_function.rb +0 -5
- data/spec/fixtures/acceptance/modules/test/lib/puppet/parser/functions/function3x.rb +0 -2
- data/spec/fixtures/acceptance/modules/test/lib/puppet/provider/server/linux.rb +0 -9
- data/spec/fixtures/acceptance/modules/test/lib/puppet/type/database.rb +0 -15
- data/spec/fixtures/acceptance/modules/test/manifests/init.pp +0 -27
- data/spec/fixtures/acceptance/modules/test/manifests/triple_nested_classes.pp +0 -27
- data/spec/fixtures/acceptance/modules/test/metadata.json +0 -6
- data/spec/fixtures/unit/json/output.json +0 -660
- data/spec/fixtures/unit/json/output_with_plan.json +0 -697
- data/spec/fixtures/unit/json/output_without_puppet_function.json +0 -480
- data/spec/fixtures/unit/markdown/output.md +0 -444
- data/spec/fixtures/unit/markdown/output_with_plan.md +0 -478
- data/spec/spec_helper.rb +0 -45
- data/spec/spec_helper_acceptance.rb +0 -28
- data/spec/unit/puppet-strings/json_spec.rb +0 -229
- data/spec/unit/puppet-strings/markdown/base_spec.rb +0 -146
- data/spec/unit/puppet-strings/markdown_spec.rb +0 -283
- data/spec/unit/puppet-strings/yard/code_objects/task_spec.rb +0 -92
- data/spec/unit/puppet-strings/yard/handlers/json/task_handler_spec.rb +0 -124
- data/spec/unit/puppet-strings/yard/handlers/puppet/class_handler_spec.rb +0 -217
- data/spec/unit/puppet-strings/yard/handlers/puppet/defined_type_handler_spec.rb +0 -231
- data/spec/unit/puppet-strings/yard/handlers/puppet/function_handler_spec.rb +0 -315
- data/spec/unit/puppet-strings/yard/handlers/ruby/function_handler_spec.rb +0 -729
- data/spec/unit/puppet-strings/yard/handlers/ruby/provider_handler_spec.rb +0 -139
- data/spec/unit/puppet-strings/yard/handlers/ruby/rsapi_handler_spec.rb +0 -214
- data/spec/unit/puppet-strings/yard/handlers/ruby/type_handler_spec.rb +0 -269
- data/spec/unit/puppet-strings/yard/parsers/json/parser_spec.rb +0 -70
- data/spec/unit/puppet-strings/yard/parsers/json/task_statement_spec.rb +0 -56
- data/spec/unit/puppet-strings/yard/parsers/puppet/parser_spec.rb +0 -209
- data/spec/unit/puppet-strings/yard/util_spec.rb +0 -48
@@ -1,13 +1,16 @@
|
|
1
|
-
###
|
1
|
+
### `<%= name %>`
|
2
2
|
|
3
3
|
Type: <%= type %>
|
4
4
|
|
5
5
|
<% if text -%>
|
6
6
|
<%= text %>
|
7
|
+
|
7
8
|
<% elsif summary -%>
|
8
9
|
<%= summary %>
|
10
|
+
|
9
11
|
<% else -%>
|
10
12
|
<%= "The #{name} function." %>
|
13
|
+
|
11
14
|
<% end -%>
|
12
15
|
<% if todo -%>
|
13
16
|
* **TODO** <%= todo %>
|
@@ -17,7 +20,18 @@ Type: <%= type %>
|
|
17
20
|
* **Note** <%= note %>
|
18
21
|
|
19
22
|
<% end -%>
|
23
|
+
<% if examples -%>
|
24
|
+
#### Examples
|
25
|
+
|
26
|
+
<% examples.each do |eg| -%>
|
27
|
+
##### <%= eg[:name] %>
|
28
|
+
|
29
|
+
```puppet
|
30
|
+
<%= eg[:text] %>
|
31
|
+
```
|
20
32
|
|
33
|
+
<% end -%>
|
34
|
+
<% end -%>
|
21
35
|
<% signatures.each do |sig| -%>
|
22
36
|
#### `<%= sig.signature %>`
|
23
37
|
|
@@ -41,10 +55,23 @@ Returns: `<%= sig.return_type %>`<% if sig.return_val %> <%= sig.return_val %><%
|
|
41
55
|
<% end -%>
|
42
56
|
<% if raises -%>
|
43
57
|
Raises:
|
58
|
+
|
44
59
|
<% raises.each do |r| -%>
|
45
60
|
* <%= error_type(r[:text]) %> <%= error_text(r[:text]) %>
|
46
61
|
<% end -%>
|
47
62
|
|
63
|
+
<% end -%>
|
64
|
+
<% if sig.examples -%>
|
65
|
+
##### Examples
|
66
|
+
|
67
|
+
<% sig.examples.each do |eg| -%>
|
68
|
+
###### <%= eg[:name] %>
|
69
|
+
|
70
|
+
```puppet
|
71
|
+
<%= eg[:text] %>
|
72
|
+
```
|
73
|
+
|
74
|
+
<% end -%>
|
48
75
|
<% end -%>
|
49
76
|
<% if sig.params -%>
|
50
77
|
<% sig.params.each do |param| -%>
|
@@ -61,6 +88,14 @@ Options:
|
|
61
88
|
* **<%= o[:opt_name] %>** `<%= o[:opt_types][0] %>`: <%= o[:opt_text] %>
|
62
89
|
<% end -%>
|
63
90
|
|
91
|
+
<% end -%>
|
92
|
+
<% if sig.enums_for_param(param[:name]) -%>
|
93
|
+
Options:
|
94
|
+
|
95
|
+
<% sig.enums_for_param(param[:name]).each do |e| -%>
|
96
|
+
* **<%= e[:opt_name] %>**: <%= e[:opt_text] %>
|
97
|
+
<% end -%>
|
98
|
+
|
64
99
|
<% end -%>
|
65
100
|
<% end -%>
|
66
101
|
<% end -%>
|
@@ -1,4 +1,4 @@
|
|
1
|
-
###
|
1
|
+
### `<%= name %>`
|
2
2
|
|
3
3
|
<% if text -%>
|
4
4
|
<%= text %>
|
@@ -24,10 +24,10 @@
|
|
24
24
|
* **See also**
|
25
25
|
<% see.each do |sa| -%>
|
26
26
|
<% if sa[:name] -%>
|
27
|
-
<%= sa[:name] %>
|
27
|
+
<%= " * #{sa[:name]}" %>
|
28
28
|
<% end -%>
|
29
29
|
<% if sa[:text] -%>
|
30
|
-
<%= sa[:text] %>
|
30
|
+
<%= " * #{sa[:text]}" %>
|
31
31
|
<% end -%>
|
32
32
|
<% end -%>
|
33
33
|
|
@@ -44,16 +44,16 @@
|
|
44
44
|
|
45
45
|
<% end -%>
|
46
46
|
<% end -%>
|
47
|
-
<% if
|
47
|
+
<% if properties_and_checks -%>
|
48
48
|
#### Properties
|
49
49
|
|
50
50
|
The following properties are available in the `<%= name %>` <%= @type %>.
|
51
51
|
|
52
|
-
<%
|
52
|
+
<% properties_and_checks.each do |prop| -%>
|
53
53
|
##### `<%= prop[:name] %>`
|
54
54
|
|
55
55
|
<% if prop[:values] -%>
|
56
|
-
Valid values:
|
56
|
+
Valid values: `<%= prop[:values].map { |value| value_string(value) }.join('`, `') %>`
|
57
57
|
|
58
58
|
<% end -%>
|
59
59
|
<% if prop[:isnamevar] -%>
|
@@ -61,7 +61,7 @@ namevar
|
|
61
61
|
|
62
62
|
<% end -%>
|
63
63
|
<% if prop[:aliases] -%>
|
64
|
-
Aliases:
|
64
|
+
Aliases: `<%= prop[:aliases].to_s.delete('{').delete('}') %>`
|
65
65
|
|
66
66
|
<% end -%>
|
67
67
|
<% if prop[:data_type] -%>
|
@@ -77,9 +77,17 @@ Options:
|
|
77
77
|
* **<%= o[:opt_name] %>** `<%= o[:opt_types][0] %>`: <%= o[:opt_text] %>
|
78
78
|
<% end -%>
|
79
79
|
|
80
|
+
<% end -%>
|
81
|
+
<% if enums_for_param(prop[:name]) -%>
|
82
|
+
Options:
|
83
|
+
|
84
|
+
<% enums_for_param(prop[:name]).each do |e| -%>
|
85
|
+
* **<%= e[:opt_name] %>**: <%= e[:opt_text] %>
|
86
|
+
<% end -%>
|
87
|
+
|
80
88
|
<% end -%>
|
81
89
|
<% if prop[:default] -%>
|
82
|
-
Default value:
|
90
|
+
Default value: `<%= prop[:default] %>`
|
83
91
|
|
84
92
|
<% end -%>
|
85
93
|
<% end -%>
|
@@ -93,7 +101,7 @@ The following parameters are available in the `<%= name %>` <%= @type %>.
|
|
93
101
|
##### `<%= param[:name] %>`
|
94
102
|
|
95
103
|
<% if param[:values] -%>
|
96
|
-
Valid values:
|
104
|
+
Valid values: `<%= param[:values].map { |value| value_string(value) }.join('`, `') %>`
|
97
105
|
|
98
106
|
<% end -%>
|
99
107
|
<% if param[:isnamevar] -%>
|
@@ -101,14 +109,14 @@ namevar
|
|
101
109
|
|
102
110
|
<% end -%>
|
103
111
|
<% if param[:aliases] -%>
|
104
|
-
Aliases:
|
112
|
+
Aliases: `<%= param[:aliases].to_s.delete('{').delete('}') %>`
|
105
113
|
|
106
114
|
<% end -%>
|
107
115
|
<% if param[:data_type] -%>
|
108
116
|
Data type: `<%= param[:data_type] %>`<%= "\n_\*this data type contains a regex that may not be accurately reflected in generated documentation_" if regex_in_data_type?(param[:data_type]) %>
|
109
117
|
|
110
118
|
<% end -%>
|
111
|
-
<%= param[:description] %>
|
119
|
+
<%= word_wrap(param[:description]) %>
|
112
120
|
|
113
121
|
<% if options_for_param(param[:name]) -%>
|
114
122
|
Options:
|
@@ -117,9 +125,21 @@ Options:
|
|
117
125
|
* **<%= o[:opt_name] %>** `<%= o[:opt_types][0] %>`: <%= o[:opt_text] %>
|
118
126
|
<% end -%>
|
119
127
|
|
128
|
+
<% end -%>
|
129
|
+
<% if enums_for_param(param[:name]) -%>
|
130
|
+
Options:
|
131
|
+
|
132
|
+
<% enums_for_param(param[:name]).each do |e| -%>
|
133
|
+
* **<%= e[:opt_name] %>**: <%= e[:opt_text] %>
|
134
|
+
<% end -%>
|
135
|
+
|
120
136
|
<% end -%>
|
121
137
|
<% if param[:default] -%>
|
122
|
-
Default value:
|
138
|
+
Default value: `<%= value_string(param[:default]) %>`
|
139
|
+
|
140
|
+
<% end -%>
|
141
|
+
<% if param[:required_features] -%>
|
142
|
+
Required features: <%= param[:required_features] %>.
|
123
143
|
|
124
144
|
<% end -%>
|
125
145
|
<% end -%>
|
@@ -1,25 +1,25 @@
|
|
1
1
|
<% if group.length > 0 -%>
|
2
|
-
|
2
|
+
### <%= group_name %>
|
3
3
|
|
4
4
|
<% if priv -%>
|
5
|
-
|
5
|
+
#### Public <%= group_name %>
|
6
6
|
|
7
7
|
<% group.each do |item| -%>
|
8
8
|
<% unless item[:private] -%>
|
9
|
-
* [`<%= item[:name] %>`](#<%= item[:link] %>): <%= item[:desc] %>
|
9
|
+
* [`<%= item[:name] %>`](#<%= item[:link] %>)<% unless item[:desc].nil? || item[:desc].empty? %>: <%= item[:desc] %><% end %>
|
10
10
|
<% end -%>
|
11
11
|
<% end -%>
|
12
12
|
|
13
|
-
|
13
|
+
#### Private <%= group_name %>
|
14
14
|
|
15
15
|
<% group.each do |item| -%>
|
16
16
|
<% if item[:private] -%>
|
17
|
-
* `<%= item[:name]
|
17
|
+
* `<%= item[:name] %>`<% unless item[:desc].nil? || item[:desc].empty? %>: <%= item[:desc] %><% end %>
|
18
18
|
<% end -%>
|
19
19
|
<% end -%>
|
20
20
|
<% else -%>
|
21
21
|
<% group.each do |item| -%>
|
22
|
-
* [`<%= item[:name] %>`](#<%= item[:link] %>): <%= item[:desc] %>
|
22
|
+
* [`<%= item[:name] %>`](#<%= item[:link] %>)<% unless item[:desc].nil? || item[:desc].empty? %>: <%= item[:desc] %><% end %>
|
23
23
|
<% end -%>
|
24
24
|
<% end -%>
|
25
25
|
|
@@ -33,13 +33,20 @@ namespace :strings do
|
|
33
33
|
end
|
34
34
|
end
|
35
35
|
end
|
36
|
+
# rubocop:enable Style/PreferredHashMethods
|
36
37
|
|
37
|
-
[
|
38
|
+
%i[json markdown].each { |format| parse_format_option(args, options, format) }
|
38
39
|
|
39
40
|
warn('yard_args behavior is a little dodgy, use at your own risk') if args[:yard_args]
|
40
|
-
options[:yard_args] = args[:yard_args].split if args.
|
41
|
+
options[:yard_args] = args[:yard_args].split if args.key? :yard_args
|
41
42
|
|
42
43
|
PuppetStrings.generate(patterns, options)
|
43
44
|
end
|
44
|
-
end
|
45
45
|
|
46
|
+
namespace :generate do
|
47
|
+
desc 'Generate Puppet Reference documentation.'
|
48
|
+
task :reference, [:patterns, :debug, :backtrace] do |t, args|
|
49
|
+
Rake::Task['strings:generate'].invoke(args[:patterns], args[:debug], args[:backtrace], nil, 'false', 'true')
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
data/lib/puppet-strings/yard.rb
CHANGED
@@ -11,6 +11,9 @@ module PuppetStrings::Yard
|
|
11
11
|
# Sets up YARD for use with puppet-strings.
|
12
12
|
# @return [void]
|
13
13
|
def self.setup!
|
14
|
+
# Register our factory
|
15
|
+
YARD::Tags::Library.default_factory = PuppetStrings::Yard::Tags::Factory
|
16
|
+
|
14
17
|
# Register the template path
|
15
18
|
YARD::Templates::Engine.register_template_path(File.join(File.dirname(__FILE__), 'yard', 'templates'))
|
16
19
|
|
@@ -30,6 +33,9 @@ module PuppetStrings::Yard
|
|
30
33
|
# Register the summary tag
|
31
34
|
PuppetStrings::Yard::Tags::SummaryTag.register!
|
32
35
|
|
36
|
+
# Register the enum tag
|
37
|
+
PuppetStrings::Yard::Tags::EnumTag.register!
|
38
|
+
|
33
39
|
# Ignore documentation on Puppet DSL calls
|
34
40
|
# This prevents the YARD DSL parser from emitting warnings for Puppet's Ruby DSL
|
35
41
|
YARD::Handlers::Ruby::DSLHandlerMethods::IGNORE_METHODS['create_function'] = true
|
@@ -46,6 +52,8 @@ class YARD::CLI::Yardoc
|
|
46
52
|
:module,
|
47
53
|
:class,
|
48
54
|
:puppet_class,
|
55
|
+
:puppet_data_type,
|
56
|
+
:puppet_data_type_alias,
|
49
57
|
:puppet_defined_type,
|
50
58
|
:puppet_type,
|
51
59
|
:puppet_provider,
|
@@ -64,6 +72,14 @@ class YARD::CLI::Stats
|
|
64
72
|
output 'Puppet Classes', *type_statistics_all(:puppet_class)
|
65
73
|
end
|
66
74
|
|
75
|
+
def stats_for_puppet_data_types
|
76
|
+
output 'Puppet Data Types', *type_statistics_all(:puppet_data_type)
|
77
|
+
end
|
78
|
+
|
79
|
+
def stats_for_puppet_data_type_aliases
|
80
|
+
output 'Puppet Data Type Aliases', *type_statistics_all(:puppet_data_type_alias)
|
81
|
+
end
|
82
|
+
|
67
83
|
def stats_for_puppet_defined_types
|
68
84
|
output 'Puppet Defined Types', *type_statistics_all(:puppet_defined_type)
|
69
85
|
end
|
@@ -1,6 +1,8 @@
|
|
1
1
|
# The module for custom YARD code objects.
|
2
2
|
module PuppetStrings::Yard::CodeObjects
|
3
3
|
require 'puppet-strings/yard/code_objects/class'
|
4
|
+
require 'puppet-strings/yard/code_objects/data_type'
|
5
|
+
require 'puppet-strings/yard/code_objects/data_type_alias'
|
4
6
|
require 'puppet-strings/yard/code_objects/defined_type'
|
5
7
|
require 'puppet-strings/yard/code_objects/type'
|
6
8
|
require 'puppet-strings/yard/code_objects/provider'
|
@@ -50,8 +50,8 @@ class PuppetStrings::Yard::CodeObjects::Class < PuppetStrings::Yard::CodeObjects
|
|
50
50
|
hash[:file] = file
|
51
51
|
hash[:line] = line
|
52
52
|
hash[:inherits] = statement.parent_class if statement.parent_class
|
53
|
-
hash[:docstring] = PuppetStrings::
|
54
|
-
defaults = Hash[*parameters.
|
53
|
+
hash[:docstring] = PuppetStrings::Yard::Util.docstring_to_hash(docstring)
|
54
|
+
defaults = Hash[*parameters.reject{ |p| p[1].nil? }.flatten]
|
55
55
|
hash[:defaults] = defaults unless defaults.empty?
|
56
56
|
hash[:source] = source unless source && source.empty?
|
57
57
|
hash
|
@@ -0,0 +1,100 @@
|
|
1
|
+
require 'puppet-strings/yard/code_objects/group'
|
2
|
+
require 'puppet-strings/yard/util'
|
3
|
+
|
4
|
+
# Implements the group for Puppet DataTypes.
|
5
|
+
class PuppetStrings::Yard::CodeObjects::DataTypes < PuppetStrings::Yard::CodeObjects::Group
|
6
|
+
# Gets the singleton instance of the group.
|
7
|
+
# @return Returns the singleton instance of the group.
|
8
|
+
def self.instance
|
9
|
+
super(:puppet_data_types)
|
10
|
+
end
|
11
|
+
|
12
|
+
# Gets the display name of the group.
|
13
|
+
# @param [Boolean] prefix whether to show a prefix. Ignored for Puppet group namespaces.
|
14
|
+
# @return [String] Returns the display name of the group.
|
15
|
+
def name(prefix = false)
|
16
|
+
'Puppet Data Types'
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
# Implements the Puppet DataType code object.
|
21
|
+
class PuppetStrings::Yard::CodeObjects::DataType < PuppetStrings::Yard::CodeObjects::Base
|
22
|
+
# Initializes a Puppet class code object.
|
23
|
+
# @param [String] The name of the Data Type
|
24
|
+
# @return [void]
|
25
|
+
def initialize(name)
|
26
|
+
super(PuppetStrings::Yard::CodeObjects::DataTypes.instance, name)
|
27
|
+
@defaults = {}
|
28
|
+
end
|
29
|
+
|
30
|
+
# Gets the type of the code object.
|
31
|
+
# @return Returns the type of the code object.
|
32
|
+
def type
|
33
|
+
:puppet_data_type
|
34
|
+
end
|
35
|
+
|
36
|
+
# Gets the source of the code object.
|
37
|
+
# @return Returns the source of the code object.
|
38
|
+
def source
|
39
|
+
# Not implemented, but would be nice!
|
40
|
+
nil
|
41
|
+
end
|
42
|
+
|
43
|
+
def add_parameter(name, type, default)
|
44
|
+
tag = docstring.tags(:param).find { |item| item.name == name }
|
45
|
+
if tag.nil?
|
46
|
+
tag = YARD::Tags::Tag.new(:param, '', nil, name)
|
47
|
+
docstring.add_tag(tag)
|
48
|
+
end
|
49
|
+
type = [type] unless type.is_a?(Array)
|
50
|
+
tag.types = type if tag.types.nil?
|
51
|
+
set_parameter_default(name, default)
|
52
|
+
end
|
53
|
+
|
54
|
+
def set_parameter_default(param_name, default)
|
55
|
+
defaults.delete(param_name)
|
56
|
+
defaults[param_name] = default unless default.nil?
|
57
|
+
end
|
58
|
+
|
59
|
+
def parameters
|
60
|
+
docstring.tags(:param).map { |tag| [tag.name, defaults[tag.name]] }
|
61
|
+
end
|
62
|
+
|
63
|
+
def add_function(name, return_type, parameter_types)
|
64
|
+
meth_obj = YARD::CodeObjects::MethodObject.new(self, name, :class)
|
65
|
+
|
66
|
+
# Add return tag
|
67
|
+
meth_obj.add_tag(YARD::Tags::Tag.new(:return, '', return_type))
|
68
|
+
|
69
|
+
# Add parameters
|
70
|
+
parameter_types.each_with_index do |param_type, index|
|
71
|
+
meth_obj.add_tag(YARD::Tags::Tag.new(:param, '', [param_type], "param#{index + 1}"))
|
72
|
+
end
|
73
|
+
|
74
|
+
self.meths << meth_obj
|
75
|
+
end
|
76
|
+
|
77
|
+
def functions
|
78
|
+
meths
|
79
|
+
end
|
80
|
+
|
81
|
+
# Converts the code object to a hash representation.
|
82
|
+
# @return [Hash] Returns a hash representation of the code object.
|
83
|
+
def to_hash
|
84
|
+
hash = {}
|
85
|
+
hash[:name] = name
|
86
|
+
hash[:file] = file
|
87
|
+
hash[:line] = line
|
88
|
+
hash[:docstring] = PuppetStrings::Yard::Util.docstring_to_hash(docstring, %i[param option enum return example])
|
89
|
+
hash[:defaults] = defaults unless defaults.empty?
|
90
|
+
hash[:source] = source unless source && source.empty?
|
91
|
+
hash[:functions] = functions.map do |func|
|
92
|
+
{
|
93
|
+
name: func.name,
|
94
|
+
signature: func.signature,
|
95
|
+
docstring: PuppetStrings::Yard::Util.docstring_to_hash(func.docstring, %i[param option enum return example])
|
96
|
+
}
|
97
|
+
end
|
98
|
+
hash
|
99
|
+
end
|
100
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'puppet-strings/yard/code_objects/group'
|
2
|
+
require 'puppet-strings/yard/util'
|
3
|
+
|
4
|
+
# Implements the group for Puppet DataTypeAliases.
|
5
|
+
class PuppetStrings::Yard::CodeObjects::DataTypeAliases < PuppetStrings::Yard::CodeObjects::Group
|
6
|
+
# Gets the singleton instance of the group.
|
7
|
+
# @return Returns the singleton instance of the group.
|
8
|
+
def self.instance
|
9
|
+
super(:puppet_data_type_aliases)
|
10
|
+
end
|
11
|
+
|
12
|
+
# Gets the display name of the group.
|
13
|
+
# @param [Boolean] prefix whether to show a prefix. Ignored for Puppet group namespaces.
|
14
|
+
# @return [String] Returns the display name of the group.
|
15
|
+
def name(prefix = false)
|
16
|
+
'Puppet Data Type Aliases'
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
# Implements the Puppet DataTypeAlias code object.
|
21
|
+
class PuppetStrings::Yard::CodeObjects::DataTypeAlias < PuppetStrings::Yard::CodeObjects::Base
|
22
|
+
attr_reader :statement
|
23
|
+
attr_accessor :alias_of
|
24
|
+
|
25
|
+
# Initializes a Puppet data type alias code object.
|
26
|
+
# @param [PuppetStrings::Parsers::DataTypeAliasStatement] statement The data type alias statement that was parsed.
|
27
|
+
# @return [void]
|
28
|
+
def initialize(statement)
|
29
|
+
@statement = statement
|
30
|
+
@alias_of = statement.alias_of
|
31
|
+
super(PuppetStrings::Yard::CodeObjects::DataTypeAliases.instance, statement.name)
|
32
|
+
end
|
33
|
+
|
34
|
+
# Gets the type of the code object.
|
35
|
+
# @return Returns the type of the code object.
|
36
|
+
def type
|
37
|
+
:puppet_data_type_alias
|
38
|
+
end
|
39
|
+
|
40
|
+
# Gets the source of the code object.
|
41
|
+
# @return Returns the source of the code object.
|
42
|
+
def source
|
43
|
+
# Not implemented, but would be nice!
|
44
|
+
nil
|
45
|
+
end
|
46
|
+
|
47
|
+
# Converts the code object to a hash representation.
|
48
|
+
# @return [Hash] Returns a hash representation of the code object.
|
49
|
+
def to_hash
|
50
|
+
hash = {}
|
51
|
+
hash[:name] = name
|
52
|
+
hash[:file] = file
|
53
|
+
hash[:line] = line
|
54
|
+
hash[:docstring] = PuppetStrings::Yard::Util.docstring_to_hash(docstring)
|
55
|
+
hash[:alias_of] = alias_of
|
56
|
+
hash
|
57
|
+
end
|
58
|
+
end
|