https://github.com/assemble/grunt-assemble-wordcount
Assemble middleware for displaying a word-count, and estimated reading time on blog posts or pages.
https://github.com/assemble/grunt-assemble-wordcount
Last synced: about 1 year ago
JSON representation
Assemble middleware for displaying a word-count, and estimated reading time on blog posts or pages.
- Host: GitHub
- URL: https://github.com/assemble/grunt-assemble-wordcount
- Owner: assemble
- License: mit
- Created: 2013-11-18T04:20:49.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2017-03-17T23:09:25.000Z (about 9 years ago)
- Last Synced: 2025-03-23T00:01:41.109Z (about 1 year ago)
- Language: JavaScript
- Homepage:
- Size: 50.8 KB
- Stars: 10
- Watchers: 11
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# grunt-assemble-wordcount [](http://badge.fury.io/js/grunt-assemble-wordcount)
> Assemble plugin for displaying wordcount and average reading time to blog posts or pages.
## Quickstart
In the command line, run:
```bash
npm install grunt-assemble-wordcount --save
```
Next, register the plugin with Assemble:
```js
assemble: {
options: {
plugins: ['grunt-assemble-wordcount', 'other/plugins/*']
}
}
```
Visit the [plugins docs](http://assemble.io/plugins/) for more info or for help getting started.
## Options
### speed
Type: `Number`
Default: `300`
Average "words per minute" to use for calculating reading time. This plugin uses 300 as the default based on the averages listed in [this Forbes article](http://onforb.es/1crk3KF).
### seconds
Type: `Boolean`
Default: `undefined`
Define `seconds: true` in the option to display seconds and minutes. Example: `7 min, 47 sec`. (by default time is rendered in 1 minute increments, e.g. `8 min`).
### placement
Type: `String`
Default: `prepend`
Determines whether the wordcount and reading time will be prepended or appended. Example:
### selector
Type: `String`
Default: `.wordcount`
The selector to target for the element that wraps the content that contains the words to count.
### countSelector
Type: `String`
Default: `.label-wordcount`
The selector to use for the element that will render the wordcount.
### timeSelector
Type: `String`
Default: `.label-reading-time`
The selector to use for the element that will render the estimated reading time.
## Usage Examples
### Basic example
**In your templates**
* `class="wordcount"` must wrap the content that the plugin should run against
* `class="label-wordcount"` on the element that should render the wordcount.
* `class="label-reading-time"` on the element that should render the reading time.
```html
words
read
{{> body }}
```
**Rendered HTML**
```html
1561 words
7 min read
In deserunt venison doner velit cow pastrami magna dolore ut jerky proident
esse laborum. Fatback strip steak biltong tri-tip beef pork belly spare ribs
in ut capicola. Sunt qui t-bone jerky est culpa. Deserunt duis adipisicing
ullamco ex, eiusmod beef salami labore non chuck occaecat tenderloin shank
cillum. Quis t-bone hamburger pancetta aliqua dolor. Magna eu ground round
aliqua...
```
### Change selectors
The default selector is `.wordcount`. You can change this in the options as follows:
```js
options: {
plugins: ['grunt-assemble-wordcount'],
wordcount: {
selector: '.foo',
countSelector: '.bar'
timeSelector: '.baz'
}
}
```
And in your templates:
```html
{{> post }}
```
Then in `post.hbs`:
```html
Breaking News
read
```
### Display seconds
In the plugin's options, define `seconds: true`:
```js
options: {
plugins: ['grunt-assemble-wordcount'],
wordcount: {
seconds: true
}
}
```
The result will look something like this:
```html
1561 words
7 minutes, 48 seconds read
```
If less than 1 minute, the results will look something like this:
```html
12 words
2 seconds read
```
### Placement
By default, wordcount and reading time are prepended to the text node of the specified element. Example:
```html
1561 words
7 minutes, 48 seconds read
```
You can change this to `append` in the options:
```js
options: {
wordcount: {
placement: 'append'
}
}
```
And this template:
```html
Words:
Estimated reading time:
```
Would result in:
```html
Words: 1561
Estimated reading time: 8 minutes
```
***
## Contributing
Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/assemble/grunt-assemble-wordcount/issues/new).
## Authors
**Jon Schlinkert**
+ [github/jonschlinkert](https://github.com/jonschlinkert)
+ [twitter/jonschlinkert](http://twitter.com/jonschlinkert)
## Other grunt-assemble plugins
* [grunt-assemble](https://www.npmjs.com/package/grunt-assemble): Static site generator for Grunt.js, Yeoman and Node.js. Used by Zurb Foundation, Zurb Ink, H5BP/Effeckt,… [more](https://www.npmjs.com/package/grunt-assemble) | [homepage](http://assemble.io)
* [grunt-assemble-anchors](https://www.npmjs.com/package/grunt-assemble-anchors): Assemble plugin for creating anchor tags from headings in generated html using Cheerio.js. | [homepage](https://github.com/assemble/grunt-assemble-anchors)
* [grunt-assemble-contextual](https://www.npmjs.com/package/grunt-assemble-contextual): Generates a JSON file with the context of each page. Basic plugin to help see… [more](https://www.npmjs.com/package/grunt-assemble-contextual) | [homepage](https://github.com/assemble/grunt-assemble-contextual)
* [grunt-assemble-decompress](https://www.npmjs.com/package/grunt-assemble-decompress): Assemble plugin for extracting zip, tar and tar.gz archives. | [homepage](https://github.com/assemble/grunt-assemble-decompress)
* [grunt-assemble-download](https://www.npmjs.com/package/grunt-assemble-download): Assemble plugin for downloading files from GitHub. | [homepage](https://github.com/assemble/grunt-assemble-download)
* [grunt-assemble-i18n](https://www.npmjs.com/package/grunt-assemble-i18n): Plugin for adding i18n support to Assemble projects. | [homepage](https://github.com/assemble/grunt-assemble-i18n)
* [grunt-assemble-lunr](https://www.npmjs.com/package/grunt-assemble-lunr): Assemble plugin for adding search capabilities to your static site, with lunr.js. | [homepage](http://assemble.io)
* [grunt-assemble-navigation](https://www.npmjs.com/package/grunt-assemble-navigation): Assemble navigation plugin. Automatically generate Bootstrap-style, multi-level side nav. See the sidenav on assemble.io for… [more](https://www.npmjs.com/package/grunt-assemble-navigation) | [homepage](https://github.com/assemble/grunt-assemble-navigation)
* [grunt-assemble-permalinks](https://www.npmjs.com/package/grunt-assemble-permalinks): Permalinks plugin for Assemble, the static site generator for Grunt.js, Yeoman and Node.js. This plugin… [more](https://www.npmjs.com/package/grunt-assemble-permalinks) | [homepage](https://github.com/assemble/grunt-assemble-permalinks)
* [grunt-assemble-sitemap](https://www.npmjs.com/package/grunt-assemble-sitemap): Sitemap plugin for Assemble | [homepage](http://assemble.io/plugins)
* [grunt-assemble-toc](https://www.npmjs.com/package/grunt-assemble-toc): Assemble middleware for adding a Table of Contents (TOC) to any HTML page. | [homepage](http://assemble.io)
## License
Copyright © 2015 Jon Schlinkert
Released under the MIT license.
***
_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on September 25, 2015._