<!-- Generated by documentation.js. Update this documentation by updating the source code. -->

### Table of Contents

-   [lint][1]
-   [build][2]
-   [formats][3]
-   [formats.html][4]
-   [formats.markdown][5]
-   [formats.json][6]

## lint

Lint files for non-standard or incorrect documentation
information, returning a potentially-empty string
of lint information intended for human-readable output.

Type: `function (indexes, args): Promise`

-   `indexes` **([Array][7]&lt;[string][8]> | [string][8])** files to process
-   `args` **[Object][9]** args
    -   `args.external` **[Array][7]&lt;[string][8]>** a string regex / glob match pattern
        that defines what external modules will be whitelisted and included in the
        generated documentation.
    -   `args.shallow` **[boolean][10]** whether to avoid dependency parsing
        even in JavaScript code. (optional, default `false`)
    -   `args.inferPrivate` **[string][8]?** a valid regular expression string
        to infer whether a code element should be private, given its naming structure.
        For instance, you can specify `inferPrivate: '^_'` to automatically treat
        methods named like `_myMethod` as private.
    -   `args.extension` **([string][8] \| [Array][7]&lt;[string][8]>)?** treat additional file extensions
        as JavaScript, extending the default set of `js`, `es6`, and `jsx`.

Example:

```javascript
documentation.lint('file.js').then(lintOutput => {
  if (lintOutput) {
    console.log(lintOutput);
    process.exit(1);
  } else {
    process.exit(0);
  }
});
```

* * *

## build

Generate JavaScript documentation as a list of parsed JSDoc
comments, given a root file as a path.

Type: `function (indexes, args): Promise`

-   `indexes` **([Array][7]&lt;[string][8]> | [string][8])** files to process
-   `args` **[Object][9]** args
    -   `args.external` **[Array][7]&lt;[string][8]>** a string regex / glob match pattern
        that defines what external modules will be whitelisted and included in the
        generated documentation.
    -   `args.shallow` **[boolean][10]** whether to avoid dependency parsing
        even in JavaScript code. (optional, default `false`)
    -   `args.order` **[Array][7]&lt;([string][8] \| [Object][9])>** optional array that
        defines sorting order of documentation (optional, default `[]`)
    -   `args.access` **[Array][7]&lt;[string][8]>** an array of access levels
        to output in documentation (optional, default `[]`)
    -   `args.hljs` **[Object][9]?** hljs optional args
        -   `args.hljs.highlightAuto` **[boolean][10]** hljs automatically detect language (optional, default `false`)
        -   `args.hljs.languages` **[Array][7]?** languages for hljs to choose from
    -   `args.inferPrivate` **[string][8]?** a valid regular expression string
        to infer whether a code element should be private, given its naming structure.
        For instance, you can specify `inferPrivate: '^_'` to automatically treat
        methods named like `_myMethod` as private.
    -   `args.extension` **([string][8] \| [Array][7]&lt;[string][8]>)?** treat additional file extensions
        as JavaScript, extending the default set of `js`, `es6`, and `jsx`.

Example:

```javascript
var documentation = require('documentation');

documentation.build(['index.js'], {
  // only output comments with an explicit @public tag
  access: ['public']
}).then(res => {
  // res is an array of parsed comments with inferred properties
  // and more: everything you need to build documentation or
  // any other kind of code data.
});
```

* * *

## formats

Documentation's formats are modular methods that take comments
and config as input and return Promises with results,
like stringified JSON, markdown strings, or Vinyl objects for HTML
output.

Type: `function ()`

* * *

## formats.html

Formats documentation as HTML.

-   `comments` **[Array][7]&lt;[Comment][11]>** parsed comments
-   `config` **[Object][9]** Options that can customize the output
    -   `config.theme` **[string][8]** Name of a module used for an HTML theme. (optional, default `'default_theme'`)

Example:

```javascript
var documentation = require('documentation');
var streamArray = require('stream-array');
var vfs = require('vinyl-fs');

documentation.build(['index.js'])
  .then(documentation.formats.html)
  .then(output => {
    streamArray(output).pipe(vfs.dest('./output-directory'));
  });
```

* * *

## formats.markdown

Formats documentation as
[Markdown][12].

-   `comments` **[Array][7]&lt;[Object][9]>** parsed comments
-   `args` **[Object][9]** Options that can customize the output

Example:

```javascript
var documentation = require('documentation');
var fs = require('fs');

documentation.build(['index.js'])
  .then(documentation.formats.md)
  .then(output => {
    // output is a string of Markdown data
    fs.writeFileSync('./output.md', output);
  });
```

* * *

## formats.json

Formats documentation as a JSON string.

-   `comments` **[Array][7]&lt;[Comment][11]>** parsed comments

Example:

```javascript
var documentation = require('documentation');
var fs = require('fs');

documentation.build(['index.js'])
  .then(documentation.formats.json)
  .then(output => {
    // output is a string of JSON data
    fs.writeFileSync('./output.json', output);
  });
```

* * *

[1]: #lint

[2]: #build

[3]: #formats

[4]: #formatshtml

[5]: #formatsmarkdown

[6]: #formatsjson

[7]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array

[8]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String

[9]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object

[10]: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean

[11]: https://developer.mozilla.org/docs/Web/API/Comment/Comment

[12]: http://daringfireball.net/projects/markdown/
