puppet-strings 2.5.0 → 2.6.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 +33 -6
- data/lib/puppet-strings.rb +2 -0
- data/lib/puppet-strings/describe.rb +2 -0
- data/lib/puppet-strings/json.rb +2 -0
- data/lib/puppet-strings/markdown.rb +11 -9
- data/lib/puppet-strings/markdown/base.rb +11 -3
- data/lib/puppet-strings/markdown/data_type.rb +2 -0
- data/lib/puppet-strings/markdown/data_types.rb +3 -1
- data/lib/puppet-strings/markdown/defined_type.rb +2 -0
- data/lib/puppet-strings/markdown/defined_types.rb +3 -1
- data/lib/puppet-strings/markdown/function.rb +9 -7
- data/lib/puppet-strings/markdown/functions.rb +3 -1
- data/lib/puppet-strings/markdown/puppet_class.rb +2 -0
- data/lib/puppet-strings/markdown/puppet_classes.rb +3 -1
- data/lib/puppet-strings/markdown/puppet_plan.rb +2 -0
- data/lib/puppet-strings/markdown/puppet_plans.rb +3 -1
- data/lib/puppet-strings/markdown/puppet_task.rb +2 -0
- data/lib/puppet-strings/markdown/puppet_tasks.rb +3 -1
- data/lib/puppet-strings/markdown/resource_type.rb +2 -0
- data/lib/puppet-strings/markdown/resource_types.rb +3 -1
- data/lib/puppet-strings/markdown/table_of_contents.rb +3 -1
- data/lib/puppet-strings/markdown/templates/classes_and_defines.erb +7 -3
- data/lib/puppet-strings/markdown/templates/data_type.erb +12 -4
- data/lib/puppet-strings/markdown/templates/data_type_function.erb +1 -1
- data/lib/puppet-strings/markdown/templates/function.erb +1 -1
- data/lib/puppet-strings/markdown/templates/puppet_task.erb +1 -1
- data/lib/puppet-strings/markdown/templates/resource_type.erb +8 -2
- data/lib/puppet-strings/monkey_patches/display_object_command.rb +2 -0
- data/lib/puppet-strings/tasks.rb +2 -0
- data/lib/puppet-strings/tasks/generate.rb +2 -0
- data/lib/puppet-strings/tasks/gh_pages.rb +3 -0
- data/lib/puppet-strings/version.rb +3 -1
- data/lib/puppet-strings/yard.rb +3 -0
- data/lib/puppet-strings/yard/code_objects.rb +2 -0
- data/lib/puppet-strings/yard/code_objects/base.rb +2 -0
- data/lib/puppet-strings/yard/code_objects/class.rb +4 -2
- data/lib/puppet-strings/yard/code_objects/data_type.rb +4 -2
- data/lib/puppet-strings/yard/code_objects/data_type_alias.rb +2 -0
- data/lib/puppet-strings/yard/code_objects/defined_type.rb +4 -2
- data/lib/puppet-strings/yard/code_objects/function.rb +6 -3
- data/lib/puppet-strings/yard/code_objects/group.rb +3 -0
- data/lib/puppet-strings/yard/code_objects/plan.rb +4 -2
- data/lib/puppet-strings/yard/code_objects/provider.rb +6 -0
- data/lib/puppet-strings/yard/code_objects/task.rb +2 -0
- data/lib/puppet-strings/yard/code_objects/type.rb +3 -0
- data/lib/puppet-strings/yard/handlers.rb +2 -0
- data/lib/puppet-strings/yard/handlers/helpers.rb +2 -0
- data/lib/puppet-strings/yard/handlers/json/base.rb +2 -0
- data/lib/puppet-strings/yard/handlers/json/task_handler.rb +2 -0
- data/lib/puppet-strings/yard/handlers/puppet/base.rb +3 -0
- data/lib/puppet-strings/yard/handlers/puppet/class_handler.rb +2 -0
- data/lib/puppet-strings/yard/handlers/puppet/data_type_alias_handler.rb +2 -0
- data/lib/puppet-strings/yard/handlers/puppet/defined_type_handler.rb +2 -0
- data/lib/puppet-strings/yard/handlers/puppet/function_handler.rb +3 -1
- data/lib/puppet-strings/yard/handlers/puppet/plan_handler.rb +2 -0
- data/lib/puppet-strings/yard/handlers/ruby/base.rb +5 -0
- data/lib/puppet-strings/yard/handlers/ruby/data_type_handler.rb +33 -17
- data/lib/puppet-strings/yard/handlers/ruby/function_handler.rb +9 -7
- data/lib/puppet-strings/yard/handlers/ruby/provider_handler.rb +13 -0
- data/lib/puppet-strings/yard/handlers/ruby/rsapi_handler.rb +4 -1
- data/lib/puppet-strings/yard/handlers/ruby/type_base.rb +14 -6
- data/lib/puppet-strings/yard/handlers/ruby/type_extras_handler.rb +5 -2
- data/lib/puppet-strings/yard/handlers/ruby/type_handler.rb +12 -1
- data/lib/puppet-strings/yard/parsers.rb +2 -0
- data/lib/puppet-strings/yard/parsers/json/parser.rb +2 -0
- data/lib/puppet-strings/yard/parsers/json/task_statement.rb +2 -0
- data/lib/puppet-strings/yard/parsers/puppet/parser.rb +12 -10
- data/lib/puppet-strings/yard/parsers/puppet/statement.rb +4 -0
- data/lib/puppet-strings/yard/tags.rb +2 -0
- data/lib/puppet-strings/yard/tags/enum_tag.rb +2 -0
- data/lib/puppet-strings/yard/tags/factory.rb +2 -0
- data/lib/puppet-strings/yard/tags/overload_tag.rb +4 -1
- data/lib/puppet-strings/yard/tags/parameter_directive.rb +5 -4
- data/lib/puppet-strings/yard/tags/property_directive.rb +5 -4
- data/lib/puppet-strings/yard/tags/summary_tag.rb +2 -0
- data/lib/puppet-strings/yard/templates/default/puppet_function/html/setup.rb +1 -1
- data/lib/puppet-strings/yard/util.rb +4 -1
- data/lib/puppet/application/strings.rb +2 -0
- data/lib/puppet/face/strings.rb +4 -1
- data/lib/puppet/feature/rgen.rb +2 -0
- data/lib/puppet/feature/yard.rb +2 -0
- metadata +5 -5
@@ -1,4 +1,4 @@
|
|
1
|
-
###
|
1
|
+
### <a name="<%= link %>"></a>`<%= name %>`
|
2
2
|
|
3
3
|
<% if text -%>
|
4
4
|
<%= text %>
|
@@ -98,7 +98,11 @@ Default value: `<%= prop[:default] %>`
|
|
98
98
|
The following parameters are available in the `<%= name %>` <%= @type %>.
|
99
99
|
|
100
100
|
<% parameters.each do |param| -%>
|
101
|
-
|
101
|
+
* [`<%= param[:name] %>`](#<%= param[:name] %>)
|
102
|
+
<% end -%>
|
103
|
+
|
104
|
+
<% parameters.each do |param| -%>
|
105
|
+
##### <a name="<%= param[:name] %>"></a>`<%= param[:name] %>`
|
102
106
|
|
103
107
|
<% if param[:values] -%>
|
104
108
|
Valid values: `<%= param[:values].map { |value| value_string(value) }.join('`, `') %>`
|
@@ -116,7 +120,9 @@ Aliases: `<%= param[:aliases].to_s.delete('{').delete('}') %>`
|
|
116
120
|
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]) %>
|
117
121
|
|
118
122
|
<% end -%>
|
123
|
+
<% if param[:description] -%>
|
119
124
|
<%= word_wrap(param[:description]) %>
|
125
|
+
<% end -%>
|
120
126
|
|
121
127
|
<% if options_for_param(param[:name]) -%>
|
122
128
|
Options:
|
data/lib/puppet-strings/tasks.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'puppet-strings/tasks'
|
2
4
|
|
3
5
|
namespace :strings do
|
@@ -5,6 +7,7 @@ namespace :strings do
|
|
5
7
|
task :checkout do
|
6
8
|
if Dir.exist?('doc')
|
7
9
|
fail "The 'doc' directory (#{File.expand_path('doc')}) is not a Git repository! Remove it and run the Rake task again." unless Dir.exist?('doc/.git')
|
10
|
+
|
8
11
|
Dir.chdir('doc') do
|
9
12
|
system 'git checkout gh-pages'
|
10
13
|
system 'git pull --rebase origin gh-pages'
|
data/lib/puppet-strings/yard.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'yard'
|
2
4
|
|
3
5
|
# Module for YARD related functionality.
|
@@ -102,6 +104,7 @@ class YARD::CLI::Stats
|
|
102
104
|
|
103
105
|
def stats_for_puppet_plans
|
104
106
|
return unless PuppetStrings.puppet_5?
|
107
|
+
|
105
108
|
output 'Puppet Plans', *type_statistics_all(:puppet_plan)
|
106
109
|
end
|
107
110
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'puppet-strings/yard/code_objects/group'
|
2
4
|
|
3
5
|
# Implements the group for Puppet classes.
|
@@ -52,8 +54,8 @@ class PuppetStrings::Yard::CodeObjects::Class < PuppetStrings::Yard::CodeObjects
|
|
52
54
|
hash[:inherits] = statement.parent_class if statement.parent_class
|
53
55
|
hash[:docstring] = PuppetStrings::Yard::Util.docstring_to_hash(docstring)
|
54
56
|
defaults = Hash[*parameters.reject{ |p| p[1].nil? }.flatten]
|
55
|
-
hash[:defaults] = defaults unless defaults.empty?
|
56
|
-
hash[:source] = source unless source
|
57
|
+
hash[:defaults] = defaults unless defaults.nil? || defaults.empty?
|
58
|
+
hash[:source] = source unless source.nil? || source.empty?
|
57
59
|
hash
|
58
60
|
end
|
59
61
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'puppet-strings/yard/code_objects/group'
|
2
4
|
require 'puppet-strings/yard/util'
|
3
5
|
|
@@ -86,8 +88,8 @@ class PuppetStrings::Yard::CodeObjects::DataType < PuppetStrings::Yard::CodeObje
|
|
86
88
|
hash[:file] = file
|
87
89
|
hash[:line] = line
|
88
90
|
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
|
91
|
+
hash[:defaults] = defaults unless defaults.nil? || defaults.empty?
|
92
|
+
hash[:source] = source unless source.nil? || source.empty?
|
91
93
|
hash[:functions] = functions.map do |func|
|
92
94
|
{
|
93
95
|
name: func.name,
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'puppet-strings/yard/code_objects/group'
|
2
4
|
|
3
5
|
# Implements the group for Puppet defined types.
|
@@ -51,8 +53,8 @@ class PuppetStrings::Yard::CodeObjects::DefinedType < PuppetStrings::Yard::CodeO
|
|
51
53
|
hash[:line] = line
|
52
54
|
hash[:docstring] = PuppetStrings::Yard::Util.docstring_to_hash(docstring)
|
53
55
|
defaults = Hash[*parameters.reject{ |p| p[1].nil? }.flatten]
|
54
|
-
hash[:defaults] = defaults unless defaults.empty?
|
55
|
-
hash[:source] = source unless source
|
56
|
+
hash[:defaults] = defaults unless defaults.nil? || defaults.empty?
|
57
|
+
hash[:source] = source unless source.nil? || source.empty?
|
56
58
|
hash
|
57
59
|
end
|
58
60
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'puppet-strings/yard/code_objects/group'
|
2
4
|
|
3
5
|
# Implements the group for Puppet functions.
|
@@ -61,11 +63,12 @@ class PuppetStrings::Yard::CodeObjects::Function < PuppetStrings::Yard::CodeObje
|
|
61
63
|
# @return [String] Returns the Puppet signature of the function.
|
62
64
|
def signature
|
63
65
|
return '' if self.has_tag? :overload
|
66
|
+
|
64
67
|
tags = self.tags(:param)
|
65
68
|
args = @parameters.map do |parameter|
|
66
69
|
name, default = parameter
|
67
70
|
tag = tags.find { |t| t.name == name } if tags
|
68
|
-
type = tag
|
71
|
+
type = tag&.types ? "#{tag.type} " : 'Any '
|
69
72
|
prefix = "#{name[0]}" if name.start_with?('*', '&')
|
70
73
|
name = name[1..-1] if prefix
|
71
74
|
default = " = #{default}" if default
|
@@ -96,8 +99,8 @@ class PuppetStrings::Yard::CodeObjects::Function < PuppetStrings::Yard::CodeObje
|
|
96
99
|
|
97
100
|
hash[:docstring] = PuppetStrings::Yard::Util.docstring_to_hash(docstring)
|
98
101
|
defaults = Hash[*parameters.reject{ |p| p[1].nil? }.flatten]
|
99
|
-
hash[:defaults] = defaults unless defaults.empty?
|
100
|
-
hash[:source] = source unless source
|
102
|
+
hash[:defaults] = defaults unless defaults.nil? || defaults.empty?
|
103
|
+
hash[:source] = source unless source.nil? || source.empty?
|
101
104
|
hash
|
102
105
|
end
|
103
106
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'puppet-strings/yard/code_objects/base'
|
2
4
|
|
3
5
|
# Implements the base class for "groups".
|
@@ -10,6 +12,7 @@ class PuppetStrings::Yard::CodeObjects::Group < PuppetStrings::Yard::CodeObjects
|
|
10
12
|
def self.instance(key)
|
11
13
|
instance = P(:root, key)
|
12
14
|
return instance unless instance.is_a?(YARD::CodeObjects::Proxy)
|
15
|
+
|
13
16
|
instance = self.new(:root, key)
|
14
17
|
instance.visibility = :hidden
|
15
18
|
P(:root).children << instance
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'puppet-strings/yard/code_objects/group'
|
2
4
|
|
3
5
|
class PuppetStrings::Yard::CodeObjects::Plans < PuppetStrings::Yard::CodeObjects::Group
|
@@ -49,8 +51,8 @@ class PuppetStrings::Yard::CodeObjects::Plan < PuppetStrings::Yard::CodeObjects:
|
|
49
51
|
hash[:line] = line
|
50
52
|
hash[:docstring] = PuppetStrings::Yard::Util.docstring_to_hash(docstring)
|
51
53
|
defaults = Hash[*parameters.reject{ |p| p[1].nil? }.flatten]
|
52
|
-
hash[:defaults] = defaults unless defaults.empty?
|
53
|
-
hash[:source] = source unless source
|
54
|
+
hash[:defaults] = defaults unless defaults.nil? || defaults.empty?
|
55
|
+
hash[:source] = source unless source.nil? || source.empty?
|
54
56
|
hash
|
55
57
|
end
|
56
58
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'puppet-strings/yard/code_objects/group'
|
2
4
|
|
3
5
|
# Implements the group for Puppet providers.
|
@@ -42,6 +44,7 @@ class PuppetStrings::Yard::CodeObjects::Provider < PuppetStrings::Yard::CodeObje
|
|
42
44
|
# @return [void]
|
43
45
|
def add_confine(key, value)
|
44
46
|
return unless key && value
|
47
|
+
|
45
48
|
@confines ||= {}
|
46
49
|
@confines[key] = value
|
47
50
|
end
|
@@ -51,6 +54,7 @@ class PuppetStrings::Yard::CodeObjects::Provider < PuppetStrings::Yard::CodeObje
|
|
51
54
|
# @return [void]
|
52
55
|
def add_feature(feature)
|
53
56
|
return unless feature
|
57
|
+
|
54
58
|
@features ||= []
|
55
59
|
@features << feature
|
56
60
|
end
|
@@ -60,6 +64,7 @@ class PuppetStrings::Yard::CodeObjects::Provider < PuppetStrings::Yard::CodeObje
|
|
60
64
|
# @return [void]
|
61
65
|
def add_default(constraints)
|
62
66
|
return unless constraints
|
67
|
+
|
63
68
|
@defaults ||= []
|
64
69
|
@defaults << constraints
|
65
70
|
end
|
@@ -70,6 +75,7 @@ class PuppetStrings::Yard::CodeObjects::Provider < PuppetStrings::Yard::CodeObje
|
|
70
75
|
# @return [void]
|
71
76
|
def add_command(key, value)
|
72
77
|
return unless key && value
|
78
|
+
|
73
79
|
@commands ||= {}
|
74
80
|
@commands[key] = value
|
75
81
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'puppet-strings/yard/code_objects/group'
|
2
4
|
require 'puppet-strings/yard/util'
|
3
5
|
|
@@ -167,6 +169,7 @@ class PuppetStrings::Yard::CodeObjects::Type < PuppetStrings::Yard::CodeObjects:
|
|
167
169
|
def providers
|
168
170
|
providers = YARD::Registry.all("puppet_providers_#{name}".intern)
|
169
171
|
return providers if providers.empty?
|
172
|
+
|
170
173
|
providers.first.children
|
171
174
|
end
|
172
175
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
# Implements the base handler for Puppet language handlers.
|
2
4
|
class PuppetStrings::Yard::Handlers::Puppet::Base < YARD::Handlers::Base
|
3
5
|
# Determine sif the handler handles the given statement.
|
@@ -17,6 +19,7 @@ class PuppetStrings::Yard::Handlers::Puppet::Base < YARD::Handlers::Base
|
|
17
19
|
tags = object.tags(:param)
|
18
20
|
tags.each do |tag|
|
19
21
|
next if statement.parameters.find { |p| tag.name == p.name }
|
22
|
+
|
20
23
|
log.warn "The @param tag for parameter '#{tag.name}' has no matching parameter at #{statement.file}:#{statement.line}." unless tag.name == 'name' || tag.name == 'title'
|
21
24
|
end
|
22
25
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'puppet-strings/yard/handlers/helpers'
|
2
4
|
require 'puppet-strings/yard/handlers/puppet/base'
|
3
5
|
require 'puppet-strings/yard/parsers'
|
@@ -37,7 +39,7 @@ class PuppetStrings::Yard::Handlers::Puppet::FunctionHandler < PuppetStrings::Ya
|
|
37
39
|
def add_return_tag(object, type=nil)
|
38
40
|
tag = object.tag(:return)
|
39
41
|
if tag
|
40
|
-
if (type && tag.types.first) && (type != tag.types.first)
|
42
|
+
if (type && tag.types && tag.types.first) && (type != tag.types.first)
|
41
43
|
log.warn "Documented return type does not match return type in function definition near #{statement.file}:#{statement.line}."
|
42
44
|
end
|
43
45
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'ripper'
|
2
4
|
|
3
5
|
# Implements the base handler for Ruby language handlers.
|
@@ -12,6 +14,7 @@ class PuppetStrings::Yard::Handlers::Ruby::Base < YARD::Handlers::Ruby::Base
|
|
12
14
|
# @return [String] Returns a string representation of the node or nil if a string representation was not possible.
|
13
15
|
def node_as_string(node)
|
14
16
|
return nil unless node
|
17
|
+
|
15
18
|
case node.type
|
16
19
|
when :symbol, :symbol_literal
|
17
20
|
node.source[1..-1]
|
@@ -42,8 +45,10 @@ class PuppetStrings::Yard::Handlers::Ruby::Base < YARD::Handlers::Ruby::Base
|
|
42
45
|
def get_name(statementobject, statementtype)
|
43
46
|
parameters = statementobject.parameters(false)
|
44
47
|
raise YARD::Parser::UndocumentableError, "Expected at least one parameter to #{statementtype} at #{statementobject.file}:#{statementobject.line}." if parameters.empty?
|
48
|
+
|
45
49
|
name = node_as_string(parameters.first)
|
46
50
|
raise YARD::Parser::UndocumentableError, "Expected a symbol or string literal for first parameter but found '#{parameters.first.type}' at #{statement.file}:#{statement.line}." unless name
|
51
|
+
|
47
52
|
name
|
48
53
|
end
|
49
54
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'puppet-strings/yard/handlers/helpers'
|
2
4
|
require 'puppet-strings/yard/handlers/ruby/base'
|
3
5
|
require 'puppet-strings/yard/code_objects'
|
@@ -10,8 +12,10 @@ class PuppetStrings::Yard::Handlers::Ruby::DataTypeHandler < PuppetStrings::Yard
|
|
10
12
|
|
11
13
|
process do
|
12
14
|
return unless statement.count > 1
|
15
|
+
|
13
16
|
ruby_module_name = statement[0].source
|
14
17
|
return unless ruby_module_name == 'Puppet::DataTypes' || ruby_module_name == 'DataTypes' # rubocop:disable Style/MultipleComparison This reads better
|
18
|
+
|
15
19
|
object = get_datatype_yard_object(get_name(statement, 'Puppet::DataTypes.create_type'))
|
16
20
|
# Extract the interface definition
|
17
21
|
type_interface = extract_data_type_interface
|
@@ -65,8 +69,10 @@ class PuppetStrings::Yard::Handlers::Ruby::DataTypeHandler < PuppetStrings::Yard
|
|
65
69
|
next false unless node.is_a?(YARD::Parser::Ruby::MethodCallNode) &&
|
66
70
|
node.method_name &&
|
67
71
|
node.method_name.source == 'interface'
|
72
|
+
|
68
73
|
parameters = node.parameters(false)
|
69
74
|
next false unless parameters.count >= 1
|
75
|
+
|
70
76
|
interface_string = node_as_string(parameters[0])
|
71
77
|
next false unless interface_string
|
72
78
|
|
@@ -97,8 +103,10 @@ class PuppetStrings::Yard::Handlers::Ruby::DataTypeHandler < PuppetStrings::Yard
|
|
97
103
|
# @return [YARD::Parser::Ruby::AstNode, nil]
|
98
104
|
def find_ruby_ast_node(ast_node, recurse = false, &block)
|
99
105
|
raise ArgumentError, 'find_ruby_ast_node requires a block' unless block_given?
|
106
|
+
|
100
107
|
is_found = yield ast_node
|
101
108
|
return ast_node if is_found
|
109
|
+
|
102
110
|
if ast_node.respond_to?(:children)
|
103
111
|
ast_node.children.each do |child_node|
|
104
112
|
child_found = find_ruby_ast_node(child_node, recurse, &block)
|
@@ -128,7 +136,7 @@ class PuppetStrings::Yard::Handlers::Ruby::DataTypeHandler < PuppetStrings::Yard
|
|
128
136
|
# Anything else is ignored
|
129
137
|
class LazyLiteralEvaluator
|
130
138
|
def initialize
|
131
|
-
@literal_visitor
|
139
|
+
@literal_visitor = ::Puppet::Pops::Visitor.new(self, "literal", 0, 0)
|
132
140
|
end
|
133
141
|
|
134
142
|
def literal(ast)
|
@@ -136,72 +144,72 @@ class PuppetStrings::Yard::Handlers::Ruby::DataTypeHandler < PuppetStrings::Yard
|
|
136
144
|
end
|
137
145
|
|
138
146
|
# ----- The following methods are different/additions from the original Literal_evaluator
|
139
|
-
def literal_Object(o)
|
147
|
+
def literal_Object(o)
|
140
148
|
# Ignore any other object types
|
141
149
|
end
|
142
150
|
|
143
|
-
def literal_AccessExpression(o)
|
151
|
+
def literal_AccessExpression(o)
|
144
152
|
# Extract the raw text of the Access Expression
|
145
153
|
::Puppet::Pops::Adapters::SourcePosAdapter.adapt(o).extract_text
|
146
154
|
end
|
147
155
|
|
148
|
-
def literal_QualifiedReference(o)
|
156
|
+
def literal_QualifiedReference(o)
|
149
157
|
# Extract the raw text of the Qualified Reference
|
150
158
|
::Puppet::Pops::Adapters::SourcePosAdapter.adapt(o).extract_text
|
151
159
|
end
|
152
160
|
|
153
161
|
# ----- The following methods are the same as the original Literal_evaluator
|
154
|
-
def literal_Factory(o)
|
162
|
+
def literal_Factory(o)
|
155
163
|
literal(o.model)
|
156
164
|
end
|
157
165
|
|
158
|
-
def literal_Program(o)
|
166
|
+
def literal_Program(o)
|
159
167
|
literal(o.body)
|
160
168
|
end
|
161
169
|
|
162
|
-
def literal_LiteralString(o)
|
170
|
+
def literal_LiteralString(o)
|
163
171
|
o.value
|
164
172
|
end
|
165
173
|
|
166
|
-
def literal_QualifiedName(o)
|
174
|
+
def literal_QualifiedName(o)
|
167
175
|
o.value
|
168
176
|
end
|
169
177
|
|
170
|
-
def literal_LiteralNumber(o)
|
178
|
+
def literal_LiteralNumber(o)
|
171
179
|
o.value
|
172
180
|
end
|
173
181
|
|
174
|
-
def literal_UnaryMinusExpression(o)
|
182
|
+
def literal_UnaryMinusExpression(o)
|
175
183
|
-1 * literal(o.expr)
|
176
184
|
end
|
177
185
|
|
178
|
-
def literal_LiteralBoolean(o)
|
186
|
+
def literal_LiteralBoolean(o)
|
179
187
|
o.value
|
180
188
|
end
|
181
189
|
|
182
|
-
def literal_LiteralUndef(o)
|
190
|
+
def literal_LiteralUndef(o)
|
183
191
|
nil
|
184
192
|
end
|
185
193
|
|
186
|
-
def literal_LiteralDefault(o)
|
194
|
+
def literal_LiteralDefault(o)
|
187
195
|
:default
|
188
196
|
end
|
189
197
|
|
190
|
-
def literal_LiteralRegularExpression(o)
|
198
|
+
def literal_LiteralRegularExpression(o)
|
191
199
|
o.value
|
192
200
|
end
|
193
201
|
|
194
|
-
def literal_ConcatenatedString(o)
|
202
|
+
def literal_ConcatenatedString(o)
|
195
203
|
# use double quoted string value if there is no interpolation
|
196
204
|
throw :not_literal unless o.segments.size == 1 && o.segments[0].is_a?(Model::LiteralString)
|
197
205
|
o.segments[0].value
|
198
206
|
end
|
199
207
|
|
200
|
-
def literal_LiteralList(o)
|
208
|
+
def literal_LiteralList(o)
|
201
209
|
o.values.map { |v| literal(v) }
|
202
210
|
end
|
203
211
|
|
204
|
-
def literal_LiteralHash(o)
|
212
|
+
def literal_LiteralHash(o)
|
205
213
|
o.entries.reduce({}) do |result, entry|
|
206
214
|
result[literal(entry.key)] = literal(entry.value)
|
207
215
|
result
|
@@ -275,8 +283,10 @@ class PuppetStrings::Yard::Handlers::Ruby::DataTypeHandler < PuppetStrings::Yard
|
|
275
283
|
# Find param tags with a type that is different from the actual definition
|
276
284
|
object.tags(:param).reject { |tag| tag.types.nil? }.each do |tag|
|
277
285
|
next if actual_params_hash[tag.name].nil?
|
286
|
+
|
278
287
|
actual_data_type = actual_params_hash[tag.name][:types]
|
279
288
|
next if actual_data_type.nil?
|
289
|
+
|
280
290
|
log.warn "The @param tag for '#{tag.name}' has a different type definition than the actual attribute near #{object.file}:#{object.line}." if tag.types != actual_data_type
|
281
291
|
end
|
282
292
|
|
@@ -290,6 +300,7 @@ class PuppetStrings::Yard::Handlers::Ruby::DataTypeHandler < PuppetStrings::Yard
|
|
290
300
|
# Set the type in the param tag
|
291
301
|
object.tags(:param).each do |tag|
|
292
302
|
next if actual_params_hash[tag.name].nil?
|
303
|
+
|
293
304
|
tag.types = actual_params_hash[tag.name][:types]
|
294
305
|
end
|
295
306
|
end
|
@@ -311,10 +322,13 @@ class PuppetStrings::Yard::Handlers::Ruby::DataTypeHandler < PuppetStrings::Yard
|
|
311
322
|
# Functions with the wrong return type
|
312
323
|
object.meths.each do |meth|
|
313
324
|
next unless actual_func_names.include?(meth.name.to_s)
|
325
|
+
|
314
326
|
return_tag = meth.docstring.tag(:return)
|
315
327
|
next if return_tag.nil?
|
328
|
+
|
316
329
|
actual_return_types = [actual_functions_hash[meth.name.to_s][:return_type]]
|
317
330
|
next if return_tag.types == actual_return_types
|
331
|
+
|
318
332
|
log.warn "The @return tag for '#{meth.name}' has a different type definition than the actual function near #{object.file}:#{object.line}. Expected #{actual_return_types}"
|
319
333
|
return_tag.types = actual_return_types
|
320
334
|
end
|
@@ -329,6 +343,7 @@ class PuppetStrings::Yard::Handlers::Ruby::DataTypeHandler < PuppetStrings::Yard
|
|
329
343
|
# Add the return type for the methods if missing
|
330
344
|
object.meths.each do |meth|
|
331
345
|
next unless meth.docstring.tag(:return).nil?
|
346
|
+
|
332
347
|
meth.docstring.add_tag(YARD::Tags::Tag.new(:return, '', actual_functions_hash[meth.name.to_s][:return_type]))
|
333
348
|
end
|
334
349
|
|
@@ -336,6 +351,7 @@ class PuppetStrings::Yard::Handlers::Ruby::DataTypeHandler < PuppetStrings::Yard
|
|
336
351
|
object.meths.each do |meth|
|
337
352
|
validate_function_method!(object, meth, actual_functions_hash[meth.name.to_s])
|
338
353
|
next unless meth.docstring.tag(:return).nil?
|
354
|
+
|
339
355
|
meth.docstring.add_tag(YARD::Tags::Tag.new(:return, '', actual_functions_hash[meth.name.to_s][:return_type]))
|
340
356
|
end
|
341
357
|
|