Examples of command-line usage
These are CommandLine examples for PasDoc.
Simple examples
Create documentation using the default settings
pasdoc someunit.pas
-
someunit.pas will be searched in the current directory
-
verbosity is set to 2
-
no conditionals are defined
-
include files will be only found if located in the current directory
-
title will be empty
-
output format will be HTML
-
output path will be current directory
-
language will be English
-
any comment in the source will be used for the documentation
-
filenames will be generated using the form unit.type.html
-
member visibility will be set to protected,public,published,automated
Create documentation in German
pasdoc --language de someunit.pas
like above, but documentation will be in German. Of course this only applies to the parts of it generated by PasDoc, your comments will not be translated.
Create documentation in a subdirectory
pasdoc --output documentation someunit.pas
This will generate the html files in the subdirectory "documentation". The directory must already exist for this to work.
Use only ** style comments
pasdoc --staronly someunit.pas pasdoc --marker=** someunit.pas
These two commands are equivalent.
PasDoc will generate documentation only from the comments
starting with {**
, (***
and //**
. Other comments are ignored.
Use a different comment marker
pasdoc --marker=: someunit.pas
This will generate documentation only from comments starting with //:
,
{:
or (*:
so any normal comments are ignored. This makes
PasDoc compatible with some other similar tools like
Time2Help.
Ignore a comment marker
pasdoc --marker=: --marker-optional someunit.pas
This will not require the marker : but rather use any comment and discard any leading :. Use this if you want to include any comments in the source code but without having an annoying : in front of each comment.
Search for include files in path
pasdoc --include ~/include someunit.pas pasdoc --include c:/include someunit.pas
The first example will search for include files in the subdirectory "include" of your home directory (under Linux of course).
The second example will search for include files in the directory "c:\include".
Multiple include directives
pasdoc --include /usr/local/include --include ~/include someunit.pas
PasDoc will in this case search for include files in all directories in the order they are specified.
Complex examples
Johannes example
Here is a script that I use for one project:
PasDoc \ --output=doc/ \ --write-uses-list \ --visible-members=protected+ \ `find source/ -iname '*.pas'` \ --abbreviations=AUTHORS \ '--marker=**' \ --marker-optional \ "--title=My Great Project" \ $@
Lets go through this. First of all, you must know that this is a bash script, so the backslash at the end of the line just means to continue in the next line with parameters. The $@ means that parameters passed to this script are added at that point to the PasDoc parameters.
I want to use this for internal documentation, so I add protected
members to the output using --visible-members=protected+. The find
source/ -iname '*.pas'
part is a Linux command to find all
files named '*.pas'.
In my code, I use things like @author(johannes)` or @cvs($Author$) and therefore use an abbreviations file, it contains the following line:
johannes Johannes Berg <my@email.here>
I imported some code into this project that used '**' as a marker, I do
not use any marker, so I just want to ignore the ** markers, and put it
as a marker together with --marker-optional
.
The title is in quotes completely because it contains spaces.
Fr0sT-Brutal example
Here is setup that I use for my project. It is tuned for the best
possible natural look - minimum of special marks, usual //
comments
style, Markdown formatting.
pasdoc.opt
file
name=SChannel helper title=SChannel helper format=html auto-abstract auto-link auto-link-exclude=$CFG_PATH\autolink-excl define=MSWINDOWS markdown ignore-marker= ~~ ignore-marker=TODO auto-back-comments visible-members=public,published,automated implementation-comments=join output=$CFG_PATH\docs
autolink-excl
file
find create destroy get add delete count clear push init fin stage secure shutdown
run.bat
file
@ECHO OFF SETLOCAL SET CDir=%~dp0% SET PasDoc=D:\Coding\PasDoc\pasdoc.exe CALL "%PasDoc%" "@%CDir%\pasdoc.opt" "%CDir%\..\IcsSChannelSocket.pas" "%CDir%\..\SChannel.*.pas" || PAUSE
Here I use PasDoc’s ability to take options from file which is enabled by
"@%optfilename%"
argument.
Let’s examine non-trivial options inside:
-
auto-link
- I want to auto generate cross-links for all identifiers… -
auto-link-exclude=$CFG_PATH\autolink-excl
- …but ignore some common words used for naming of some identifiers -
define=MSWINDOWS
- consider compiler defineMSWINDOWS
is set to include conditional regions -
markdown
- comments are formatted using Markdown -
ignore-marker= ~~
- comments starting with space-and-double-tilda (// ~~
) are skipped so I can use them for structuring:
// ~~ Init utils - usually not to be called by user ~~ // Mainly for internal use procedure ...; ... // ~~ Global init and fin ~~ // Load global stuff procedure Init; ... // ~~ Session init and fin ~~ // Init the session procedure InitSession; ...
-
ignore-marker=TODO
- comments that look like//TODO
are ignored as well -
auto-back-comments
- one-line comments after an identifier are considered linked to that identifier without additional special char<
-
visible-members=public,published,automated
- visibility of members for public docs -
implementation-comments=join
- join comments taken from interface and implementation sections of a unit allowing having both brief description at the beginning and full specification inside.
interface // Function to prepare all necessary handshake data. No transport level actions. // @raises ESSPIError on error function DoClientHandshake(var SessionData: TSessionData; var HandShakeData: THandShakeData): SECURITY_STATUS; implementation { Function to prepare all necessary handshake data. No transport level actions. @param SessionData - [IN/OUT] record with session data @param HandShakeData - [IN/OUT] record with handshake data @raises ESSPIError on error ... very long description } function DoClientHandshake(var SessionData: TSessionData; var HandShakeData: THandShakeData): SECURITY_STATUS;
Check the generated docs here
PasDoc autodoc
PasDoc sources are parsed by PasDoc itself. Resulting documentation is available for viewing on PasDocAutoDoc page. You can see how this is done in PasDoc sources in source/autodoc/Makefile.