From 0c66619f0f2975989062717f7c899c42a68d4d76 Mon Sep 17 00:00:00 2001 From: Shadowfacts Date: Sat, 29 Jun 2019 16:01:05 -0400 Subject: [PATCH] Add reading time estimate --- lib/generate/posts.ts | 2 ++ lib/generate/tutorials.ts | 2 ++ lib/metadata.ts | 1 + lib/util.ts | 6 ++++++ site/css/main.scss | 4 +++- site/includes/article-meta.html.ejs | 7 +++++-- 6 files changed, 19 insertions(+), 3 deletions(-) diff --git a/lib/generate/posts.ts b/lib/generate/posts.ts index 310772f..44dda78 100644 --- a/lib/generate/posts.ts +++ b/lib/generate/posts.ts @@ -23,6 +23,8 @@ export default async function posts(): Promise { } if (page.metadata.source && page.metadata.source!.endsWith(".md")) { + (page.metadata).readingTime = util.getReadingTime(page.text); + page.text = markdown.render(page.text); } diff --git a/lib/generate/tutorials.ts b/lib/generate/tutorials.ts index 87bd6b7..1d4e06e 100644 --- a/lib/generate/tutorials.ts +++ b/lib/generate/tutorials.ts @@ -23,6 +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.text = markdown.render(page.text); } diff --git a/lib/metadata.ts b/lib/metadata.ts index ad7d29b..051a86a 100644 --- a/lib/metadata.ts +++ b/lib/metadata.ts @@ -17,6 +17,7 @@ export interface PostMetadata extends Metadata { slug: string; category: string; date: string | Date; + readingTime?: number; excerpt?: string; uuid: string; } diff --git a/lib/util.ts b/lib/util.ts index f508a15..830210b 100644 --- a/lib/util.ts +++ b/lib/util.ts @@ -12,6 +12,12 @@ export async function write(filePath: string, data: any) { await fs.writeFile(dest, data); } +export function getReadingTime(text: string): number { + const avgWPM = 225; + const words = text.split(/\s+/).length; + return Math.max(1, Math.round(words / avgWPM)) +} + export function highlight(source: string, language?: string): string { const res = language ? hljs.highlight(language, source) : hljs.highlightAuto(source); const highlighted = res.value; diff --git a/site/css/main.scss b/site/css/main.scss index 2095973..febdf03 100644 --- a/site/css/main.scss +++ b/site/css/main.scss @@ -58,7 +58,6 @@ article { color: var(--secondary-ui-text-color); font-family: $monospace; font-size: 14px; - text-decoration: none !important; } a { text-decoration: none; } } @@ -122,6 +121,9 @@ article { font-size: 14px; font-weight: lighter; color: var(--secondary-ui-text-color); + + a { text-decoration: underline; } + a::before, a::after { content: ""; } } .article-content { diff --git a/site/includes/article-meta.html.ejs b/site/includes/article-meta.html.ejs index 7332586..1cbe49c 100644 --- a/site/includes/article-meta.html.ejs +++ b/site/includes/article-meta.html.ejs @@ -1,4 +1,5 @@ \ No newline at end of file