Skip to main content

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.

Project description

doxytag2zealdb

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.

Introduction

Doxygen's 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 --dont-update-info-plist.

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) -> bool by specifying --include-function-signatures) and include the parent scope in entry names for class/struct/namespace members (e.g., SomeClass::Method by specifying --include-parent-scopes). These options can be combined.

Requirements

Python 2.7 or Python 3 with beautifulsoup4 (4.4.1), lxml (3.6.0), and docopt (0.6.2)

Installation

The doxytag2zealdb module can be executed directly from a repository clone or extracted source tarball, provided that the requirements are installed, using python -m doxytag2zealdb.

Alternatively, one may may run setup.py (python setup.py install) or install from PyPI (pip install [--user] [--upgrade] doxytag2zealdb). Note that the entrypoint is simply doxytag2zealdb when installing via these methods.

Typical Usage

  1. Suppose you have a project named foo with Doxygen configuration in foo.dox. As suggested in the Doxygen section of the Dash docset guide, at least make sure GENERATE_DOCSET = yes in 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.

  2. If the top-level Doxygen output directory is output, go to output/html/ and run make. An error about missing docsetutil is fine (and expected when not using macOS and an old-enough Xcode install). Also, output/html/$(DOCSET_BUNDLE_ID).docset/Contents/Info.plist should have the isDashDocset key set to true. doxytag2zealdb will do this automatically; additionally pass --dont-update-info-plist in the next step if this is not desired.

  3. The SQLite DB is expected to be named docSet.dsidx and placed in the directory output/html/$(DOCSET_BUNDLE_ID).docset/Contents/Resources/, where $(DOCSET_BUNDLE_ID) may be something like org.doxygen.Project if 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
    
  4. After adding an icon and whatever else, output/html/$(DOCSET_BUNDLE_ID).docset should be ready to use with the tool of your choice.

Extending It

There are multiple ways to extend doxytag2zealdb's behavior:

  • Options can be added to existing TagProcessors. See TagProcessor and functionTagProcessor for examples of this. Also see how keyword arguments get passed around from doxytag2zealdb.py to TagfileProcessor to 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 doxytag2zealdb.py.

  • ...

Contributing

Please file issues and submit pull (merge) requests upstream at https://gitlab.com/vedvyas/doxytag2zealdb.

License

doxytag2zealdb is distributed under the terms of the GNU General Public License version 3 or (at your option) any later version. Please see COPYING.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

doxytag2zealdb-0.3.1.tar.gz (28.2 kB view details)

Uploaded Source

Built Distributions

doxytag2zealdb-0.3.1-py3-none-any.whl (44.4 kB view details)

Uploaded Python 3

doxytag2zealdb-0.3.1-py2-none-any.whl (44.4 kB view details)

Uploaded Python 2

File details

Details for the file doxytag2zealdb-0.3.1.tar.gz.

File metadata

  • Download URL: doxytag2zealdb-0.3.1.tar.gz
  • Upload date:
  • Size: 28.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.34.0 CPython/3.7.4

File hashes

Hashes for doxytag2zealdb-0.3.1.tar.gz
Algorithm Hash digest
SHA256 42f8e2218469e029a80524c2e45ff8b3da53d45fc867514f389d028c9f5bb8a3
MD5 2e87f5546ee7dc496a9aeefc8b664fad
BLAKE2b-256 312ad848482eab1eae103bf433ae2489facdc34a4b4756a8033128eefa005b7f

See more details on using hashes here.

File details

Details for the file doxytag2zealdb-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: doxytag2zealdb-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 44.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.34.0 CPython/3.7.4

File hashes

Hashes for doxytag2zealdb-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 fd731ee85e8087ef119900a8997afc988ccd66aebe175528cf6f01aa6663c955
MD5 d9455ee052c8d98c2253c6759ad7c247
BLAKE2b-256 f7526eef10d66ed89b5ca625c7708d3fc06544d6e94c57f36c7bd1a813f41126

See more details on using hashes here.

File details

Details for the file doxytag2zealdb-0.3.1-py2-none-any.whl.

File metadata

  • Download URL: doxytag2zealdb-0.3.1-py2-none-any.whl
  • Upload date:
  • Size: 44.4 kB
  • Tags: Python 2
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.34.0 CPython/3.7.4

File hashes

Hashes for doxytag2zealdb-0.3.1-py2-none-any.whl
Algorithm Hash digest
SHA256 a6a637219840580d5110c4d5491f522d676e62ebbe05a7eb86ce6e89f45b4529
MD5 714160c53c6e3ca6b262f3cf5e0ce5be
BLAKE2b-256 f4adbdafe421a11de83490c2609d6cb919f2851b17f958d35061a4cef6be05b2

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page