shithub: hell

Download patch

ref: d2bf484a155db574da425c4b2522cc4589f4b087
parent: 5364fb89ba736967fff5545cb0fa844e63b1600b
author: penny <penny@limitedideas.org>
date: Mon Oct 6 13:33:59 EDT 2025

macro templates

--- a/main.go
+++ b/main.go
@@ -260,7 +260,7 @@
 				if index == "" {
 					index = lastindex
 				}
-				line, _ := templater.render(fmt.Sprintf("%s> $username $content $media_descriptions\n$detail_line", index))
+				line, _ := templater.render(fmt.Sprintf("%s> $standard_status$detail_line", index))
 				fmt.Print(line)
 				return
 			case "like":
@@ -268,7 +268,7 @@
 				if err != nil {
 					printMastodonErr(err)
 				} else {
-					line, _ := templater.render(fmt.Sprintf("Favourited: %s> $username $content $media_descriptions\n", index))
+					line, _ := templater.render(fmt.Sprintf("Favourited: %s> $standard_status", index))
 					fmt.Print(line)
 				}
 				return
--- a/renderer.go
+++ b/renderer.go
@@ -78,7 +78,6 @@
 			sb.WriteString(" ")
 		}
 	}
-	sb.WriteString("\n")
 	return sb.String()
 }
 
--- a/templater.go
+++ b/templater.go
@@ -16,7 +16,7 @@
 
 // returns a new template renderer loaded with standard format keys
 func newStatusTemplateRenderer(sf *StatusFormatter) *templateRenderer {
-	return &templateRenderer{
+	template := &templateRenderer{
 		tempdefs: []*templateDefs{
 			{key: "content", stringer: &statusContent{sf}},
 			{key: "media_descriptions", stringer: &mediaDescriptions{sf}},
@@ -27,9 +27,23 @@
 			{key: "boosted_media_descriptions", stringer: &boostMediaDescriptions{sf}},
 		},
 	}
+	// macro templates
+	template.tempdefs = append(template.tempdefs, []*templateDefs{
+		{key: "standard_status", stringer: &standardStatus{template}},
+	}...)
+	return template
 }
 
 func (tr *templateRenderer) render(template string) (string, error) {
+	template, _ := tr.renderRaw(template)
+	template, long := hyphenate(template)
+	if long {
+		return template + "\n\n", nil
+	}
+	return template + "\n", nil
+}
+
+func (tr *templateRenderer) renderRaw(template string) (string, error) {
 	expandMap := func(key string) string {
 		for item := range tr.tempdefs {
 			if key == tr.tempdefs[item].key {
@@ -38,9 +52,15 @@
 		}
 		return fmt.Sprintf("[%%KEY_NOT_FOUND:%s]", key)
 	}
-	template, long := hyphenate(os.Expand(template, expandMap))
-	if long {
-		return template + "\n\n", nil
-	}
-	return template + "\n", nil
+	return template, nil
+}
+
+// Renders a status line with username + content + media descriptions
+type standardStatus struct {
+	*templateRenderer
+}
+
+func (ss *standardStatus) String() string {
+	line, _ := ss.renderRaw("$username $content $media_descriptions")
+	return line
 }
--