From 39c6402253764ce8853b63e2e261c7df82feffc8 Mon Sep 17 00:00:00 2001 From: Carter McBride <18412686+carterworks@users.noreply.github.com> Date: Wed, 19 Jun 2024 15:31:57 -0600 Subject: [PATCH] Add a relative time formatter (#7) --- bun.lockb | Bin 69812 -> 70196 bytes config/template.html | 2 +- package.json | 1 + src/renderer.ts | 8 ++++++-- 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/bun.lockb b/bun.lockb index 323630e3111aab59481047fd6b9b1f3ec4a75863..2b544528996eec2cd79d6294f8c964fbcba90af5 100755 GIT binary patch delta 12033 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 delta 11950 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 diff --git a/config/template.html b/config/template.html index 021f6cc..414a0fa 100644 --- a/config/template.html +++ b/config/template.html @@ -27,7 +27,7 @@
  • {{ item.title }} - +
  • {% endfor %} diff --git a/package.json b/package.json index 594f39c..88ac0b2 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "license": "MIT", "dependencies": { "chalk": "^5.2.0", + "javascript-time-ago": "^2.5.10", "node-fetch": "^3.3.1", "nunjucks": "^3.2.4", "rss-parser": "^3.13.0" diff --git a/src/renderer.ts b/src/renderer.ts index 59eb97c..1dbda63 100644 --- a/src/renderer.ts +++ b/src/renderer.ts @@ -8,13 +8,17 @@ import nunjucks from "nunjucks"; const env: nunjucks.Environment = nunjucks.configure({ autoescape: true }); import { readFile } from "node:fs/promises"; import type { Feeds, JSONValue } from "./@types/bubo"; +import TimeAgo from "javascript-time-ago"; +import en from "javascript-time-ago/locale/en"; +TimeAgo.addDefaultLocale(en); +const timeFormatter = new TimeAgo("en-US"); /** * Global filters for my Nunjucks templates */ -env.addFilter("formatDate", (dateString): string => { +env.addFilter("relative", (dateString): string => { const date: Date = new Date(Number.parseInt(dateString)); - return !Number.isNaN(date.getTime()) ? date.toLocaleDateString() : dateString; + return !Number.isNaN(date.getTime()) ? timeFormatter.format(date) : dateString; }); env.addFilter("formatTime", (dateString): string => {