Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cowboy/node-toc
Linkify HTML headers and generate a TOC.
https://github.com/cowboy/node-toc
Last synced: about 2 months ago
JSON representation
Linkify HTML headers and generate a TOC.
- Host: GitHub
- URL: https://github.com/cowboy/node-toc
- Owner: cowboy
- License: mit
- Created: 2013-03-07T18:10:08.000Z (almost 12 years ago)
- Default Branch: master
- Last Pushed: 2014-02-28T21:01:00.000Z (almost 11 years ago)
- Last Synced: 2024-10-13T18:16:29.899Z (2 months ago)
- Language: JavaScript
- Size: 164 KB
- Stars: 17
- Watchers: 3
- Forks: 7
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE-MIT
Awesome Lists containing this project
README
# toc [![Build Status](https://secure.travis-ci.org/cowboy/node-toc.png?branch=master)](http://travis-ci.org/cowboy/node-toc)
Linkify HTML headers and generate a TOC.
## Getting Started
Install the module with: `npm install toc````js
var toc = require('toc');
```## Documentation
### toc.untag
Strip HTML tags from a string.```js
var stripped = toc.untag(html);
```### toc.anchor
Convert a string of text into something URL-friendly and not too fugly.```js
var anchor = toc.anchor(arbitraryText);
```### toc.unique
Get a unique name and store the returned name in names for future unique-name-gettingness.```js
var names = {};
var guaranteedUniqueAnchor1 = toc.unique(names, toc.anchor(arbitraryText));
var guaranteedUniqueAnchor2 = toc.unique(names, toc.anchor(arbitraryText));
```### toc.process
Anchorize all headers and inline a generated TOC, returning processed HTML.```js
var htmlWithAnchorsAndTOC = toc.process(html [, options]);
```#### options
* **placeholder** - `RegExp` - Used to match TOC placeholder. Defaults to `//gi`.
* _Because this method calls the `toc.anchorize` and `toc.toc` methods internally, their options may be specified as well._### toc.anchorize
Parse HTML, returning an array of header objects and anchorized HTML.```js
var obj = toc.anchorize(html [, options]);
```#### options
* **headers** - `RegExp` - Used to match HTML headers. Defaults to `/]*)>([\s\S]+?)<\/h\1>/gi`.
* **tocMin** - `Number` - Min header level to add to TOC. Defaults to `2`.
* **tocMax** - `Number` - Max header level to add to TOC. Defaults to `6`.
* **anchorMin** - `Number` - Min header level to anchorize. Defaults to `2`.
* **anchorMax** - `Number` - Max header level to anchorize. Defaults to `6`.
* **header** - `String` | `Function` - Lodash template string or function used to anchorize a header.### toc.toc
Generate TOC HTML from an array of header objects.```js
var obj = toc.toc(headers [, options]);
```#### options
* **openUL** - `String` | `Function` - Lodash template string or function used to generate the TOC.
* **closeUL** - `String` | `Function` - Lodash template string or function used to generate the TOC.
* **openLI** - `String` | `Function` - Lodash template string or function used to generate the TOC.
* **closeLI** - `String` | `Function` - Lodash template string or function used to generate the TOC.
* **TOC** - `String` | `Function` - Lodash template string or function used to wrap the generated TOC.## Examples
The default HTML is pretty awesome, but you can customize the hell out of the generated HTML, eg.
```js
var processedHTML = toc.process(unprocessedHTML, {
header: '<%= attrs %> id="<%= anchor %>"><%= header %>>',
TOC: '<%= toc %>',
openUL: '
- ',
closeUL: '
openLI: '
<%= text %>',
closeLI: '
});
```
## Contributing
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [Grunt](http://gruntjs.com/).
## Release History
2014-02-28 - v0.4.0 - Updated a bunch of dependencies. Functionality shouldn't change, and all test pass, but YMMV.
2013-03-08 - v0.3.0 - Separated `.process` method internals into `.anchorize` and `.toc` methods. Renamed `toc` template option to `TOC`.
2013-03-07 - v0.2.0 - Second official release. Minor changes.
2013-03-07 - v0.1.0 - First official release.