GenDocs 3.0-alpha004
GenDocs is a utility for easily creating documentation for AutoHotkey libraries. It supports the following structures:
- Functions
- Pages
- Classes
- Constructors
- Methods
- Properties
- Inner classes
GenDocs works via specially-crafted comment blocks. For more information, look at the example below.
GenDocs-flavored Markdown
GenDocs uses a stripped down version of Markdown, which supports:
- Paragraphs: blocks of text delimited by blank lines. Equivalent to HTML
<p>...</p>. - In-paragraph line breaks: end a line with two spaces. Equivalent to HTML
<br/>. - Headings: start a line with up to three hash (
#) characters, followed by space. Equivalent to HTML<hN>...</hN>. - Emphasis marks:
*...*. Equivalent to HTML<em>...</em>. - Strong emphasis marks:
**...**. Equivalent to HTML<strong>...</strong>. - Inline code marks:
`...`. Equivalent to HTML<code>...</code>. - Code sections: unlike standard Markdown, they use the blockquote syntax: blocks of text whose lines start with
>followed by a space. - Unordered lists: lines that start with
*. Equivalent to HTML<ul>...<li>...</li>...</ul>. - Ordered lists: lines that start with a number, dot and space (e.g.
1.); or letter, dot and space (e.g.a.). Equivalent to HTML<ol>...</ol>and<ol style="list-style-type: lower-alpha">...</ol>respectively. - Escape sequences: the sequences
\*,\`,\[,\],\!and\\are recognized, and yield literal characters. - Links:
[Link text](Link URL). Equivalent to HTML<a href="...">...</a>. - Images:
. Equivalent to HTML<img src="..." alt="..."/>.
Running GenDocs
Open the script you want to generate the documentation for, then click on its icon in the toolbar
() then on the Generate button.
Documentation is always saved on the folder %SelectedScriptDir%\%SelectedScriptName%-doc.
Example
/*!
Library: Test library, version 1.0
This library does something
or maybe not!
In-paragraph line breaks work
Author: fincs
License: WTFPL
*/
/*!
Page: Test Page
Filename: TestPage
Contents: @file:TestPage.md
*/
/*!
Function: something(a, b [, c])
something() does something :)
Parameters:
a - Something
> MsgBox Yay, this works?! ; comment!
b - Something else
c - (Optional) Even more stuff
Remarks:
Meow.
Returns:
Dinner, really :)
Extra:
### It looks like everybody's been taken to Tykogi Tower!
Oh, my!
Throws:
Stuff if stuff
*/
something(a, b, c="")
{
}
/*!
Class: MyClass
Provides an interface to *dinner*
Inherits: OtherClass
Example: @file:TestExample.ahk
*/
class MyClass extends OtherClass
{
/*!
Constructor: (a)
Creates a MyClass object.
Parameters:
a - Something
*/
__New(a)
{
}
/*!
Method: Hello()
Displays hello world message.
*/
Hello()
{
}
__Get(m, p*)
{
return this["get_" m](p*)
}
__Set(m, ByRef v, p*)
{
return this["set_" m](v, p*)
}
/*!
Property: Something [get/set]
It's the something of a something
Value:
The something to set
Remarks:
Automagically dinner
*/
get_Something()
{
}
set_Something(ByRef v)
{
}
/*!
Class: Meow
What do you want me to do?!?!
@UseShortForm
Example:
> MsgBox Meow example ; Testing
*/
class Meow
{
/*!
Method: Hello([msg])
Displays a greeting message.
Parameters:
msg - (Optional) The message to display. Defaults to "Hello, world!".
Returns: Absolutely nothing :)
Throws: Again, nothing :)
*/
Hello(msg="Hello, world!")
{
MsgBox, % msg
}
/*!
Class: MoreNesting
Nesting is so much fun!
Example:
> MsgBox MoreNesting example ; Testing
*/
class MoreNesting
{
/*!
Property: HasDinner [get]
Does this object have dinner?
*/
__Get(m)
{
if m = HasDinner
return true
}
}
/*!
End of class
*/
}
/*!
End of class
*/
/*!
Class: InnerCls
This time it's dinnerish!
@UseShortForm
*/
class InnerCls
{
/*!
Constructor: (params...)
Parameters:
params - The parameters to use to create the object.
Throws: I have no clue!
*/
__New(prm*)
{
}
}
/*!
End of class
*/
}
/*!
End of class
*/