Randy W. Sims wrote:
> Jamis Buck wrote:
> 
>> Randy W. Sims wrote:
>>
>>> Are there any Ruby modules that allow documentation to act as source 
>>> code? I was thinking of the problem of how souce code sometimes 
>>> diverge from its documentation. So maybe there could be a way to 
>>> specify the interface: the number of arguments and their types in the 
>>> documentation, and possibly pre- and post-conditions, and then the 
>>> documentation would be turned into code at runtime. I guess this 
>>> would be implemented something like Perl's source filters[1]. 
>>> Possibly some constants and such could be defined this way as well, 
>>> version numbers, etc.
>>>
>>> I'm not sure if this is a good idea or not; I haven't completely 
>>> thought it through. It seems like I've read about this being done 
>>> before in some other langage, but a brief search hasn't turned up 
>>> anything.
>>>
>>
>> I haven't seen it done in Ruby, but the general idea is called 
>> "literate programming". If you google for that term, you'll find lots 
>> of information.
> 
> 
> Doh! That's the term I've been trying to think of. Thanks.
> 
>> I'm not a big supporter of the idea, though I've never done more than 
>> tinker with it. I'd be curious to see what you come up with if you do 
>> find a way to do it in Ruby, though.
> 
> 
> I'm not looking for anything comprehensive. Just something to reduce the 
> redundencies that often exist at least for the common cases. Just small 
> stuff like (if you'll forgive a perl example, I'm more familiar with it) 
> perl modules often declare a version:
> 
> our $VERSION = 1.03;
> 
> Then somewhere else in the POD documents, you'd have:
> 
> =head1 VERSION
> 
>   blah blah version 1.03
> 
> =cut
> 
> So anytime you change the version, you have to remember to change it in 
> multiple places. Ideally, you could just change the docs.
> 
> This is mostly just a curiosity at the moment. I just thought I'd ask if 
> anything like that was available that I could play with.
> 
> Randy.
> 
Only for this special case, you could use
# blah blah blah
# This is
VERSION = '1.03'
# blah blah blah.

Which is quite readable and valid ruby code.

regards

Brian

-- 
Brian Schröäer
http://ruby.brian-schroeder.de/