From 69d96d646db6d0d7a1f53ada1c5b0fd9b2e36a69 Mon Sep 17 00:00:00 2001
From: httpjamesm
Date: Sat, 4 Feb 2023 13:40:57 -0500
Subject: [PATCH] feat: question tags
---
public/question.css | 16 +++++++++++++++-
src/routes/question.go | 3 +++
src/types/question.go | 1 +
src/utils/tags.go | 13 +++++++++++++
templates/question.html | 5 +++++
5 files changed, 37 insertions(+), 1 deletion(-)
create mode 100644 src/utils/tags.go
diff --git a/public/question.css b/public/question.css
index c8f1d2c..0b947ba 100644
--- a/public/question.css
+++ b/public/question.css
@@ -29,6 +29,20 @@ body {
justify-content: space-between;
}
+.card-tags {
+ display: flex;
+ gap: .5rem;
+}
+
+.card-tags .tag {
+ background-color: var(--meta-bg);
+ color: var(--tag-text-color);
+ padding: 0.5rem;
+ border-radius: 5px;
+ font-size: 0.8rem;
+ text-decoration: none;
+}
+
code {
background-color: var(--code-bg);
padding: 0.15rem;
@@ -123,7 +137,7 @@ img {
.answers-header .sorting form {
display: flex;
align-items: center;
- gap: .5rem;
+ gap: 0.5rem;
}
.answers-header select {
diff --git a/src/routes/question.go b/src/routes/question.go
index 0571153..fbaf49f 100644
--- a/src/routes/question.go
+++ b/src/routes/question.go
@@ -98,6 +98,9 @@ func ViewQuestion(c *gin.Context) {
questionPostLayout := doc.Find("div.post-layout").First()
+ questionTags := utils.GetPostTags(questionPostLayout)
+ newFilteredQuestion.Tags = questionTags
+
questionBodyParent := doc.Find("div.s-prose")
questionBodyParentHTML, err := questionBodyParent.Html()
diff --git a/src/types/question.go b/src/types/question.go
index 2850532..128142d 100644
--- a/src/types/question.go
+++ b/src/types/question.go
@@ -10,4 +10,5 @@ type FilteredQuestion struct {
AuthorURL string
ShortenedBody string
Comments []FilteredComment
+ Tags []string
}
diff --git a/src/utils/tags.go b/src/utils/tags.go
new file mode 100644
index 0000000..fa60239
--- /dev/null
+++ b/src/utils/tags.go
@@ -0,0 +1,13 @@
+package utils
+
+import (
+ "github.com/PuerkitoBio/goquery"
+)
+
+func GetPostTags(postLayout *goquery.Selection) []string {
+ var tags []string
+ postLayout.Find("a.post-tag").Each(func(i int, s *goquery.Selection) {
+ tags = append(tags, s.Text())
+ })
+ return tags
+}
diff --git a/templates/question.html b/templates/question.html
index 713028d..a9d90a9 100644
--- a/templates/question.html
+++ b/templates/question.html
@@ -38,6 +38,11 @@
{{ .question.Body }}
+
{{ if .question.Comments }} {{ template "comments.html"
.question }} {{end}}