Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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.
- Host: GitHub
- URL: https://github.com/jonschlinkert/html-toc
- Owner: jonschlinkert
- License: mit
- Created: 2017-03-10T15:02:14.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2021-09-02T15:01:20.000Z (about 3 years ago)
- Last Synced: 2024-10-04T13:38:45.990Z (about 1 month ago)
- Topics: cheerio, html, table-of-contents, toc
- Language: HTML
- Size: 17.6 KB
- Stars: 17
- Watchers: 3
- Forks: 3
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Contributing: .github/contributing.md
- License: LICENSE
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**
**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._