Readable Source Code Documentation
for 21 Programming Languages
Natural Docs lets you document code written in any of 21 programming languages, plus it can be easily extended for more so whatever you use, it can too. And if your project uses multiple languages, no problem! It will all be included in the same set of documentation.
Natural Docs also speaks your other language... English! Its comments are designed to be very natural and readable so they're just as usable in the source code as they are in the generated documentation. No weird syntax or tags scattered everywhere.
Natural Docs' generated documentation is pretty and powerful, with three independently scrolling panels, dynamic menus, search, and pop-up summaries when you hover over links. All its features work wherever you put it, be it a web server, a network share, or just opened from your hard drive.
Natural Docs 2.1 is finally done. Let's recap for those who weren't following the development releases:
Image support was the biggest thing missing from 2.0 that was in 1.5. If you don't recall how it works, you just add (see filename.jpg) to a comment. There's two ways to do it:
// If you put it in the middle of a paragraph like this (see logo.png) it will
// If you give it its own paragraph like this, it will simply be replaced by
You can use PNG, GIF, JPG, SVG, and BMP files. You can include part of a path, such as (see images/diagram.svg). By default this is relative to the source file the comment appears in, but you can also specify image folders in Project.txt or on the command line with -img. It will search all these locations when looking for the image.
Better Support for SQL
Natural Docs can now parse and format complex SQL prototypes like this:
I designed it to handle Oracle's PL/SQL and Microsoft's Transact-SQL. Let me know if there are additional SQL variants that it doesn't handle well.
Better Support for Java
Natural Docs can now handle Java's @annotations and format ones with parameters:
This is good for things like JAX-RS that use it a lot:
Better Support for SystemVerilog
I added support for parameterized classes that use symbols other than <>, such as SystemVerilog's #(). The parents weren't being detected before, but now that's fixed and the parameters get syntax highlighting as well.
There still isn't support for SystemVerilog without editing Languages.txt, but that's something I'm going to be looking into soon. Since I'm not familiar with the language I can use some SV users to bounce questions off of, so if anyone wants to volunteer let me know.
Better Support for Other Languages
That's it. The first development release for 2.2 isn't very far away so you should include development releases in your mailing list subscription if you haven't already. They tend to be very stable and usable.