Erhalten einer Aktionsliste aus einer geparsten Vorlage
Frage:
Wie kann ich abrufen eine Liste von Vorlagenaktionen (z. B. die durch {{ .blahblah }} definierten) aus einem analysierten Vorlage?
Vorwort:
Das Feld „Template.Tree“ sollte, wie bereits erwähnt, nicht für die Eingabebereitstellung bei der Vorlagenausführung herangezogen werden. Es ist wichtig, die Vorlage und ihre erwarteten Daten im Voraus zu definieren.
Lösung:
Um eine analysierte Vorlage zu überprüfen, navigieren Sie durch deren Analysebaum (template.Template.Tree). . Knoten in diesem Baum repräsentieren verschiedene Elemente, einschließlich Vorlagenaktionen. Hier konzentrieren wir uns auf Knoten vom Typ parse.NodeAction (Als Felder ausgewertete Aktionen).
Codebeispiel:
Der folgende Code durchläuft den Analysebaum rekursiv, um Knoten zu identifizieren mit der NodeAction Typ:
func ListTemplFields(t *template.Template) []string { return listNodeFields(t.Tree.Root, nil) } func listNodeFields(node parse.Node, res []string) []string { if node.Type() == parse.NodeAction { res = append(res, node.String()) } if ln, ok := node.(*parse.ListNode); ok { for _, n := range ln.Nodes { res = listNodeFields(n, res) } } return res }
Verwendung:
Rufen Sie die ListTemplFields-Funktion für eine analysierte Vorlage auf, um eine Liste von Aktionstoken abzurufen:
t := template.Must(template.New("cooltemplate"). Parse(`<h1>{{ .name }} {{ .age }}</h1>`)) fmt.Println(ListTemplFields(t))
Ausgabe:
Die Ausgabe für die bereitgestellte Vorlage wird sein:
[{{.name}} {{.age}}]
Das obige ist der detaillierte Inhalt vonWie extrahiere ich Aktionslisten aus einer geparsten Go-Vorlage?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!