Last active
October 21, 2020 23:00
-
-
Save zachleat/5792681 to your computer and use it in GitHub Desktop.
Read this in X minutes Liquid Filter Plugin (for Jekyll)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Outputs the reading time | |
# Read this in “about 4 minutes” | |
# Put into your _plugins dir in your Jekyll site | |
# Usage: Read this in about {{ page.content | reading_time }} | |
module ReadingTimeFilter | |
def reading_time( input ) | |
words_per_minute = 180 | |
words = input.split.size; | |
minutes = ( words / words_per_minute ).floor | |
minutes_label = minutes === 1 ? " minute" : " minutes" | |
minutes > 0 ? "about #{minutes} #{minutes_label}" : "less than 1 minute" | |
end | |
end | |
Liquid::Template.register_filter(ReadingTimeFilter) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Very nice, thanks for providing this.
I've forked this script to remove the dependence on the surrounding text (i.e. "about...") and remove all the text, so it now returns only an integer. This should make it more useful for multi-language implementations. There's already plenty of capability in Liquid's conditionals to handle proper pluralization. Optionally, one could leverage the Jekyll "pluralize" plugin to assist with this.
This is a rather opinionated set of changes, so I've gone so far as to change the Filter name as well, to avoid confusion with your work. However, if you'd like to take on or collaborate on these changes, we can certainly come up with a reasonable fusion, or you may of course simply use them how you wish. Thanks again for this work.
A sample implementation of these edits is here.