michael.vancann...@wisa.be schrieb:

2. Try to separate things. You coded a change in package selection handling, please don't mix this with the change for writing a package file. It makes it more difficult to debug when bugs arise.

How can I create patches for different topics, when the whole application only works after all required changes have been implemented together?

Selection of the package should be separate from that IMHO, if not, there is
an error in your logic.

In this case I'd search the error in the existing logic. Projects are a recent extension to fpdoc, which has not even been tested thorougly. That's why there are many places in the code, which deserve a reconsideration of the current model and procedures.


This suggests to me to use 2 file lists, for the descriptions and *also* for the input (source) files. But IMO the list of description files could be dropped entirely, when fpdoc simply searches for an XML file for every given source unit, in the current or a given documentation directory. It's useless to enumerate the XML files, when documentation is created only for the given input files.

Then you misunderstand how fpdoc reads files.

1. It's perfectly possible for a single XML file to contain documentation for several units. Practically, it means 1 XMl file can contain many <package> and <module> nodes. That I decided to use 1 XML file per unit is pure coincidence. Vice versa, the documentation for 1 unit can be split over 2 XML files. fpdoc will merge them.

This IMO is not very practical, not supported e.g. by LazDE. In contrast it were more practical to *split* documentation, so that e.g. large classes can be documented in their own file. I never tested whether fpdoc could deal with such files as well...

Since there is no 1-1 relation, the description files must be enumerated.

In either case an enumeration of the XML files in the documentation directories would be sufficient. Fpdoc already ignores all documentation, for which no source files are given. When memory usage is of concern, the excess modules can be deleted in the DOM tree.


2. The input file can contain a limited number of compiler options
'-DSomething'. Therefor, it cannot be used to determine the filename
(unless you start parsing it)

I'm not sure whether a description file is required *before* an input file is being or has been parsed. It also looks somewhat expensive to me, when *all* description files have to be loaded before the unit specific documentation can be created, because fpdoc has to search *all* description files for an matching module name.

IMO it were much more handy when the names of the description file(s) would become an attribute of every input file, so that they can be loaded on demand. When no such XML attribute exists, as is, a fallback to the current search procedure can be used. For the current commandline usage the description file could be added to the input specification, perhaps as a new option -D<descr.xml>.



Currently, the fpdoc.pp source file only contains code which is useful in a command-line enironment: it is a TCustomApplication class descendant which
collects command-line arguments and passes them on to the objects that do
the actua work. It contains no other logic.

Consider the implementation of a stand-alone tool, that takes a commandline and creates an fpdoc project from it - this is what I just tried. When both the application class definition *and* its use reside in the program file, its impossible to select a derived application class, that performs an specific task or extends the functionality.

All code doing the actual work is in the other units, ready for re-use by a GUI environment, or any other command-line tool you care to create.

This is not true - see what e.g. TFPDocApplication.CreateDocumentation does.

begin
  With TFPDocAplication.Create(Nil) do
    try
      Run;
    finally
      Free;
    end;
end.

When this were the *only* code in the fpdoc program file, another project could create a derived class, with a possibly specialized Run method, without touching the declaration or implementation of TFPDocApplication.

DoDi

_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to