shithub: hell

Download patch

ref: 32956bab7e8c63735cc6a36ab2f8ce5e7997003b
parent: f673c823d1e980cbe5d0da95c7f1a0beef6fcf2b
author: penny <penny@limitedideas.org>
date: Sun Oct 5 13:04:21 EDT 2025

templates implemented

--- a/main.go
+++ b/main.go
@@ -259,12 +259,9 @@
 					index = lastindex
 				}
 				formatter := &StatusFormatter{hc: hc, status: postItem, postContext: hc.ctxref}
-				var sb strings.Builder
-				sb.WriteString(fmt.Sprintf("%s> %s %s", index, formatter.username(), formatter.statusContent()))
-				sb.WriteString(formatter.mediaDescriptions())
-				sb.WriteString(formatter.detailLine())
-				sb.WriteString("\n")
-				fmt.Print(hyphenate(sb.String()))
+				templater := newStatusTemplateRenderer(formatter)
+				line, _ := templater.render(fmt.Sprintf("%s> $username $content $media_descriptions\n$detail_line", index))
+				fmt.Print(line)
 				return
 			case "like":
 				_, err := client.Favourite(context.Background(), postItem.ID)
--- a/renderer.go
+++ b/renderer.go
@@ -97,6 +97,15 @@
 	return dl.detailLine()
 }
 
+// Formatted <username> stringer
+type username struct {
+	*StatusFormatter
+}
+
+func (usr *username) String() string {
+	return usr.username()
+}
+
 func (hc *Hellclient) renderStatus(content string, index string) (string, map[string]string) {
 	doc, err := html.Parse(strings.NewReader(content))
 	if err != nil {
--- a/templater.go
+++ b/templater.go
@@ -2,6 +2,7 @@
 
 import (
 	"fmt"
+	"os"
 )
 
 type templateDefs struct {
@@ -17,9 +18,23 @@
 func newStatusTemplateRenderer(sf *StatusFormatter) *templateRenderer {
 	return &templateRenderer{
 		tempdefs: []*templateDefs{
-			{key: "status", stringer: &statusContent{sf}},
+			{key: "content", stringer: &statusContent{sf}},
 			{key: "media_descriptions", stringer: &mediaDescriptions{sf}},
 			{key: "detail_line", stringer: &detailLine{sf}},
+			{key: "username", stringer: &username{sf}},
 		},
 	}
+}
+
+func (tr *templateRenderer) render(template string) (string, error) {
+	expandMap := func(key string) string {
+		for item := range tr.tempdefs {
+			if key == tr.tempdefs[item].key {
+				return tr.tempdefs[item].stringer.String()
+			}
+		}
+		return fmt.Sprintf("%KEY_NOT_FOUND:%s", key)
+	}
+
+	return hyphenate(os.Expand(template, expandMap)), nil
 }
--