…or subclasses. Each concrete output generator is implemented as a subclass of OutputGenerator instead of extending DoxygenConverter by another category. This results in much cleaner class structure and responsibility division as well as much more decoupling between different output generation objects.
… properly overwrites existing files.
…ripts. Although these were invisible in the code unless the file encoding was changed from UTF-8, and were invisible but present in the generated HTML too, it was still better to clean it up, so that any future output generators are not affected by these. The doxygen custom user scripts were also cleaned up, so they should not produce these chars any more.
The NSTask still complains that doxygen (for example) is not found if passed without full path. Therefore the client code remained as it was before, but I left the method for future reference.
This encapsulates repeating and error prone property list serialization code into two methods and lets the application code invoke it with one simple line of code.
There's already a project named objcdoc. It's a perl script you can find on http://www.inf.uos.de/elmar/projects/objcdoc/. There are also links to the documentation examples it generates. It looks like it's no longer maintained though - the latest update is from 2002.