doxytag2zealdb creates a SQLite3 database from a Doxygen tag file to enable searchable Doxygen docsets with categorized entries in tools like helm-dash, Zeal, and Dash.
GENERATE_DOCSET configuration option does most of the work to
get a usable docset for use with helm-dash and friends. However, one still has
to write a SQLite3 database to facilitate searching and browsing by entry type.
doxytag2zealdb uses Beautiful Soup to traverse Doxygen tag files, then
extracts and prepares entries to write to the DB as suggested in the
Dash guide on generating docsets. By default, it also updates
Info.plist, which is expected to be one directory-level up from the output
DB, to indicate that a Dash-style docset index is used (for Dash users). This
can be disabled by specifying
doxytag2zealdb has been developed against the Doxygen tag file output for a few C++ codebases. At present:
Several Doxygen tag file entry types are mapped to their corresponding docset entry types. There may be more mapping opportunities to the entry types in the docset generation guide.
There are command-line options to include function arguments and return types in entry names (e.g.,
some_func(int &output, const double input) -> boolby specifying
--include-function-signatures) and include the parent scope in entry names for class/struct/namespace members (e.g.,
--include-parent-scopes). These options can be combined.
Python 2.7 or Python 3 with
lxml (3.6.0), and
doxytag2zealdb module can be executed directly from a repository
clone or extracted source tarball, provided that the requirements are
python -m doxytag2zealdb.
Alternatively, one may may run
python setup.py install) or
install from PyPI (
pip install [--user] [--upgrade] doxytag2zealdb). Note
that the entrypoint is simply
doxytag2zealdb when installing via these
Suppose you have a project named
foowith Doxygen configuration in
foo.dox. As suggested in the Doxygen section of the Dash docset guide, at least make sure
GENERATE_DOCSET = yesin
foo.dox. Ensure HTML output is enabled and also specify tag file generation with
GENERATE_TAGFILE = /path/to/desired/foo.tag. You may wish to further customize
DOCSET_BUNDLE_ID(which controls the name of the docset subdirectory), other
DOCSET_*options, and the other options mentioned in the guide.
If the top-level Doxygen output directory is
output, go to
make. An error about missing
docsetutilis fine (and expected when not using macOS and an old-enough Xcode install). Also,
output/html/$(DOCSET_BUNDLE_ID).docset/Contents/Info.plistshould have the
isDashDocsetkey set to
true. doxytag2zealdb will do this automatically; additionally pass
--dont-update-info-plistin the next step if this is not desired.
The SQLite DB is expected to be named
docSet.dsidxand placed in the directory
$(DOCSET_BUNDLE_ID)may be something like
org.doxygen.Projectif left uncustomized in
foo.dox. This is where doxytag2zealdb comes in:
[python -m] doxytag2zealdb --tag /path/to/desired/foo.tag \ --db /path/to/output/html/$(DOCSET_BUNDLE_ID).docset/Contents/Resources/docSet.dsidx \ --include-parent-scopes --include-function-signatures
After adding an icon and whatever else,
output/html/$(DOCSET_BUNDLE_ID).docsetshould be ready to use with the tool of your choice.
There are multiple ways to extend doxytag2zealdb's behavior:
Options can be added to existing
functionTagProcessorfor examples of this. Also see how keyword arguments get passed around from
TagProcessors and their superclasses.
One can subclass
TagProcessor(or one of its existing child classes) to handle a new tag case. Then add it to the registrations in
TagfileProcessor.init_tag_processors()or separately register it at runtime, if you like.
Command-line options are easily added using docopt. See the module docstring and code in
Please file issues and submit pull (merge) requests upstream at https://gitlab.com/vedvyas/doxytag2zealdb.
doxytag2zealdb is distributed under the terms of the GNU General Public License version 3 or (at your option) any later version. Please see COPYING.
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Hashes for doxytag2zealdb-0.3.1-py3-none-any.whl
Hashes for doxytag2zealdb-0.3.1-py2-none-any.whl