Releases: pasdoc/pasdoc
Release list
Release 1.0.4: Fix parsing TSimpleMap<T>=class
This release adds one small bugfix for #248 :
- Fix parsing
TSimpleMap<T>=class, without a space between>and=(Michalis)
Latest release (Auto-Updated Snapshot)
This is the absolutely latest version (automatically build from the latest commit) of the PasDoc.
See our Change log for a list of new features / fixes.
Note: Ignore the date of this release shown by GitHub, which may be far in the past. This snapshot release is being constantly updated, based on the commits to the "master" branch. The files available to download here always reflect the very latest code version.
Fixed HTML Help
Big 1.0.0 release with many features and fixes: modern HTML look, show source position, visibility of membes toggleable, show inherited members...
We are proud to announce the release of PasDoc 1.0.0!
It's been 5 years since the previous release, and we have a lot of new features and fixes to share. We addressed some long-standing plans (like modernized HTML output look), we tested PasDoc understanding on some big codebases (like Delphi source code and FPC RTL). As such, we feel this release deserves a big grand 1.0.0 version number. Enjoy!
Download the latest release from our website where you will also find all the usage documentation.
If you have any feedback use our discussion forum and please report any bugs.
Most notable new features
- Show source code position/link.
- Modern look based on Bootstrap and more mobile-friendly.
- Visibility of members can be toggled by a checkbox.
- Show inherited members.
- Automatic abstract is now default.
- Show ancestor description for a method or class, when it misses its own description.
- Ability to
@linkto specific overloaded routines, like@link(Foo(String,Integer)). See @link tag docs. - Much more complete expression evaluation for
$if/$elseif. See details what is supported here. - Many parser extensions to be complete and handle really every Pascal source code in the wild. As an ultimate test before release, we tested parsing Delphi source code and parsing FPC RTL (and made numerous fixes to plug all the missing edge-cases). See also discussion thread.
All new features and bugfixes
-
Make automatic abstract (previously activated by
--auto-abstract) enabled by default, and add--no-auto-abstractto disable it. See abstract description docs and discussion thread (Michalis) -
Show inherited members of a class using --inherited-members, see also discussion thread (Michalis)
-
Support for linking to arbitrary qualified type identifiers, like
TMyClass.TMyNestedClass.TAnotherNestedClass.TOriginalTypeandMyUnit.TMyClass.TMyNestedClass.TAnotherNestedClass.TOriginalType(Michalis) -
If the type alias doesn't have a special description, we show the description from the type it aliases. Also parsing strong type aliases (with the
typekeyword) implemented. (Johann Elsass aka circular17, Michalis) -
You can include some visibility members in a state "hidden by default" in the HTML output, and let user click on a checkbox (implemented using JS) to show them. Indicate the "included but hidden by default" visibility levels by
?suffix in--visible-membersoption, like--visible-members=public,protected?. See --visible-members docs and discussion thread (Michalis) -
Accept identifiers with Unicode characters (not only ASCII letters) in them, both in UTF-8 and other (like Windows 1252) encodings, following Delphi. See also discussion thread (Michalis)
-
New PHP output, generates a map to find/enumerate Pascal identifiers present in HTML output (Michalis)
-
GraphViz classes graph shows implemented interfaces as dashed lines (Michalis)
-
New feature to show source code file/line + link in docs:
--show-source-position,--source-url-pattern,--source-root, see also discussion thread (Michalis) -
Added release (and CI build) on macOS/Aarch64 (Michalis)
-
Show ancestor description for a method or class, when it misses its own description. Scans ancestor class and interfaces and generates nice HTML output with ancestor descriptions. (Elliot Hillary)
-
Overloaded methods are now accounted for better (Elliot Hillary):
- When using
@link, you can link to a particular overload like@link(MyRoutine(Integer, String))or@link(MyRoutine(Single))instead of just@link(MyRoutine). - When generating HTML anchors, we add parameter types, so that each overloaded routine has a different anchor. This makes internal links (from
@link, from internal tables) in the generated HTML output correct. - See @link tag docs for usage examples.
- When using
-
Much more complete expression evaluation for
$if/$elseif(functions, subexpressions, negation, comparison, addition, multiplication). See conditional expressions docs (Johann Elsass aka circular17) -
Ability to define macros on the command-line like
-D FPC_FULLVERSION:=30202that will be used for both regular Pascal code and in $if / $elseif evaluation. See conditional expressions docs (Johann Elsass aka circular17) -
Proper "Constants" section in outputs for CIOs with nested constants (Michalis)
-
More complete "Hierarchy" at CIO pages by following also type aliases (Michalis)
-
Improved SimpleXML output (Michalis):
- Properly separate "name" from "declaration" for
<variable>,<constant>,<type> - Separate
<label>inside<item>for definition lists <function>-> more general<routine>- Nested structures (CIOs) and simple types inside other CIOs are now generated correctly
- Contains now deprecated / platform / etc. information, and proper unit name
- Add
declaration="to<property...> - Remove
visibility="..."from non-members (where the meaning is undefined) - Added
<aliased-name>to<type>for type aliases
- Properly separate "name" from "declaration" for
-
PasDoc GUI exposes options to:
- Change output format to SimpleXML or PHP (in addition to existing ones, like HTML and LaTeX)
- Configure if CSS is based on Bootstrap or not
- Configure "Inherited members" (Michalis)
- Use Markdown and "automatic back comments" (Ayeseeem)
-
Manpages for
pasdoc,pascal_pre_proc,file_to_pascal_dataandfile_to_pascal_string(Suve) -
Parsing fixes:
- Parsing and properly documenting type helpers (Johann Elsass aka circular17)
- Parsing unit implementation with
begininstead ofinitialization(Michalis) - Parsing unit implementation inline variable (Fr0sT-Brutal)
- Fixed skipping UTF-8 BOM for various text files other than Pascal source (introduction, conclusion, CSS, HTML header/footer, include file) (Michalis)
- Parsing
objcclassandobjcclass external(Michalis) - Parsing
unimplementeddirective (Michalis) - Parsing
exportssection (just skip it for now) (Michalis) - Parse
noreturn(Michalis) - Allow
onandoutas regular names (e.g. for properties) (Michalis) - Parse
align(N)directive at record end (Michalis) - Parse generics with multiple constraints separated by semicolons, like
procedure Foo<A; B>(Michalis) - Parse anonymous record types (
FField: record .. end) inside classes (Michalis) - Parse TSomething = type string; and
record helper for string(Michalis) - Parse numbers in octal notation (Michalis)
-
Other fixes:
- Fixed using introduction
@shortTitle(Michalis) - Fixed resolving relative paths from introduction/conclusion (Michalis)
- Fixes and improvements to Markdown support, and make Markdown
[Descr](#Item)equivalent to@link(Fr0sT-Brutal) - Fixed spellchecking using Aspell, in previous version we didn't pass language arguments to
aspellcorrectly - Fixed output when ancestor is not CIO (class, record or interface) for PasDoc (Michalis)
- Fixed default visibility members (as documented, we hide
private,strict privateandimplicit, and show the rest) (Michalis) - Fixed
@excludeon nested types (Michalis)
- Fixed using introduction
-
Code cleanups, fixes to pass every auto-test with every compiler, CI improvements (Michalis)
- Removed custom
TStreamReader/...
- Removed custom
New tags and fixes, Markdown, parsing implementation, parsing $if expressions, new website on GitHub
- New website, using Jekyll, generated from our wiki, see https://github.com/pasdoc/pasdoc.github.io (Michalis)
- Moved everything to GitHub
- Ancestors list is now affected by external class hierarchy (Michalis)
- Markdown support (Fr0sT-Brutal)
Supporting bold, italic, inline code, multi-line code, URLs, lists. - @note and @warning tags (Bi0T1N)
- @url tag (Bi0T1N)
- Allow to lowercase output of @nil, @false, @true by --lowercase-keywords (Bi0T1N)
- Automatically detect flag like [xxx] at @PARAM description.
See here for example. (PifPof) - Scan implementation section of a unit in addition to the interface section (Fr0sT-Brutal)
- Parser improvements to correctly handle some special cases: reading chars > $FF, "*.inc" includes, files with Mac-style line endings (Fr0sT-Brutal)
- Mem leaks fixed (Fr0sT-Brutal)
- Tag parameters now could be multiline without enclosing parens by means of "line feed" character "" (Fr0sT-Brutal)
- Read additional command-line options from file (Fr0sT-Brutal)
- --auto-back-comments command-line option (Fr0sT-Brutal)
- pasdoc_gui opens a file given at command-line, opening WWW browser is optional
(Fr0sT-Brutal) - @longcode without markers fixed (Michalis)
- Support for namespaces in units in @links (Fr0sT-Brutal)
- --ignore-marker option (Fr0sT-Brutal)
- Test suite fixes and better documentation, in particular for Windows users
- Catalan translation updated (Xavier Martínez)
- Delphi Tokyo files, to compile all projects and packages (Carlos Feitoza Filho)
- Brazilian Portuguese translation updated (Carlos Feitoza Filho)
- Parse identifiers declared as &xxx, where "xxx" may be a reserved word.
- Possibility to specify additional files using -A or --additional
(just like introduction or conclusion, but you can provide any number
of items) (Alex Merkel) - Added de.utf8 (German with UTF-8 encoding)
- Automatically remove %region and %endregion from comments
- Show visibility (public, protected, private...) inside records too
(it is meanigful for advanced records) - Implement in pasdoc_gui options to (Michalis)
- customize HTML head and body
- set external descriptions file
- configure identifiers excluded from auto-linking
- Rename "internal" to "nested" to describe this language feature.
Because that is how it's called in official docs
( http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Nested_Type_Declarations,
https://www.freepascal.org/docs-html/ref/refse41.html )
and the "internal" word has traditionally different meaning
("something not supposed to be visible/used from the outside"). (Michalis) - The automatic tests are now easier to run and check (see tests/README.md) (Michalis)
@raisesand@paramis now supported at properties as well as methods.
Actually, it's supported everywhere now, but it makes sense only at properties and methods now.
(Michalis)- Tipue (client-side search) improvements:
- we have upgraded to use Tipue 6.1, which highlights the found terms
- we strip HTML from Tipue index, which makes the "search results" page correct
- Fix handling SVN fixed-length $Date::
- Parsing of
$ifand$elseifexpressions, likedefined(MSWINDOWS) or defined(UNIX)(Michalis)