From 8b7a65671c5558098af7e7f43078fe38e8b8afec Mon Sep 17 00:00:00 2001 From: Shadowfacts Date: Mon, 11 Nov 2019 21:28:52 -0500 Subject: [PATCH] Include word count in article metadata --- lib/generate/posts.ts | 3 ++- lib/generate/tutorials.ts | 3 ++- lib/metadata.ts | 3 ++- lib/util.ts | 9 ++++++--- site/includes/article-meta.html.ejs | 2 +- 5 files changed, 13 insertions(+), 7 deletions(-) diff --git a/lib/generate/posts.ts b/lib/generate/posts.ts index c159502..9c7362b 100644 --- a/lib/generate/posts.ts +++ b/lib/generate/posts.ts @@ -26,7 +26,8 @@ export default async function posts(): Promise { page.text = util.render(page.text, { metadata: page.metadata }, postPath); if (page.metadata.source && page.metadata.source!.endsWith(".md")) { - (page.metadata).readingTime = util.getReadingTime(page.text); + (page.metadata).wordCount = util.getWordCount(page.text); + (page.metadata).readingTime = util.getReadingTime((page.metadata).wordCount); page.text = markdown.render(page.text); } diff --git a/lib/generate/tutorials.ts b/lib/generate/tutorials.ts index 3eed1e3..8d1f0f3 100644 --- a/lib/generate/tutorials.ts +++ b/lib/generate/tutorials.ts @@ -23,7 +23,8 @@ async function generateTutorials(group: string): Promise { } if (page.metadata.source && page.metadata.source!.endsWith(".md")) { - (page.metadata).readingTime = util.getReadingTime(page.text); + (page.metadata).wordCount = util.getWordCount(page.text); + (page.metadata).readingTime = util.getReadingTime((page.metadata).wordCount); page.text = markdown.render(page.text); } diff --git a/lib/metadata.ts b/lib/metadata.ts index 051a86a..bd7ea7c 100644 --- a/lib/metadata.ts +++ b/lib/metadata.ts @@ -18,6 +18,7 @@ export interface PostMetadata extends Metadata { category: string; date: string | Date; readingTime?: number; + wordCount?: number; excerpt?: string; uuid: string; } @@ -34,4 +35,4 @@ export async function get(path: string): Promise { configure(metadata); } return {text, metadata}; -} \ No newline at end of file +} diff --git a/lib/util.ts b/lib/util.ts index 830210b..39bf744 100644 --- a/lib/util.ts +++ b/lib/util.ts @@ -12,9 +12,12 @@ export async function write(filePath: string, data: any) { await fs.writeFile(dest, data); } -export function getReadingTime(text: string): number { +export function getWordCount(text: string): number { + return text.split(/\s+/).length; +} + +export function getReadingTime(words: number): number { const avgWPM = 225; - const words = text.split(/\s+/).length; return Math.max(1, Math.round(words / avgWPM)) } @@ -52,4 +55,4 @@ export function render(template: string, data: any, filename?: string): string { return ejs.render(template, data, { filename }); -} \ No newline at end of file +} diff --git a/site/includes/article-meta.html.ejs b/site/includes/article-meta.html.ejs index 2ad30aa..8ed695b 100644 --- a/site/includes/article-meta.html.ejs +++ b/site/includes/article-meta.html.ejs @@ -17,6 +17,6 @@ <% } %> <% if (metadata.readingTime) { %> • - <%= metadata.readingTime %> min read + <%= metadata.readingTime %> min read <% } %>