Move parser functions into a PuppetNamespace
Seperate Puppet parser functions out into a PuppetNamespace so they are no longer listed with the Ruby methods.
This commit is contained in:
		
							parent
							
								
									32d69848e1
								
							
						
					
					
						commit
						1b8cc98118
					
				| 
						 | 
					@ -1,16 +1,18 @@
 | 
				
			||||||
# This utility library contains some tools for working with Puppet docstrings.
 | 
					# This utility library contains some tools for working with Puppet docstrings.
 | 
				
			||||||
require 'puppet/util/docs'
 | 
					require 'puppet/util/docs'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
require_relative 'base'
 | 
					require_relative '../code_objects'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
module Puppetx::Yardoc::YARD::Handlers
 | 
					module Puppetx::Yardoc::YARD::Handlers
 | 
				
			||||||
  class ParserFunctionHandler < YARD::Handlers::Ruby::Base
 | 
					  class ParserFunctionHandler < YARD::Handlers::Ruby::Base
 | 
				
			||||||
 | 
					    include Puppetx::Yardoc::YARD::CodeObjects
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    handles method_call(:newfunction)
 | 
					    handles method_call(:newfunction)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    process do
 | 
					    process do
 | 
				
			||||||
      name, options = process_parameters
 | 
					      name, options = process_parameters
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      obj = MethodObject.new(:root, name)
 | 
					      obj = MethodObject.new(function_namespace, name)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      register obj
 | 
					      register obj
 | 
				
			||||||
      if options['doc']
 | 
					      if options['doc']
 | 
				
			||||||
| 
						 | 
					@ -26,6 +28,20 @@ module Puppetx::Yardoc::YARD::Handlers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private
 | 
					    private
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Returns a {PuppetNamespaceObject} for holding functions. Creates this
 | 
				
			||||||
 | 
					    # object if necessary.
 | 
				
			||||||
 | 
					    #
 | 
				
			||||||
 | 
					    # @return [PuppetNamespaceObject]
 | 
				
			||||||
 | 
					    def function_namespace
 | 
				
			||||||
 | 
					      # NOTE: This tricky. If there is ever a Ruby class or module with the
 | 
				
			||||||
 | 
					      # name ::ParserFunctions, then there will be a clash. Hopefully the name
 | 
				
			||||||
 | 
					      # is sufficiently uncommon.
 | 
				
			||||||
 | 
					      obj = P(:root, 'ParserFunctions')
 | 
				
			||||||
 | 
					      ::YARD::Registry.register PuppetNamespaceObject.new(:root, 'ParserFunctions') if obj.is_a?(Proxy)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      obj
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # NOTE: The following methods duplicate functionality from
 | 
					    # NOTE: The following methods duplicate functionality from
 | 
				
			||||||
    # Puppet::Util::Reference and Puppet::Parser::Functions.functiondocs
 | 
					    # Puppet::Util::Reference and Puppet::Parser::Functions.functiondocs
 | 
				
			||||||
    #
 | 
					    #
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,7 +6,7 @@ require 'yard'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class YARD::CLI::Yardoc
 | 
					class YARD::CLI::Yardoc
 | 
				
			||||||
  def all_objects
 | 
					  def all_objects
 | 
				
			||||||
    YARD::Registry.all(:root, :module, :class, :hostclass, :definedtype)
 | 
					    YARD::Registry.all(:root, :module, :class, :puppetnamespace, :hostclass, :definedtype)
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,8 @@
 | 
				
			||||||
 | 
					<li>
 | 
				
			||||||
 | 
					  <a class='toggle'></a>
 | 
				
			||||||
 | 
					  <%= link_object(P(:root, 'ParserFunctions'), 'Parser Functions', nil, false) %>
 | 
				
			||||||
 | 
					  <small class='search_info'>ParserFunctions</small>
 | 
				
			||||||
 | 
					</li>
 | 
				
			||||||
 | 
					<ul>
 | 
				
			||||||
 | 
					  <%= namespace_list(:root => P(:root,'ParserFunctions'), :namespace_types => [:puppetnamespace, :method]) %>
 | 
				
			||||||
 | 
					</ul>
 | 
				
			||||||
| 
						 | 
					@ -15,6 +15,18 @@ def generate_puppet_manifest_list
 | 
				
			||||||
  generate_list_contents
 | 
					  generate_list_contents
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def generate_puppet_plugin_list
 | 
				
			||||||
 | 
					  # NOTE: PuppetNamaspaceObject might eventually be used for more than just a
 | 
				
			||||||
 | 
					  # container for plugins...
 | 
				
			||||||
 | 
					  @items = options.objects.select{|o| [:puppetnamespace].include? o.type} if options.objects
 | 
				
			||||||
 | 
					  @list_title = "Puppet Plugin List"
 | 
				
			||||||
 | 
					  # This is important. It causes some YARD JavaScript bits to hook in and
 | 
				
			||||||
 | 
					  # perform the correct formatting.
 | 
				
			||||||
 | 
					  @list_class = "class"
 | 
				
			||||||
 | 
					  @list_type = "puppet_plugin"
 | 
				
			||||||
 | 
					  generate_list_contents
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# A hacked version of class_list that can be instructed to only display certain
 | 
					# A hacked version of class_list that can be instructed to only display certain
 | 
				
			||||||
# namespace types. This allows us to separate Puppet bits from Ruby bits.
 | 
					# namespace types. This allows us to separate Puppet bits from Ruby bits.
 | 
				
			||||||
def namespace_list(opts = {})
 | 
					def namespace_list(opts = {})
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2,7 +2,7 @@
 | 
				
			||||||
# @objects_by_letter prevents that. Submit a pull request.
 | 
					# @objects_by_letter prevents that. Submit a pull request.
 | 
				
			||||||
def index
 | 
					def index
 | 
				
			||||||
  @objects_by_letter = {}
 | 
					  @objects_by_letter = {}
 | 
				
			||||||
  objects = Registry.all(:class, :module, :hostclass, :definedtype).sort_by {|o| o.name.to_s }
 | 
					  objects = Registry.all(:class, :module, :puppetnamespace, :hostclass, :definedtype).sort_by {|o| o.name.to_s }
 | 
				
			||||||
  objects = run_verifier(objects)
 | 
					  objects = run_verifier(objects)
 | 
				
			||||||
  objects.each {|o| (@objects_by_letter[o.name.to_s[0,1].upcase] ||= []) << o }
 | 
					  objects.each {|o| (@objects_by_letter[o.name.to_s[0,1].upcase] ||= []) << o }
 | 
				
			||||||
  erb(:index)
 | 
					  erb(:index)
 | 
				
			||||||
| 
						 | 
					@ -10,6 +10,7 @@ end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def menu_lists
 | 
					def menu_lists
 | 
				
			||||||
  [
 | 
					  [
 | 
				
			||||||
    {:type => 'puppet_manifest', :title => 'Puppet Manifests', :search_title => "Puppet Manifest List"}
 | 
					    {:type => 'puppet_manifest', :title => 'Puppet Manifests', :search_title => "Puppet Manifest List"},
 | 
				
			||||||
 | 
					    {:type => 'puppet_plugin', :title => 'Puppet Plugins', :search_title => "Puppet Plugin List"}
 | 
				
			||||||
  ] + super
 | 
					  ] + super
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					include T('default/module/html')
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,7 @@
 | 
				
			||||||
 | 
					include T('default/module')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def init
 | 
				
			||||||
 | 
					  sections :header, :box_info, :pre_docstring, T('docstring'),
 | 
				
			||||||
 | 
					    :method_summary, [:item_summary],
 | 
				
			||||||
 | 
					    :method_details_list, [T('method_details')]
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
		Loading…
	
		Reference in New Issue