The usual DDOC outputs aren’t very pretty or attractive. Plain black text in the default size and the default font, with no means to navigate between the files. However, the DDOC system leaves much room for extending, as demonstrated by Candydoc, which gives the documentation files a nice formatting, and a package navigation tree.
I applied Candydoc to the Sofud documentation, and I am very pleased with the results, which I have uploaded for your viewing pleasure. Keep in mind that the docs are a work in progress, though I did write a lot of docs recently.
To use Candydoc, I had to introduce a custom build script that renames the files appropriately (because Candydoc wants the HTML files to be in the same directory, which is different from DMD’s default). I also modified Candydoc to work with my modified file name format (Package.Module.html). All in all, it wasn’t much work for the results (long live open source).
I started my first steps towards implementing a feature that I have been to lazy to do for a couple of versions: Preserving comments and indentions. Up until now, when a loaded and modified file was being written back to disk, all of this was lost (the indentations and new lines were created anew by the saving code). Today, I only started writing the classes (and extending the stumps I had left in the code earlier on), so no effects are to be seen yet. It still remains to modify the lexer (to not simply throw away white space) and of course the saving code.
I’m concerning myself with cosmetical changes now: That means that most parts of Sofud 0.3 are in place and working well. After finishing this, I want to perform some interface cleanup and optimization of the inner workings of the library. Most importantly, I want to enable the user to specify a default encoding to save strings in, and probably also cache strings that have been converted to other encodings, to reduce conversion overhead.
And since I’m aiming this to be a “complete” release of Sofud and I’m not planning to introduce any revolutionary features after this, I’m currently considering to renaming the release “0.3” to “1.0”.