Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/jonschlinkert/html-toc

Generate a HTML table of contents using cheerio.
https://github.com/jonschlinkert/html-toc

cheerio html table-of-contents toc

Last synced: 24 days ago
JSON representation

Generate a HTML table of contents using cheerio.

Awesome Lists containing this project

README

        

# html-toc [![NPM version](https://img.shields.io/npm/v/html-toc.svg?style=flat)](https://www.npmjs.com/package/html-toc) [![NPM monthly downloads](https://img.shields.io/npm/dm/html-toc.svg?style=flat)](https://npmjs.org/package/html-toc) [![NPM total downloads](https://img.shields.io/npm/dt/html-toc.svg?style=flat)](https://npmjs.org/package/html-toc) [![Linux Build Status](https://img.shields.io/travis/jonschlinkert/html-toc.svg?style=flat&label=Travis)](https://travis-ci.org/jonschlinkert/html-toc)

> Generate a HTML table of contents using cheerio.

## Install

Install with [npm](https://www.npmjs.com/):

```sh
$ npm install --save html-toc
```

## Usage

```js
var toc = require('html-toc');
console.log(toc(htmlString[, options]));
```

## Options

### options.id

**Type**: `string`

**Default**: `#toc` (usage: `

`)

Specify the id for where the table of contents should be injected.

**Example**

```js
toc(str, {id: '#navigation'});
```

Usage:

```html


```

### options.anchors

**Type**: `boolean`

**Default**: `undefined`

Set to `false` to disable anchors.

**Example**

```js
toc(str, {anchors: false});
```

### options.anchorTemplate

Customize the template for creating anchors.

**Type**: `function`

**Default**

```html




```

**Example**

```js
toc(str, {
anchorTemplate: function(id) {
return ``;
}
});
```

### options.selectors

Heading selectors to use for generating the table of contents.

**Type**: `string`

**Default**: `h1,h2`

**Example**

Generate a table of contents for all headings h1-h4.

```js
toc(str, {selectors: 'h1,h2,h3,h4'});
```

### options.parentLink

Set whether to generate `id` attribute based on parent heading

**Type**: `boolean`

**Default**: `true`

**Example**

```js
toc(str, {parentLink: false});
```

### options.slugger

Customize the slugger for generating `id` attribute.

**Type**: `function`

**Default**: [markdown-slug](https://www.npmjs.com/package/markdown-slug)

**Example**

```js
toc(str, {
slugger: function(text) {
const re = /[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g;
return text.toLowerCase().trim().replace(re, '').replace(/\s/g, '-');
}
});
```

### options.header

Specify html to be injected before table of contents.

**Type**: `string`

**Default**: `''`

**Example**

```js
toc(str, {header: '

Contents

'});
```

### options.minLength

Set minimum number of headings for injecting table of contents.

**Type**: `number`

**Default**: `0`

**Example**

```js
toc(str, {minLength: 2});
```

### options.addID

**Type**: `boolean`

**Default**: `false`

Set to `true` to add `id` attribute to selected headings even when headings' number is smaller than `options.minLength`.

**Example**

Always add `id` attribute.

```js
toc(str, {addID: true});
```

## About

### Related projects

* [breakdance](https://www.npmjs.com/package/breakdance): Breakdance is a node.js library for converting HTML to markdown. Highly pluggable, flexible and easy… [more](http://breakdance.io) | [homepage](http://breakdance.io "Breakdance is a node.js library for converting HTML to markdown. Highly pluggable, flexible and easy to use. It's time for your markup to get down.")
* [markdown-toc](https://www.npmjs.com/package/markdown-toc): Generate a markdown TOC (table of contents) with Remarkable. | [homepage](https://github.com/jonschlinkert/markdown-toc "Generate a markdown TOC (table of contents) with Remarkable.")
* [remarkable](https://www.npmjs.com/package/remarkable): Markdown parser, done right. 100% Commonmark support, extensions, syntax plugins, high speed - all in… [more](https://github.com/jonschlinkert/remarkable) | [homepage](https://github.com/jonschlinkert/remarkable "Markdown parser, done right. 100% Commonmark support, extensions, syntax plugins, high speed - all in one.")

### Contributing

Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](../../issues/new).

Please read the [contributing guide](.github/contributing.md) for advice on opening issues, pull requests, and coding standards.

### Contributors

| **Commits** | **Contributor** |
| --- | --- |
| 9 | [dgeibi](https://github.com/dgeibi) |
| 2 | [jonschlinkert](https://github.com/jonschlinkert) |

### Building docs

_(This project's readme.md is generated by [verb](https://github.com/verbose/verb-generate-readme), please don't edit the readme directly. Any changes to the readme must be made in the [.verb.md](.verb.md) readme template.)_

To generate the readme, run the following command:

```sh
$ npm install -g verbose/verb#dev verb-generate-readme && verb
```

### Running tests

Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:

```sh
$ npm install && npm test
```

### Author

**Jon Schlinkert**

* [github/jonschlinkert](https://github.com/jonschlinkert)
* [twitter/jonschlinkert](https://twitter.com/jonschlinkert)

### License

Copyright © 2017, [Jon Schlinkert](https://github.com/jonschlinkert).
Released under the [MIT License](LICENSE).

***

_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on May 14, 2017._