Hi all.

I would like to have a name-space for my new module.
Some of you have seen my talk at YAPC::Europe, demonstrating my
script which produces POD and HTML manual pages from pseudo POD.
I am working on a rewrite of my hack script into a decent module.

* Why?

I have a few modules which are quite large.  Typically all Perl modules
which use OO grow larg very fast, where each class is a separate package.
POD is sufficient to document all these packages separately, however OO
packages have relations which are very hard to maintain in POD.

Example: one of my modules has classes which extend four levels of
inheritance.  When someone wants to use my class, he/she either needs
to collect the information about the class in 5 manual pages or the
package mantainer has to copy all changes made on the lower level of
inheritance into all extensions.  I have done the last for some time,
but that is very error-prone and time consuming.

* How?

POD is a visual markup language, and therefore information is lost
about what is being documented.  My syntax adds keywords like "=method",
"=function", and "=overload" to what POD has.  It helps a lot with
doumenting named parameters.

  =chapter METHODS

  =method add OPTIONS
  Add an element to the list.

  =option  fast BOOLEAN
  =default fast <false>
  Synchronize immediately, or is it permitted to add it later.

  =requires item OBJECT
  The item to be added to the list

  =examples
   $list->add(item => $item, fast => 1);
   $list->add(item => $item);

  =error You cannot add an $type to the list
  The item of $type can not be added to the list, which contains other types.

  =error No item specified
  A call to add() without arguments.

  =cut

  sub add() {....

When the module is distributed, all docs are taken from the manual-pages.
They are expanded over the levels of inheritance, grouped, sorted,
reformated.  It produces real POD pages and an HTML website.  HTML is
in this case not derived from POD, but generated separately so it can
be of more help looking for the right functionality.

I don't want to go too much deeper in the description of how it works:
see the man-pages when they become available.  See an example of the
output of my current hack on http://perl.overmeer.net/mailbox/html/
and the POD pages in the distributions of Mail::Box and User::Identity.

* Name-space

I tried to attract some response from the podpeople mailing list about
my ideas and for a choice of name-space, but it did not really work.
So I have to give it a try myself.

Considering that:
 * the new module is quite large (already 15 classes, 4000 lines, which
   will certainly grow another 100%)
 * the module is simply extendible with your own documentation syntax
   (finally people can document their program in XML - Johan?)
 * the module is simply extendible with your own doc producer (starts
   off with my own POD and HTML needs)
 * the syntax is certainly not "Plain Old" anymore, but "Powerful OO"
 * the tags start with '=' so perl scripts do run unstripped.
 * one of the parsers could be `POD', so the current POD does not cover
   the basic functionality of my module.

I came to the name
 * OODoc:  Object Oriented Documentation
   which results in package names like
      OODoc::Manual
      OODoc::Text::Example

I have considered a few other names, for instance
 * POD::OO, but it is not really POD although it has some simularities.
            So: it is not an Object Oriented POD at all.
 * OOPOD, PODOO, POD::Logical... same reason
 * NPND     not-so-plain new document format?
 * PerlDoc  which is too close to perldoc(1), but sounds like JavaDoc
 * OODF     object oriented document format
 * POD6     this name suggests a great future!  If we supply an automatic
            conversion, all syntax changes are permitted!  ;-b

Please grant me "OODoc".  I hope to release the first (but already
very powerful) implementation within a month.
-- 
               MarkOv       %-]

------------------------------------------------------------------------
drs Mark A.C.J. Overmeer                                MARKOV Solutions
       [EMAIL PROTECTED]                          [EMAIL PROTECTED]
http://Mark.Overmeer.net                   http://solutions.overmeer.net

Reply via email to