I think it'll be soon (e.g., week or two), I'm just working on bits and pieces of the output now. I've been thinking about trying to use Dot with it, but I don't know yet. That can wait 'til I'm done with the rest of it.
Basically, this is what I've got it outputting at the moment when I run it over my GUI module (test output, in other words this wasn't made by DocGen itself but rather by looping through all of DocGen's acquired data and putting it in a single file so I can look for errors).
Basically, the way it works at the moment is a three-pass system. First pass gathers all the objects in the files, be it comments, types, methods, functions, variables, etc., then the second pass gathers all associations between the data, comments, etc. and links them accordingly. The third pass is generating the HTML based on template files that look something like this (you don't have to write you own as I'm including 'defaults' in it as well, but you'll likely want to write your own because the defaults are gonna be ugly [I don't want to spend a lot of time on them]):
Edit: And for a basic example of how you document code in it:
Random blurb over.
Basically, this is what I've got it outputting at the moment when I run it over my GUI module (test output, in other words this wasn't made by DocGen itself but rather by looping through all of DocGen's acquired data and putting it in a single file so I can look for errors).
Basically, the way it works at the moment is a three-pass system. First pass gathers all the objects in the files, be it comments, types, methods, functions, variables, etc., then the second pass gathers all associations between the data, comments, etc. and links them accordingly. The third pass is generating the HTML based on template files that look something like this (you don't have to write you own as I'm including 'defaults' in it as well, but you'll likely want to write your own because the defaults are gonna be ugly [I don't want to spend a lot of time on them]):
@HTMLHEADER <html><head><link href="docgen.css" rel="stylesheet" type="text/css"/> <title>$PROJECTNAME$ Documentation</title></head><body> @HTMLFOOTER <div class="smallText">Generated by <img src="docgenr3.png"/> v$DOCGENVERSION$</div> </body></html> @BRIEFLIST <table border="1"> $CONTENT$ </table> @FUNCTION <TABLE width="100%" align="center"> <TR><TD> <TABLE width="100%"> <TR><TD> $NAME-BRIEF$ </TD></TR> </TABLE> <BR/> <TABLE width="100%"> <TR> <TD>$ARGS-LONG$</TD> <TD>Description :<br>$DESC$<HR/>Returns :<br>$RETURNS$</TD> </TR> </TABLE> </TD></TR> </TABLE> <BR/> @END
Edit: And for a basic example of how you document code in it:
''' @brief The class used to update and draw the GUI Type CGUI Final ''' @brief The gadget list- only here for windows, other gadgets really/ ''' should not be in this list Global GadList:TList ''' @brief The active window Global ActiveWindow:CWindow ''' @brief Whether or not the GUI class is initialized. This variable is kindof useless. Global Initialized:Int ''' @brief The active GUI object Global GUI:CGUI ''' @brief The path to the skin the GUI is using Global SkinPath:String="./" ''' @brief The path to the font the GUI is using Global FontPath:String="" ''' @brief The font style of title bar text (like a header) Global TitleFontStyle:Int = SMOOTHFONT|BOLDFONT ''' @brief The normal font style used for pretty much everything Global NormalFontStyle:Int = SMOOTHFONT ''' @brief Normal gadget text color Global GadgetR ''' @brief Normal gadget text color Global GadgetG ''' @brief Normal gadget text color Global GadgetB ''' @brief Disabled gadget text color Global DisabledR=92 ''' @brief Disabled gadget text color Global DisabledG=92 ''' @brief Disabled gadget text color Global DisabledB=92 ''' @brief Title text color Global TitleR ''' @brief Title text color Global TitleG ''' @brief Title text color Global TitleB ''' @brief Selected text color Global SelectedR ''' @brief Selected text color Global SelectedG ''' @brief Selected text color Global SelectedB ''' @brief Current GL context's width Global Width:Double ''' @brief Current GL context's height Global Height:Double ''' @brief Global PushData:Int = 1 Method New() CGUI.Initialized = 1 CGUI.GadList = CreateList() CGUI.GUI = Self SetMaskColor 255,0,255 Form = LoadImage(CGUI.SkinPath+"form.png",0) Assert Form,"Form is Null; this is a required file" Font = LoadImageFont(CGUI.FontPath,12,NormalFontStyle) If Font = Null Then Font = GetImageFont() FontTitle = LoadImageFont(CGUI.FontPath,16,TitleFontStyle) If FontTitle = Null Then FontTitle = GetImageFont() If Font = Null Then Font = GetImageFont() If FontTitle = Null Then FontTitle = GetImageFont() End Method ''' @brief Reloads the skin - use this to load a new skin Function ReloadSkin() SetMaskColor 255,0,255 Form = LoadImage(CGUI.SkinPath+"form.png",0) Assert Form,"Form is Null; this is a required file" Font = LoadImageFont(CGUI.FontPath,12,NormalFontStyle) FontTitle = LoadImageFont(CGUI.FontPath,16,TitleFontStyle) If Font = Null Then Font = GetImageFont() If FontTitle = Null Then FontTitle = GetImageFont() End Function ''' @brief Updates the GUI and all gadgets Function Update() If CGUI.Initialized = 0 Then Return Local cFont:TImageFont = GetImageFont() MH = 0 MU = 0 MD = MouseDown(1) If MD=1 And OMD=0 Then MH = 1 If MD=0 And OMD=1 Then MU = 1 MX = MouseX() MY = MouseY() For Local i:CGadget = EachIn CGUI.GadList i.Update() Next SetImageFont(cFont) OMD = MD End Function ''' @brief Draws the GUI and all visible gadgets Function Draw() Local iPushData = PushData Local cFont:TImageFont If iPushData Then glPushClientAttrib(GL_CLIENT_ALL_ATTRIB_BITS) glPushAttrib(GL_ALL_ATTRIB_BITS) cg_Error_ "Pushing attribs" glMatrixMode(GL_PROJECTION) glPushMatrix() glLoadIdentity() cg_Error_ "Setting projection matrix" glOrtho(0:Double, CGUI.width:Double, CGUI.height:Double, 0:Double,.. -10:Double, 10:Double) cg_Error_ "Setting orthographic projection "+CGUI.Width+" "+cgui.height glMatrixMode(GL_MODELVIEW) glPushMatrix() glLoadIdentity() cg_Error_ "Setting modelview matrix" cFont = GetImageFont() glEnable GL_TEXTURE_2D cg_Error_ "Setting blend modes" glDisable GL_DEPTH_TEST EndIf For Local i:CGadget = EachIn CGUI.GadList glScissor(0,0,GraphicsWidth(),GraphicsHeight()) i.Draw() Next If iPushData Then SetImageFont(cFont) glPopMatrix() glMatrixMode GL_PROJECTION glPopMatrix() glMatrixMode GL_MODELVIEW glPopAttrib() glPopClientAttrib() cg_Error_ "Popping attributes and matrices" EndIf End Function ''' @brief Registers a window - for internal use only Function RegisterGadget:TLink(gad:CWindow) ActiveWindow = gad Return ListAddLast(CGUI.GadList,gad) End Function '' Convenience functions added to make expanding the GUI easier ''' @brief Gets the current skin's image class ''' @return The current skin's image Method GetSkinImage:TImage() Return Form End Method ''' @brief Gets the current skin's font class ''' @return The current skin's font Method GetGadgetFont:TImageFont() Return Font End Method ''' @brief Gets the current skin's header font class ''' @return The current skin's titlebar/header font Method GetTitleFont:TImageFont() Return FontTitle End Method ''' @brief Returns whether the left mouse button was released ''' @return True if released, False if not Method MouseUp() Return MU End Method ''' @brief Returns whether the left mouse button is being pressed ''' @return True if pressed, False if not Method MouseDown() Return MD End Method ''' @brief Returns whether the left mouse button was hit ''' @return True if hit, False if not Method MouseHit() Return MH End Method End Type
Random blurb over.