Giter Site home page Giter Site logo

phocacius / docs-assembler Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 131 KB

A command line tool that helps to create a HTML documentation out of various source files like Markdown and API Blueprint

License: GNU General Public License v3.0

JavaScript 53.03% HTML 46.97%
docs-generator documentation documentation-generator docs

docs-assembler's Introduction

Docs-Assembler

A command line tool that helps to create a HTML documentation out of various source files like Markdown and API Blueprint.

Notes

This project was created in 2016. Therefore the dependencies are horribly out of date. If anyone wants to update the dependencies, I'm happy for PRs!

Prerequisites

Installation

  • Run npm install in the root directory
  • Although not required, it's recommended to create a softlink to the index.js file in a directory that's included in the path. That way the command can be used from any working directory

Usage

The Docs-Assembler Script transforms a collection of documentation input files into a structured HTML tree. It can be used both for manuals targeted for end users or for developer documentation.

config.json

The script reads its configuration from a simple key-value json file. An example config file looks like this:

{
  "docsRoot": "src",
  "outputDir": "dist",
  "stylesheets": ["css/style.css", "css/docs.css"],
  "pageTitle": "My Super Documentation",
  "menuTitle": "Documentation",
  "iniSeparator": "----",
  "contentSeparator": "<hr>",
}

The available commands are:

  • docsRoot: The directory that contains your documentation source files (see next chapter)
  • outputDir: The directory where the output html (along with all images and stylesheets) are copied to
  • stylesheets: An array of css-files that are included in the output html. Feel free to use your own unique documentation style! For a quicker start, a sample css is included in the styles folder of this repository along with the less sources.
  • pageTitle: The HTML page title of the generated documentation
  • menuTitle: The heading above the sidebar menu
  • iniSeparator: Every source file can contain an (optional) initialisation section. The separator (defaulting to ----) separates the initialisation section from the actual content (see next chapter).
  • contentSeparator: Docs-Assembler can combine multiple documentation source files into a single HTML page. The Content Separator (defaulting to <hr>) is inserted between source files.

Directory Structure

Within the source directory, you can place source files in a nested directory structure. All source files in the same directory level are compiled together on a single page. That way you can for example combine markdown content and an api documentation. Source files on the root level form the startpage. Each subfolder represents the first navigation hierarchy, subfolders the second and so on. For each page, a page index is automatically created listing all source files of the page (just below the menu).

Directory Structure

The menu item labels are based off the directory names. Underscores are replaced by spaces and leading numbers folowed by an underscore are ommitted from the label but are used for ordering the directories. The same applies for the filenames of source files.

Source files

The following types of source files are supported at the moment:

  • Plain text files (.txt)
  • Markdown files (.md): rendered via the CommonMark JS Parser. You can use images, videos and alike by placing them in the same directory as the source file.
  • HTML files (html): HTML is inserted as is. You can use images, videos and alike by placing them in the same directory as the source file. If you need additional JS or HTML insert them right in the HTML as <script> or <style> tags. You can include stylesheets in the config.json file or modify templates/index.tmpl to include scripts on every page.
  • API Blueprint Files (.apib): API Blueprint is a description language for Web APIs. It is rendered via Aglio. There are two styles included in Docs-Assembler, a default Style for API documentation and a "Code" Style where the spec is misused to document classes and its methods (see next subsection)

Initialisation section

At the start of each source file you can add an optional intialisation section. It is separated from the content by the iniSeparator configuration option which defaults to ----. The ini section contains a key-value pair per line in the format Key = Value.

The following options are available:

  • title: If desired, the title of the source file in the file contents which defaults to the filename can be overridden
  • menuTitle: If desired, the page title of the source directory of the current file which defaults to the directory name can be overridden. Use this option only in one source file per directory.
  • parser: Per default, the parser is determined automatically by the file extension. You can manually override this. The allowed values are markdown, html, text and api-blueprint
  • noRest (applies only for .apib files): If set to 1, an alternative formatting style is used which "misuses" the API Blueprint for Class documentation. Note that you still need to add the modifiers like [GET] although they are not displayed in this style, since otherwise it won't render correctly

CLI Usage

The CLI usage is ./index.js config.json. The argument defaults to config.json if no command line argument is given. Note that currently, your working directory needs to be set to the directory where the configuration json file is located.

Missing Features

The following features are desirable or where at some time planned but not yet implemented. I'm happy for pull requests implementing these features!

[ ] Support for YAML API specifications
[ ] Responsive design for the sample
[ ] The script currently only runs successfully when the directory where the config.json is located is also the working directory. This is an annoying restriction that should be removed

docs-assembler's People

Contributors

phoca avatar phocacius avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.