github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/text/template/template.go (about) 1 // Copyright 2011 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package template 6 7 import ( 8 "github.com/shogo82148/std/text/template/parse" 9 ) 10 11 // Templateは、解析されたテンプレートの表現です。*parse.Tree 12 // フィールドは、[html/template] による使用のためだけにエクスポートされており、 13 // 他のすべてのクライアントによって未エクスポートとして扱われるべきです。 14 type Template struct { 15 name string 16 *parse.Tree 17 *common 18 leftDelim string 19 rightDelim string 20 } 21 22 // Newは、指定された名前を持つ新しい未定義のテンプレートを割り当てます。 23 func New(name string) *Template 24 25 // Nameはテンプレートの名前を返します。 26 func (t *Template) Name() string 27 28 // Newは、与えられたテンプレートと同じデリミタを持つ新しい未定義のテンプレートを割り当てます。 29 // この関連付けは推移的で、一つのテンプレートが{{template}}アクションで別のテンプレートを 30 // 呼び出すことを可能にします。 31 // 32 // 関連付けられたテンプレートは基礎となるデータを共有するため、テンプレートの構築は 33 // 並行して安全に行うことはできません。テンプレートが構築されたら、それらは並行して 34 // 実行することができます。 35 func (t *Template) New(name string) *Template 36 37 // Cloneは、関連付けられたすべてのテンプレートを含むテンプレートの複製を返します。 38 // 実際の表現はコピーされませんが、関連付けられたテンプレートの名前空間はコピーされるため、 39 // コピーでのさらなる [Template.Parse] の呼び出しは、コピーにテンプレートを追加しますが、元のテンプレートには追加しません。 40 // Cloneは、共通のテンプレートを準備し、それらを他のテンプレートのバリアント定義とともに使用するために、 41 // クローン作成後にバリアントを追加することで使用できます。 42 func (t *Template) Clone() (*Template, error) 43 44 // AddParseTreeは、引数のパースツリーをテンプレートtに関連付け、 45 // それに指定された名前を付けます。テンプレートがまだ定義されていない場合、 46 // このツリーがその定義となります。すでに定義されていてその名前を持っている場合、 47 // 既存の定義が置き換えられます。それ以外の場合は、新しいテンプレートが作成され、 48 // 定義され、返されます。 49 func (t *Template) AddParseTree(name string, tree *parse.Tree) (*Template, error) 50 51 // Templatesは、tに関連付けられた定義済みテンプレートのスライスを返します。 52 func (t *Template) Templates() []*Template 53 54 // Delimsは、指定された文字列にアクションデリミタを設定します。これは、 55 // その後の [Template.Parse]、[Template.ParseFiles]、または [Template.ParseGlob] への呼び出しで使用されます。 56 // ネストしたテンプレート定義はこの設定を継承します。空のデリミタは、 57 // 対応するデフォルト({{または}})を表します。 58 // 戻り値はテンプレートなので、呼び出しはチェーンできます。 59 func (t *Template) Delims(left, right string) *Template 60 61 // Funcsは、引数のマップの要素をテンプレートの関数マップに追加します。 62 // これはテンプレートが解析される前に呼び出す必要があります。 63 // マップの値が適切な戻り値型を持つ関数でない場合、または名前がテンプレート内の関数として 64 // 文法的に使用できない場合、パニックを起こします。 65 // マップの要素を上書きすることは合法です。戻り値はテンプレートなので、呼び出しはチェーンできます。 66 func (t *Template) Funcs(funcMap FuncMap) *Template 67 68 // Lookupは、tに関連付けられた指定された名前のテンプレートを返します。 69 // そのようなテンプレートがないか、テンプレートが定義を持っていない場合はnilを返します。 70 func (t *Template) Lookup(name string) *Template 71 72 // Parseは、テキストをtのテンプレートボディとして解析します。 73 // テキスト内の名前付きテンプレート定義({{define ...}}または{{block ...}}ステートメント)は、 74 // tに関連付けられた追加のテンプレートを定義し、t自体の定義からは削除されます。 75 // 76 // テンプレートは、Parseへの連続した呼び出しで再定義することができます。 77 // 本文が空白とコメントのみで構成されるテンプレート定義は空とみなされ、 78 // 既存のテンプレートの本文を置き換えません。 79 // これにより、Parseを使用して新しい名前付きテンプレート定義を追加し、 80 // メインのテンプレート本文を上書きすることなく行うことができます。 81 func (t *Template) Parse(text string) (*Template, error)