RDoc, gems, and documentation for dynamically generated constants

D

Daniel Berger

Hi,

I've got a library that dynamically generates constants the moment
it's loaded. It looks something like this at the top of the file:

['ALPHA', 'BETA', 'GAMMA'].each{ |name|
Dir.const_set(name, 1)
}

The problem is that the constants aren't documented at all when the
gem is installed. I'd like to be able to document those constants for
rubygems so that, when the library is installed I can attach a comment
to each constant.

I tried something like this:

require 'rdoc/constant'

['ALPHA', 'BETA', 'GAMMA'].each{ |name|
Dir.const_set(name, 1)
RDoc::Constant.new(name, 1, "Dynamically generated constant #
{name}")
}

But that doesn't work because rubygems doesn't actually require the
file, it just parses it, so the RDoc::Constant objects are never
generated (I think).

What's the best way to handle this, assuming it's possible?

Regards,

Dan
 
E

Eric Hodel

I've got a library that dynamically generates constants the moment
it's loaded. It looks something like this at the top of the file:

['ALPHA', 'BETA', 'GAMMA'].each{ |name|
Dir.const_set(name, 1)
}

The problem is that the constants aren't documented at all when the
gem is installed. I'd like to be able to document those constants for
rubygems so that, when the library is installed I can attach a comment
to each constant.

I tried something like this:

require 'rdoc/constant'

['ALPHA', 'BETA', 'GAMMA'].each{ |name|
Dir.const_set(name, 1)
RDoc::Constant.new(name, 1, "Dynamically generated constant #
{name}")
}

But that doesn't work because rubygems doesn't actually require the
file, it just parses it, so the RDoc::Constant objects are never
generated (I think).

What's the best way to handle this, assuming it's possible?

I added support for "ghost" methods to the ruby parser in RDoc, the
same would need to be added to support constants this way.

you can search around the source for GhostMethod to get an idea, and
I'll be on IRC later today to help you out (or whenever).

It's not too difficult a feature to add, there's tests you can copy,
too.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Members online

Forum statistics

Threads
473,756
Messages
2,569,533
Members
45,007
Latest member
OrderFitnessKetoCapsules

Latest Threads

Top