Clobber YARD namespace proxies

When creating an object, YARD will split the object name using `::` and
recursively create proxy namespaces for each component. Unfortunately this
process is optimized for Ruby and somewhat mangles Puppet code as Puppet class
names are not capitalized.

For now, dispense with this behavior by implementing `HostClassObject.new`.
This commit is contained in:
Charlie Sharpsteen 2014-05-26 17:55:43 -07:00
parent 1b275a4926
commit a051319b34
1 changed files with 24 additions and 1 deletions

View File

@ -5,6 +5,29 @@ require_relative '../../../yardoc'
module Puppetx::Yardoc::YARD::CodeObjects module Puppetx::Yardoc::YARD::CodeObjects
class HostClassObject < YARD::CodeObjects::NamespaceObject class HostClassObject < YARD::CodeObjects::NamespaceObject
# Nothing to see here yet... # The `YARD::Codeobjects::Base` class pulls a bunch of shenanigans to
# insert proxy namespaces. Unfortunately, said shenanigans pick up on the
# `::` in Puppet names and start to mangle things based on rules for the
# Ruby language.
#
# Therefore, we must override `new` for great justice.
#
# TODO: Ask around on the YARD mailing list to see if there is a way around
# this ugliness.
#
# Alternately, consider ensuring all `proxy` objects resolve to a
# placeholder `NamespaceObject` as the name mangling behavior of these is
# easier to control.
def self.new(namespace, name, *args, &block)
# Standard Ruby boilerplate for `new`
obj = self.allocate
obj.send :initialize, namespace, name, *args
# The last bit of `YARD::CodeObjects::Base.new`.
existing_obj = YARD::Registry.at(obj.path)
obj = existing_obj if existing_obj && existing_obj.class == self
yield(obj) if block_given?
obj
end
end end
end end