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)