Heim >Backend-Entwicklung >Golang >Wie extrahiere ich Feldaktionen programmgesteuert aus geparsten Go-Vorlagen?

Wie extrahiere ich Feldaktionen programmgesteuert aus geparsten Go-Vorlagen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-18 11:46:10817Durchsuche

How to Programmatically Extract Field Actions from Parsed Go Templates?

Grundlegendes zum Extrahieren von Vorlagenfeldern aus geparsten Vorlagen

Einführung:

Programmgesteuertes Abrufen einer Liste von In geparsten Go-Vorlagen definierte Vorlagenaktionen sind in bestimmten Szenarien eine häufige Aufgabe. In diesem Artikel wird eine Technik untersucht, um dies mithilfe des Template.Tree-Felds zu erreichen.

Inspektion geparster Vorlagen

Die geparste Darstellung einer Vorlage wird im Template.Tree gespeichert Feld, zugänglich als parse.Tree-Instanz. Dieser Baum enthält alle Komponenten einer Vorlage, einschließlich Aktionen, Texte und Kontrollstrukturen.

Vorlagenaktionen identifizieren

Vorlagenaktionen, wie z. B. Feldauswertung und Funktionsaufrufe werden durch Knoten mit dem Typ parse.NodeAction dargestellt. Um eine Liste dieser Aktionen aus dem Baum zu extrahieren, können wir seine Struktur rekursiv durchlaufen und den Typ jedes Knotens überprüfen.

Beispielimplementierung

Der folgende Code demonstriert eine Beispielimplementierung, die eine Liste von Vorlagenaktionen abruft:

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
}

Beispiel Verwendung

t := template.Must(template.New("cooltemplate").
    Parse(`<h1>{{ .name }} {{ .age }}</h1>`))
fmt.Println(ListTemplFields(t))

Ausgabe

[{{.name}} {{.age}}]

Vorbehalte:

Während diese Technik im Allgemeinen das Extrahieren ermöglicht Wenn Sie Feldaktionen aus Vorlagen verwenden möchten, gibt es Einschränkungen. Beispielsweise werden nicht alle Kontrollstrukturen und die komplexe Vorlagensyntax verarbeitet. Es ist als Demonstration der zugrunde liegenden Konzepte gedacht und sollte entsprechend angepasst werden.

Das obige ist der detaillierte Inhalt vonWie extrahiere ich Feldaktionen programmgesteuert aus geparsten Go-Vorlagen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn