BitBucket: https://bitbucket.org/cptdark/awpbthc
Webseite: http://planet-rk.bplaced.net/web/helpcompiler.html
(Hinweis: Bei mir schlägt Avast aktuell auf die 32-Bit Windows-Exe an (schon beim kompilieren), und Chrome bemängelt den Download )
Da ich bei meinen AWPB-Tools auf eine Art OOP setze, benötigte ich eine Möglichkeit, die Dokumentation einfach zu entwerfen. Der HelpCompiler von PureBasic ist ja nicht schlecht, aber wenn ich z.B. ein \ vor eine Prozedur setzen möchte, bzw mit "Klasse\Prozedur()" benennen möchte, funktioniert das ganze nicht.
Das Tool liegt für Windows und Linux fertig kompiliert vor.
Herausgekommen ist ein Tool, das die Dokumentation in einer XML-Datei erwartet und daraus HTML-Dateien im Stil der PB Doku erzeugt. Es werden ebenfalls Projektdateien für den MS Help Workshop erzeugt, so dass das Projekt dann direkt in eine CHM Datei umgewandelt werden kann.
Es wird (bei Bedarf) noch erweitert werden. Das Programm ist Freeware und darf nach Belieben genutzt werden. Änderungen in der Syntax sind aber noch möglich.
Änderungen: references-Tag, parameters-Tag entfernt, macro hinzugefügt, Konstanten werden alle in der selben HTML-Datei aufgelistet, Splittung in mehrere Dateien möglich (z.B. eine pro library), Bilder einbinden, Anpasung der feststehenden Überschriften der erzeugten Dateien, Index-Erstellung.
Screenshot:
Quelltext-Beispiel:
Code: Alles auswählen
<doc lang="de" title="Tools">
<author>
Name des Autors
</author>
<license>
Lizenz des Sammlung
</license>
<copyright>
(c) by mir
</copyright>
<description>
Beschreibung des Gesamtpaketes
</description>
<library name="Bibliothek1">
<keywords>
Bibliothek; Code; Scanner; Parser
</keywords>
<structure name="Struktur1">
<description>
<![CDATA[
Beschreibung der <b>Struktur</b><br><br>
In diesem Fall mit HTML-formatierten Code.
Siehe auch: @reflibrary(Bibliothek2)
]]>
</description>
<element offset="0" name="index" type="i">Index</element>
<element offset="4" name="*name">Zeiger auf Name</element>
<element offset="8" name="size" type="l">Größe des Inputs</element>
</structure>
<constant name="Konstante1">
<description>Eine Konstante.</description>
<keywords>
Const; Parser
</keywords>
</constant>
<constant name="Konstante2">
<description>Noch eine Konstante.</description>
<keywords>
Scanner; Parser
</keywords>
</constant>
<command name="Prozedur1">
<description>
Diese Prozedur macht eigentlich das selbe wie diese hier: @refcommand(Prozedur2,,Bibliothek1) @linebreak
die Prozedur @refcommand(Prozedur1, Klasse1, Bibliothek1) macht ebenfalls das selbe. Dazu siehe auch die Klasse @refclass(Klasse1, Bibliothek1).@linebreak
In @reflibrary(Bibliothek2) werden @italicähnliche@enditalic Funktionen enthalten sein.
@paragraph
Ein @bold extra Paragraph @endbold.
@endparagraph
@paragraph
Und noch einer; @@ wird in eMails benötigt.
@lt und @gt werden in HTML benötigt.
@endparagraph
</description>
<arg index="1" name="index" type="i">Index</arg>
<arg index="2" name="text" type="s">der zu bearbeitende Text</arg>
<arg index="3" name="*target" default="#Null">@boldZeiger@endbold auf das Ziel, optional</arg>
<result name="result" type="i">@const(True) bei Erfolg, sonst @const(False)</result>
<reflibrary name="Bibliothek2" />
<refclass name="Klasse1" lib="Bibliothek1" />
<refcommand name="Prozedur1" class="Klasse1" lib="Bibliothek1"/>
<refconstant name="Konstante1" lib="Bibliothek1" />
<refstructure name="Struktur1" lib="Bibliothek1" />
<os>Windows</os>
<os>Linux</os>
<example name="test1.pb">
; Muss links anfangen, da 1:1 übernommen
For a = 1 to 20
b + 1
Next
</example>
</command>
<command name="Prozedur2">
<description>
Nur diese Beschreibung.
</description>
</command>
<class name="Klasse1">
<command name="Prozedur1">
<description>
Dies ist @func(Prozedur1) in @code Klasse1@endcode.@linebreak
Nützlich ist ein Verweis auf @refstruct(Struktur1, Bibliothek1)
</description>
<arg index="1" name="index" type="i">Index</arg>
<arg index="2" name="text" type="s" default='"Standardwert"'>der zu bearbeitende Text</arg>
<arg index="3" name="*target" default="#Null">@boldZeiger@endbold auf das Ziel, optional</arg>
<result name="*result">Zeiger auf das Ergebnis</result>
<os>Windows</os>
<keywords>
Klasse1; Prozedur1
</keywords>
</command>
<description>
Dies ist eine Klasse mit einer Prozedur.@linebreak
Konstanten und Strukturen können nicht in einer Klasse definiert werden.@linebreak
Funktionen sind identisch in der Definition wie außerhalt.
</description>
</class>
<description>
Dies hier ist Bibliothek1, die Funktionen, Klassen, Strukturen und Konstanten enthält.@linebreak
@italicDas alles ist hier drunter aufgelistet.@enditalic
</description>
</library>
<library name="Bibliothek2">
<description>
Eine zweite Bibliothek des Toolsets, diese enthält aber bis auf die Beschreibung noch nichts.@linebreak
Diese Zeile enthält wirklich @spc@spc@spc@spc@spc@spc@spc@spc@spc mehrere Leerzeichen.
</description>
<keywords>Bibo2</keywords>
</library>
</doc>