On Fri, 16 Dec 2011, Hans-Peter Diettrich wrote:
When MakeSkel shall use FPDoc projects, this can be achieved by adding
something like:
procedure LoadProject(const Arg: string);
begin
ProjectName := Arg;
Project := TFPDocProject.Create(Nil); //owner component?
With TXMLFPDocOptions.Create(Project) do
try
LoadOptionsFromFile(Project,Arg);
if (PackageName = '') and (Project.Packages.Count > 0) then
PackageName := Project.Packages[0].Name;
finally
Free;
end;
end;
Handling of the InputFiles and DescrFiles can be added similar to above
handling of the (default) PackageName, e.g.
if assigned(Project) then
//the package *must* be part of the project
Pkg := Project.Packages.FindPackage(PackageName)
else
Pkg := nil; //project not usable
if assigned(Pkg) then begin
InputFiles.Assign(Pkg.Inputs);
DescrFiles.Assign(Pkg.Descriptions);
//extract further options?
end;
DocumentPackage(...)
Since new description files should be added to the project, I'd suggest that
MakeSkel uses a Project and the lists as stored in it, instead of the
InputFiles and DescrFiles variables. This change only affects the program
code, which passes these lists to DocumentPackage.
Then the created skeletons can be added to the DescrFiles list, and the
updated project can be saved on exit.
I don't think this is good. makeskel creates a diff, you should not add this to the
list of files; instead, after it was created, it should be merged with the original file.
Furthermore it should be possible to process a single module from a project
package, for which e.g. a skeleton shall be created, or which should be
checked for errors by fpdoc. This requires that the --input value selects one
of the input files in the project. This can be simplified by splitting the
InputFile strings, into File and Options parts, as is already done in the
project files. The stringlist representation could e.g. look like
<file>=<options>, so that IndexOfName can be used to select an entry, and the
"=" is replaced by an space before the entry is passed to the worker code.
Then also another option --unit=<unit-name> can be used to select the
specific input file to process. Then the stringlist representation also can
be changed to <unit-name>=<existing --input descriptor>, and
Values[<unit-name>] can be passed to the worker code.
No. You forget that the coupling with unit names does not exist.
Currently FPDoc scans the commandline for a project first, before parsing the
other options. This extra handling could be removed, with the effect that
options before the --project option are defaults, which are overridden by the
project settings, while options after --project override the project
settings. This consideration applies to all programs, which accept an fpdoc
project.
Well, I don't like the fact that order of command-line options is important.
Given that, I don't see how you can avoid scanning for a project first.
Michael.
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel