Basic Briefansicht + parsing

This commit is contained in:
Simon Martens
2025-04-01 18:07:57 +02:00
parent 0e2c6360bf
commit 31d40c1ce1
13 changed files with 107 additions and 55 deletions

View File

@@ -1,6 +1,11 @@
package functions
import "html/template"
import (
"html/template"
"strings"
xmlparsing "github.com/Theodor-Springmann-Stiftung/lenz-web/xml"
)
func FirstLetter(s string) string {
if len(s) == 0 {
@@ -15,3 +20,41 @@ func Safe(s string) template.HTML {
}
return template.HTML(s)
}
type LenzParseState struct{}
func ParseGeneric(s string) string {
if len(s) == 0 {
return ""
}
builder := strings.Builder{}
for elem, err := range xmlparsing.Iterate(s, LenzParseState{}) {
if err != nil {
return err.Error()
}
switch elem.Token.Type {
case xmlparsing.StartElement:
builder.WriteString("<div class=\"")
builder.WriteString(elem.Token.Name)
for key, value := range elem.Token.Attributes {
builder.WriteString(" ")
builder.WriteString(key)
builder.WriteString("-")
builder.WriteString(value)
}
builder.WriteString("\">")
}
if elem.Token.Type == xmlparsing.CharData {
builder.WriteString(elem.Token.Data)
}
if elem.Token.Type == xmlparsing.EndElement {
builder.WriteString("</div>")
}
}
return builder.String()
}