• Stars
    star
    228
  • Rank 175,267 (Top 4 %)
  • Language
    JavaScript
  • License
    Other
  • Created almost 8 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Doxygen XML to Markdown converter

Moxygen

Moxygen is a Doxygen XML to Markdown converter for C++ developers who want a minimal and beautiful solution for documentating their projects.

Moxygen is currently used in conjunction with GitBook to generate the API documentation for LibSourcey.

Features

  • Multi page output: Output single or multiple files
  • Internal linking: Anchors in comments and function definitions are supported
  • Markdown comments: Markdown in Doxygen comments are rendered
  • Doxygen groups: Doxygen grouping is supported for more organised documentation
  • Custom templates: Modify the core Markdown templates to add your own flavour
  • Optional index: Optionally render a top level index

Usage

  1. Add GENERATE_XML=YES to your Doxyfile first.
  2. Run doxygen to generate the XML documentation.
  3. Install moxygen like so: npm install moxygen -g.
  4. Run moxygen providing the folder location of the XML documentation as the first argument ie. {OUTPUT_DIRECTORY}/xml.
Usage: moxygen [options] <doxygen XML directory>

Options:

  -V, --version          output the version number
  -o, --output <file>    output file, must contain "%s" when using `groups` or `classes`
  -g, --groups           output doxygen groups into separate files
  -c, --classes          output doxygen classes into separate files
  -p, --pages            output doxygen pages into separate files
  -n, --noindex          disable generation of the index, ignored with `groups` or `classes`
  -a, --anchors          add anchors to internal links
  -H, --html-anchors     add html anchors to internal links
  -l, --language <lang>  programming language
  -t, --templates <dir>  custom templates directory
  -L, --logfile [file]   output log messages to file
  -q, --quiet            quiet mode
  -h, --help             output usage information

Multi-page Output

Moxygen supports the doxygen groups syntax for generating multi page documentation. Every \defgroup in your source code will be parsed and output into a separate markdown file, with internal reference updated accordingly.

Example:

moxygen --anchors --groups --output api-%s.md /path/to/doxygen/xml

Example

To get a feel for how Moxygen works you can play with the example which is located in the example folder. The example contains:

  • Documented C++ example code
  • A Doxyfile file (for doxygen 1.8.13)
  • Pre-generated XML output in example/xml
  • Pre-generated output Markdown files in example/doc

To fully build the example, follow these steps (once you've installed doxygen. See Development & Contribution, below):

  1. Rebuild the XML: run doxygen from within the example folder.
  2. Rebuild the Moxygen output: from within this directory,
node bin/moxygen.js --groups --pages --anchors --output=example/doc/api-%s.md example/xml

Development & Contribution

You can develop this project as you would any other Node project:

  1. Clone this repo.
  2. npm install from this directory.

This project is tested through integration, by building the example/. To quickly test this project:

  1. Install doxygen (brew install doxygen, choco install doxygen, for example). Only must be done once per computer.
  2. npm test from this directory. This will run Doxygen on the example/ and build the output.

More Repositories

1

libsourcey

C++14 evented IO libraries for high performance networking and media based applications
C++
1,277
star
2

spectacle

Beautiful static documentation generator for OpenAPI/Swagger 2.0
HTML
1,269
star
3

materiallogindemo

Android login and signup demo with material design
Java
833
star
4

pluga

Simple C++ cross-platform plugin system
C++
153
star
5

s3-image-optimizer

Optimize images in large S3 storage buckets
JavaScript
99
star
6

pacm

C++ front-end package manager for embedding and redistributing with native applications
C++
84
star
7

recliner

A lightweight production ready jQuery plugin for lazy loading images and other dynamic content
JavaScript
51
star
8

webrtcnativelabs

WebRTC native C++ media server
JavaScript
50
star
9

symple-webrtc-video-chat-demo

This demo showcases how to use Symple to create a WebRTC video conferencing chat application.
JavaScript
43
star
10

symple-server

Symple real time messaging and presence server using Node.js, Socket.IO and Redis
JavaScript
42
star
11

webrtc-precompiled-builds

WebRTC precompiled builds for Linux and Windows.
JavaScript
41
star
12

symple-client

Messaging, presence and video streaming protocol for communication between desktop, browser and mobile applications.
JavaScript
37
star
13

imagegallerydemo

Android horizontal scrolling image gallery with pan, scan and zoom
Java
35
star
14

webrtc-windows-builds

Pre-compiled WebRTC binaries for Windows
11
star
15

sourcey.com

Sourcey.com website
HTML
10
star
16

ausca

Bots and automation utilities
Ruby
9
star
17

symple-client-player

Symple JavaScript client player implementations for streaming media to the browser.
JavaScript
5
star
18

mesh

Modular CSS3 and HTML5 layout framework
JavaScript
4
star
19

symple-webrtc-native-streaming-demo

Demonstrates how to use Symple to stream video from a native WebRTC client to the browser.
JavaScript
3
star
20

sourcey.github.io

Sourcey.com static content for Github pages
HTML
3
star
21

designer

Rich text page designer for Rails applications
Vue
2
star
22

spectacle-rails

Generate beautiful static documentation for your Rails API from a OpenAPI/Swagger 2.0 spec.
Ruby
2
star
23

popper

Dynamic popup windows, modals, dialogs, tooltips and notifications for web applications.
JavaScript
1
star
24

symple-client-ruby

Symple client for Ruby
Ruby
1
star