From c7cd941e5f8c36e9d19fa44438186836bcd19fcb Mon Sep 17 00:00:00 2001
From: Jacky Zhao <j.zhao2k19@gmail.com>
Date: Sat, 2 Sep 2023 18:07:26 -0700
Subject: [PATCH] feat: pluralize things in lists

---
 quartz/components/pages/FolderContent.tsx | 3 ++-
 quartz/components/pages/TagContent.tsx    | 5 +++--
 quartz/util/lang.ts                       | 7 +++++++
 3 files changed, 12 insertions(+), 3 deletions(-)
 create mode 100644 quartz/util/lang.ts

diff --git a/quartz/components/pages/FolderContent.tsx b/quartz/components/pages/FolderContent.tsx
index dc076c4..a766d4b 100644
--- a/quartz/components/pages/FolderContent.tsx
+++ b/quartz/components/pages/FolderContent.tsx
@@ -7,6 +7,7 @@ import style from "../styles/listPage.scss"
 import { PageList } from "../PageList"
 import { _stripSlashes, simplifySlug } from "../../util/path"
 import { Root } from "hast"
+import { pluralize } from "../../util/lang"
 
 function FolderContent(props: QuartzComponentProps) {
   const { tree, fileData, allFiles } = props
@@ -36,7 +37,7 @@ function FolderContent(props: QuartzComponentProps) {
       <article>
         <p>{content}</p>
       </article>
-      <p>{allPagesInFolder.length} items under this folder.</p>
+      <p>{pluralize(allPagesInFolder.length, "item")} under this folder.</p>
       <div>
         <PageList {...listProps} />
       </div>
diff --git a/quartz/components/pages/TagContent.tsx b/quartz/components/pages/TagContent.tsx
index fb72e28..9907e3f 100644
--- a/quartz/components/pages/TagContent.tsx
+++ b/quartz/components/pages/TagContent.tsx
@@ -6,6 +6,7 @@ import { PageList } from "../PageList"
 import { FullSlug, getAllSegmentPrefixes, simplifySlug } from "../../util/path"
 import { QuartzPluginData } from "../../plugins/vfile"
 import { Root } from "hast"
+import { pluralize } from "../../util/lang"
 
 const numPages = 10
 function TagContent(props: QuartzComponentProps) {
@@ -60,7 +61,7 @@ function TagContent(props: QuartzComponentProps) {
                 </h2>
                 {content && <p>{content}</p>}
                 <p>
-                  {pages.length} items with this tag.{" "}
+                  {pluralize(pages.length, "item")} with this tag.{" "}
                   {pages.length > numPages && `Showing first ${numPages}.`}
                 </p>
                 <PageList limit={numPages} {...listProps} />
@@ -80,7 +81,7 @@ function TagContent(props: QuartzComponentProps) {
     return (
       <div class="popover-hint">
         <article>{content}</article>
-        <p>{pages.length} items with this tag.</p>
+        <p>{pluralize(pages.length, "item")} with this tag.</p>
         <div>
           <PageList {...listProps} />
         </div>
diff --git a/quartz/util/lang.ts b/quartz/util/lang.ts
new file mode 100644
index 0000000..eb03a24
--- /dev/null
+++ b/quartz/util/lang.ts
@@ -0,0 +1,7 @@
+export function pluralize(count: number, s: string): string {
+  if (count === 1) {
+    return `1 ${s}`
+  } else {
+    return `${count} ${s}s`
+  }
+}