rittenhop-ghost/versions/5.94.2/node_modules/@tryghost/helpers/lib/utils/reading-minutes.js

40 lines
1.1 KiB
JavaScript

import countImages from './count-images';
import countWords from './count-words';
export function estimatedReadingTimeInMinutes({wordCount, imageCount}) {
const wordsPerMinute = 275;
const wordsPerSecond = wordsPerMinute / 60;
let readingTimeSeconds = wordCount / wordsPerSecond;
// add 12 seconds for the first image, 11 for the second, etc. limiting at 3
for (var i = 12; i > 12 - imageCount; i -= 1) {
readingTimeSeconds += Math.max(i, 3);
}
let readingTimeMinutes = Math.round(readingTimeSeconds / 60);
return readingTimeMinutes;
}
/**
* Reading minutes method
*
* @param {string} html - HTML that we want to calculate reading time for
* @param {string} additionalImages - additional images that need to be taken into account outside HTML
* @returns {number} estimated reading in minutes
*/
export default function readingMinutes(html, additionalImages) {
if (!html) {
return '';
}
let imageCount = countImages(html);
let wordCount = countWords(html);
if (additionalImages) {
imageCount += additionalImages;
}
return estimatedReadingTimeInMinutes({wordCount, imageCount});
}