Commit Graph

12 Commits

Author SHA1 Message Date
Charlie Sharpsteen 1d81aacf5a Recurse into 4.x functions and process dispatches
This patch recurses into any `create_function` block and processes any
`dispactch` blocks contained within. The implementation assumes docstrings will
be provided as a comment block, but this is just a temporary placeholder.

Idealy, the contents of the `dispatch` block would be processed to produce an
`@override` tag for 4.x functions.
2014-08-06 14:59:27 -07:00
Charlie Sharpsteen e56842bc1b Add handler for future parser functions
All Future Parser functions are documented using a standard YARD comment block.
This commit adds a new code object that watches for `create_function` and
generates a YARD `CodeObject::MethodObject` containing the docstring.
2014-08-06 14:56:37 -07:00
Charlie Sharpsteen 752b5e9d0f Register PuppetFunctions with handler method
Use the `register` method of YARD handler objects instead of calling
`YARD::Registry.register` as the latter does not seem to work properly.
2014-06-19 16:32:28 -07:00
Charlie Sharpsteen 918e3bc9cc Tag all functions with @api public
The Puppet Core uses a `.yardopts` file that hides all docstrings that do not
have an API tag. This patch is a hack that allows `puppet yardoc` to extract
documentation for parser functions shipped in the core.

FIXME: This isn't the right way to solve the problem. The right way to solve
the problem is to adjust the Puppet `.yardopts` file to a sane value.
2014-06-19 16:31:58 -07:00
Charlie Sharpsteen 1b8cc98118 Move parser functions into a PuppetNamespace
Seperate Puppet parser functions out into a PuppetNamespace so they are no
longer listed with the Ruby methods.
2014-06-12 21:21:11 -07:00
Charlie Sharpsteen c1217912dd Add custom YARD handler for parser functions
This handler triggers on all occurrences of `newfunction` and parses the
parameters passed to that method in order to generate documentation. The
implementation is a good experiment in extracting documentation without
evaluating Ruby code. However, the generality of this approach may ultimately
be doomed by the use of metaprogramming in custom Types and Providers.
2014-06-05 21:40:17 -07:00
Charlie Sharpsteen 9cd4fd14a9 Extend doc generation to defined types
Puppet Yardoc now generates documentation for defined types in addition to host
classes. The actual change was fairly small, however this patch is quite large
as most of the host class bits were re-architected to inherit from defined
types. Host classes are basically the same as defined types with the addition
of inheritance. Pops also models Host Class using a similar inheritance
relationship.
2014-05-30 09:28:25 -07:00
Charlie Sharpsteen 005a8521bd Extract class parameters from parser output
Re-worked the YARD transformer and handlers to attach parameters to the
resulting code objects. Some architectural debt was incurred in the interests
of producing a working prototype quickly.
2014-05-28 23:53:12 -07:00
Charlie Sharpsteen d8bc2f3dce Display inheritance relationships for host classes 2014-05-26 22:36:22 -07:00
Charlie Sharpsteen e3d2602cba Move Puppet classes into a custom namespace
Instead of documenting Puppet classes using `ClassObject`, use a custom
subclass of `NamespaceObject`. This is done because Puppet classes are not Ruby
classes and will have components that don't fit into the model offered by
`ClassObject`.

This commit also adds a couple of monkey patches to integrate the new
`:hostclass` into YARD tooling and the beginnings of some custom templating.
2014-05-25 22:59:46 -07:00
Charlie Sharpsteen b4e2ed0e5c Re-work require statements
Use `require_relative` for all components under Puppetx. This makes it possible
to load `pupetx/yardoc/yard/plugin` outside of Puppet as a YARD plugin.

Also fix the `yardoc` face so that Puppetx bits are loaded _after_ feature
checks.
2014-05-24 16:46:37 -07:00
Charlie Sharpsteen c56bc426be Add simple handlers
Add a base handler class and a handler that processes `HostClassDefinition`
instances.
2014-05-22 23:45:08 -07:00