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 }}
+
+ {{ range .question.Tags }} +
{{ . }}
+ {{ end }} +
{{ if .question.Comments }} {{ template "comments.html" .question }} {{end}}