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:
parent
1b275a4926
commit
a051319b34
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue