Add more color

This commit is contained in:
Melroy van den Berg 2025-04-24 16:20:20 +02:00
parent 1a8bcb5bf9
commit f97368cc70
No known key found for this signature in database
GPG key ID: 71D11FF23454B9D7

View file

@ -56,17 +56,17 @@ func createSummary(jsonStr string) string {
case "Person", "Application", "Group", "Organization", "Service": case "Person", "Application", "Group", "Organization", "Service":
summaryParts = formatActor(jsonStr, summaryParts, bold, cyan, green, red, yellow) summaryParts = formatActor(jsonStr, summaryParts, bold, cyan, green, red, yellow)
case "Note", "Article", "Page", "Question": case "Note", "Article", "Page", "Question":
summaryParts = formatContent(jsonStr, summaryParts, bold, green) summaryParts = formatContent(jsonStr, summaryParts, bold, green, yellow)
case "Create", "Update", "Delete", "Follow", "Add", "Remove", "Like", "Block", "Announce": case "Create", "Update", "Delete", "Follow", "Add", "Remove", "Like", "Block", "Announce":
summaryParts = formatActivity(jsonStr, summaryParts, bold, green, yellow) summaryParts = formatActivity(jsonStr, summaryParts, bold, green, yellow)
case "Collection", "OrderedCollection", "CollectionPage", "OrderedCollectionPage": case "Collection", "OrderedCollection", "CollectionPage", "OrderedCollectionPage":
summaryParts = formatCollection(jsonStr, summaryParts, bold, green) summaryParts = formatCollection(jsonStr, summaryParts, bold, green, yellow)
case "Image", "Audio", "Video", "Document": case "Image", "Audio", "Video", "Document":
summaryParts = formatMedia(jsonStr, summaryParts, bold, green) summaryParts = formatMedia(jsonStr, summaryParts, bold, green, yellow)
case "Event": case "Event":
summaryParts = formatEvent(jsonStr, summaryParts, bold, green) summaryParts = formatEvent(jsonStr, summaryParts, bold, green, yellow)
case "Tombstone": case "Tombstone":
summaryParts = formatTombstone(jsonStr, summaryParts, bold, green) summaryParts = formatTombstone(jsonStr, summaryParts, bold, green, yellow)
} }
return strings.Join(summaryParts, "\n") return strings.Join(summaryParts, "\n")
@ -106,7 +106,7 @@ func formatActor(jsonStr string, parts []string, bold, cyan, green, red, yellow
} }
// formatContent formats content-type objects (Note, Article, etc.) // formatContent formats content-type objects (Note, Article, etc.)
func formatContent(jsonStr string, parts []string, bold, green func(a ...interface{}) string) []string { func formatContent(jsonStr string, parts []string, bold, green, yellow func(a ...interface{}) string) []string {
if content := gjson.Get(jsonStr, "content").String(); content != "" { if content := gjson.Get(jsonStr, "content").String(); content != "" {
// Strip HTML tags for display // Strip HTML tags for display
content = stripHTML(content) content = stripHTML(content)
@ -141,38 +141,38 @@ func formatContent(jsonStr string, parts []string, bold, green func(a ...interfa
parts = append(parts, attachmentInfo) parts = append(parts, attachmentInfo)
if url != "" { if url != "" {
parts = append(parts, fmt.Sprintf(" URL: %s", url)) parts = append(parts, fmt.Sprintf(" URL: %s", green(url)))
} }
} }
} }
if published := gjson.Get(jsonStr, "published").String(); published != "" { if published := gjson.Get(jsonStr, "published").String(); published != "" {
parts = append(parts, fmt.Sprintf("%s: %s", bold("Published"), formatDate(published))) parts = append(parts, fmt.Sprintf("%s: %s", bold("Published"), yellow(formatDate(published))))
} }
if updated := gjson.Get(jsonStr, "updated").String(); updated != "" { if updated := gjson.Get(jsonStr, "updated").String(); updated != "" {
parts = append(parts, fmt.Sprintf("%s: %s", bold("Updated"), formatDate(updated))) parts = append(parts, fmt.Sprintf("%s: %s", bold("Updated"), yellow(formatDate(updated))))
} }
if attributedTo := gjson.Get(jsonStr, "attributedTo").String(); attributedTo != "" { if attributedTo := gjson.Get(jsonStr, "attributedTo").String(); attributedTo != "" {
parts = append(parts, fmt.Sprintf("%s: %s", bold("Author"), attributedTo)) parts = append(parts, fmt.Sprintf("%s: %s", bold("Author"), green(attributedTo)))
} }
if to := gjson.Get(jsonStr, "to").Array(); len(to) > 0 { if to := gjson.Get(jsonStr, "to").Array(); len(to) > 0 {
parts = append(parts, fmt.Sprintf("%s: %s", bold("To"), formatArray(to))) parts = append(parts, fmt.Sprintf("%s: %s", bold("To"), green(formatArray(to))))
} }
if cc := gjson.Get(jsonStr, "cc").Array(); len(cc) > 0 { if cc := gjson.Get(jsonStr, "cc").Array(); len(cc) > 0 {
parts = append(parts, fmt.Sprintf("%s: %s", bold("CC"), formatArray(cc))) parts = append(parts, fmt.Sprintf("%s: %s", bold("CC"), green(formatArray(cc))))
} }
if inReplyTo := gjson.Get(jsonStr, "inReplyTo").String(); inReplyTo != "" { if inReplyTo := gjson.Get(jsonStr, "inReplyTo").String(); inReplyTo != "" {
parts = append(parts, fmt.Sprintf("%s: %s", bold("In Reply To"), inReplyTo)) parts = append(parts, fmt.Sprintf("%s: %s", bold("In Reply To"), green(inReplyTo)))
} }
// Include endTime for Question type // Include endTime for Question type
if endTime := gjson.Get(jsonStr, "endTime").String(); endTime != "" { if endTime := gjson.Get(jsonStr, "endTime").String(); endTime != "" {
parts = append(parts, fmt.Sprintf("%s: %s", bold("End Time"), formatDate(endTime))) parts = append(parts, fmt.Sprintf("%s: %s", bold("End Time"), yellow(formatDate(endTime))))
} }
// Include options (oneOf/anyOf) for Question type // Include options (oneOf/anyOf) for Question type
@ -243,7 +243,7 @@ func formatActivity(jsonStr string, parts []string, bold, green, yellow func(a .
} }
if published := gjson.Get(jsonStr, "published").String(); published != "" { if published := gjson.Get(jsonStr, "published").String(); published != "" {
parts = append(parts, fmt.Sprintf("%s: %s", bold("Published"), formatDate(published))) parts = append(parts, fmt.Sprintf("%s: %s", bold("Published"), yellow(formatDate(published))))
} }
if target := gjson.Get(jsonStr, "target").String(); target != "" { if target := gjson.Get(jsonStr, "target").String(); target != "" {
@ -254,7 +254,7 @@ func formatActivity(jsonStr string, parts []string, bold, green, yellow func(a .
} }
// formatCollection formats collection-type objects // formatCollection formats collection-type objects
func formatCollection(jsonStr string, parts []string, bold, green func(a ...interface{}) string) []string { func formatCollection(jsonStr string, parts []string, bold, green, yellow func(a ...interface{}) string) []string {
if totalItems := gjson.Get(jsonStr, "totalItems").Int(); totalItems > 0 { if totalItems := gjson.Get(jsonStr, "totalItems").Int(); totalItems > 0 {
parts = append(parts, fmt.Sprintf("%s: %d", bold("Total Items"), totalItems)) parts = append(parts, fmt.Sprintf("%s: %d", bold("Total Items"), totalItems))
} }
@ -285,17 +285,21 @@ func formatCollection(jsonStr string, parts []string, bold, green func(a ...inte
} }
} }
if published := gjson.Get(jsonStr, "published").String(); published != "" {
parts = append(parts, fmt.Sprintf("%s: %s", bold("Published"), yellow(formatDate(published))))
}
return parts return parts
} }
// formatMedia formats media-type objects (Image, Video, etc.) // formatMedia formats media-type objects (Image, Video, etc.)
func formatMedia(jsonStr string, parts []string, bold, green func(a ...interface{}) string) []string { func formatMedia(jsonStr string, parts []string, bold, green, yellow func(a ...interface{}) string) []string {
if name := gjson.Get(jsonStr, "name").String(); name != "" { if name := gjson.Get(jsonStr, "name").String(); name != "" {
parts = append(parts, fmt.Sprintf("%s: %s", bold("Name"), name)) parts = append(parts, fmt.Sprintf("%s: %s", bold("Name"), name))
} }
if url := gjson.Get(jsonStr, "url").String(); url != "" { if url := gjson.Get(jsonStr, "url").String(); url != "" {
parts = append(parts, fmt.Sprintf("%s: %s", bold("URL"), url)) parts = append(parts, fmt.Sprintf("%s: %s", bold("URL"), green(url)))
} }
if duration := gjson.Get(jsonStr, "duration").String(); duration != "" { if duration := gjson.Get(jsonStr, "duration").String(); duration != "" {
@ -303,7 +307,7 @@ func formatMedia(jsonStr string, parts []string, bold, green func(a ...interface
} }
if published := gjson.Get(jsonStr, "published").String(); published != "" { if published := gjson.Get(jsonStr, "published").String(); published != "" {
parts = append(parts, fmt.Sprintf("%s: %s", bold("Published"), formatDate(published))) parts = append(parts, fmt.Sprintf("%s: %s", bold("Published"), yellow(formatDate(published))))
} }
if attributedTo := gjson.Get(jsonStr, "attributedTo").String(); attributedTo != "" { if attributedTo := gjson.Get(jsonStr, "attributedTo").String(); attributedTo != "" {
@ -314,7 +318,7 @@ func formatMedia(jsonStr string, parts []string, bold, green func(a ...interface
} }
// formatEvent formats event-type objects // formatEvent formats event-type objects
func formatEvent(jsonStr string, parts []string, bold, green func(a ...interface{}) string) []string { func formatEvent(jsonStr string, parts []string, bold, green, yellow func(a ...interface{}) string) []string {
if name := gjson.Get(jsonStr, "name").String(); name != "" { if name := gjson.Get(jsonStr, "name").String(); name != "" {
parts = append(parts, fmt.Sprintf("%s: %s", bold("Name"), name)) parts = append(parts, fmt.Sprintf("%s: %s", bold("Name"), name))
} }
@ -328,11 +332,11 @@ func formatEvent(jsonStr string, parts []string, bold, green func(a ...interface
} }
if startTime := gjson.Get(jsonStr, "startTime").String(); startTime != "" { if startTime := gjson.Get(jsonStr, "startTime").String(); startTime != "" {
parts = append(parts, fmt.Sprintf("%s: %s", bold("Start Time"), formatDate(startTime))) parts = append(parts, fmt.Sprintf("%s: %s", bold("Start Time"), yellow(formatDate(startTime))))
} }
if endTime := gjson.Get(jsonStr, "endTime").String(); endTime != "" { if endTime := gjson.Get(jsonStr, "endTime").String(); endTime != "" {
parts = append(parts, fmt.Sprintf("%s: %s", bold("End Time"), formatDate(endTime))) parts = append(parts, fmt.Sprintf("%s: %s", bold("End Time"), yellow(formatDate(endTime))))
} }
if location := gjson.Get(jsonStr, "location").String(); location != "" { if location := gjson.Get(jsonStr, "location").String(); location != "" {
@ -343,13 +347,13 @@ func formatEvent(jsonStr string, parts []string, bold, green func(a ...interface
} }
// formatTombstone formats tombstone-type objects // formatTombstone formats tombstone-type objects
func formatTombstone(jsonStr string, parts []string, bold, green func(a ...interface{}) string) []string { func formatTombstone(jsonStr string, parts []string, bold, green, yellow func(a ...interface{}) string) []string {
if formerType := gjson.Get(jsonStr, "formerType").String(); formerType != "" { if formerType := gjson.Get(jsonStr, "formerType").String(); formerType != "" {
parts = append(parts, fmt.Sprintf("%s: %s", bold("Former Type"), formerType)) parts = append(parts, fmt.Sprintf("%s: %s", bold("Former Type"), formerType))
} }
if deleted := gjson.Get(jsonStr, "deleted").String(); deleted != "" { if deleted := gjson.Get(jsonStr, "deleted").String(); deleted != "" {
parts = append(parts, fmt.Sprintf("%s: %s", bold("Deleted"), formatDate(deleted))) parts = append(parts, fmt.Sprintf("%s: %s", bold("Deleted"), yellow(formatDate(deleted))))
} }
return parts return parts