Bookworm for Laravel: A Time Estimation Package
Bookworm for Laravel is a time estimation package that can be used to estimate how much time is needed to read a certain piece of text. It can be installed in Laravel projects and used to calculate the estimated reading time of articles, blog posts, or any other text content.
Benefits
Bookworm for Laravel is a useful package for any Laravel developer who needs to estimate the reading time of text content. This package can be used in a variety of scenarios, such as:
- Estimating the reading time of blog posts or articles
- Take the reading time of code blocks and Images into consideration
- Helping users decide whether to read a piece of content based on its estimated reading time
By using Bookworm for Laravel, you can provide a better user experience for your readers by giving them an idea of how long it will take to read your content. This can help them plan their time more effectively and make informed decisions about what content to read.
Installation
To install Bookworm for Laravel, run the following command in your Laravel project:
composer require shtayeb/bookworm
After installing the package, you need to publish the config file by running the following command:
php artisan vendor:publish --provider="SHTayeb\\Bookworm\\BookwormServiceProvider"
This will create a bookworm.php
file in your config
directory.
Usage
To use Bookworm for Laravel, you need to create an instance of the Bookworm
class and call the estimate
method with the text you want to estimate the reading time for.
<?php
use SHTayeb\\Bookworm\\Bookworm;
$text = '...';
$time = (new Bookworm())->estimate($text);
echo $time; // 5 minutes
You can also count the number of words in a text using the countWords
method:
$word_count = (new Bookworm())->countWords($text);
echo $word_count; // 1,000
Configuration
The package comes with default configuration values that can be overridden by publishing the config file. You can change these values in the config/bookworm.php
file.
return [
'words_per_minute' => 200,
'codewords_per_minute' => 200,
'seconds_per_image' => 12,
];
- The
words_per_minute
value is the average number of words a person can read in one minute. - The
codewords_per_minute
value is the average number of words in a code section a person can read in one minute. - The
seconds_per_image
value is the average number of seconds a person looks at an image.
Real-life Example
Suppose you run a blog and want to display the estimated reading time of your blog posts. You can use this package to calculate the estimated reading time and display it on your blog post page.
In a Controller
<?php
use SHTayeb\\Bookworm\\Bookworm;
// get blog post content from database
$post = Post::find(1);
// calculate estimated reading time
$reading_time = (new Bookworm())->estimate($post->content);
And display the result in your blade views
// display estimated reading time on blog post page
<div class="reading-time">{{ $reading_time }} min read</div>
Using Accessors
Accessors are methods that allow you to access and modify the values of an object’s properties.
In this case, create an accessor for content property of your post and return the read time and word count for that post.
public function getReadTimeAttribute():array
{
return [
'word_count' => (new Bookworm())->countWords($this->content),
'read_time' => (new Bookworm())->estimate($this->content),
];
}
Warning
Be carefull of performance while using it with Accessors, since it will be calculated for each post and If you get a list of 100 post, It has to be calculted to all of them.
Conclusion
Bookworm for Laravel is a useful package for any Laravel developer who needs to estimate the reading time of text content. By using this package, you can provide a better user experience for your readers and help them make informed decisions about what content to read.