...

パッケージ parse

import "text/template/parse"
概要
目次

概要 ▾

parse パッケージは,text/template と html/template で定義されたテンプレートのパース木を構築します。 クライアントはこれらのパッケージを使用してテンプレートを作成する必要があります。 これは一般的な使用を目的としていない共有内部データ構造を提供するものです。

目次 ▾

func IsEmptyTree(n Node) bool
func Parse(name, text, leftDelim, rightDelim string, funcs ...map[string]interface{}) (map[string]*Tree, error)
type ActionNode
    func (a *ActionNode) Copy() Node
    func (a *ActionNode) String() string
type BoolNode
    func (b *BoolNode) Copy() Node
    func (b *BoolNode) String() string
type BranchNode
    func (b *BranchNode) Copy() Node
    func (b *BranchNode) String() string
type ChainNode
    func (c *ChainNode) Add(field string)
    func (c *ChainNode) Copy() Node
    func (c *ChainNode) String() string
type CommandNode
    func (c *CommandNode) Copy() Node
    func (c *CommandNode) String() string
type DotNode
    func (d *DotNode) Copy() Node
    func (d *DotNode) String() string
    func (d *DotNode) Type() NodeType
type FieldNode
    func (f *FieldNode) Copy() Node
    func (f *FieldNode) String() string
type IdentifierNode
    func NewIdentifier(ident string) *IdentifierNode
    func (i *IdentifierNode) Copy() Node
    func (i *IdentifierNode) SetPos(pos Pos) *IdentifierNode
    func (i *IdentifierNode) SetTree(t *Tree) *IdentifierNode
    func (i *IdentifierNode) String() string
type IfNode
    func (i *IfNode) Copy() Node
type ListNode
    func (l *ListNode) Copy() Node
    func (l *ListNode) CopyList() *ListNode
    func (l *ListNode) String() string
type NilNode
    func (n *NilNode) Copy() Node
    func (n *NilNode) String() string
    func (n *NilNode) Type() NodeType
type Node
type NodeType
    func (t NodeType) Type() NodeType
type NumberNode
    func (n *NumberNode) Copy() Node
    func (n *NumberNode) String() string
type PipeNode
    func (p *PipeNode) Copy() Node
    func (p *PipeNode) CopyPipe() *PipeNode
    func (p *PipeNode) String() string
type Pos
    func (p Pos) Position() Pos
type RangeNode
    func (r *RangeNode) Copy() Node
type StringNode
    func (s *StringNode) Copy() Node
    func (s *StringNode) String() string
type TemplateNode
    func (t *TemplateNode) Copy() Node
    func (t *TemplateNode) String() string
type TextNode
    func (t *TextNode) Copy() Node
    func (t *TextNode) String() string
type Tree
    func New(name string, funcs ...map[string]interface{}) *Tree
    func (t *Tree) Copy() *Tree
    func (t *Tree) ErrorContext(n Node) (location, context string)
    func (t *Tree) Parse(text, leftDelim, rightDelim string, treeSet map[string]*Tree, funcs ...map[string]interface{}) (tree *Tree, err error)
type VariableNode
    func (v *VariableNode) Copy() Node
    func (v *VariableNode) String() string
type WithNode
    func (w *WithNode) Copy() Node

パッケージファイル

lex.go node.go parse.go

func IsEmptyTree

func IsEmptyTree(n Node) bool

IsEmptyTree は,このツリー (ノード) にスペース以外のものがすべて空いているかどうかを報告します。

func Parse

func Parse(name, text, leftDelim, rightDelim string, funcs ...map[string]interface{}) (map[string]*Tree, error)

Parse は,引数の文字列で記述されたテンプレートを解析することによって作成された,テンプレート名から parse.Tree へのマップを返します。 最上位テンプレートには指定された名前が付けられます。 エラーが発生した場合,解析は停止し,空のマップがエラーと共に返されます。

type ActionNode

ActionNode はアクション (区切り文字で囲まれたもの) を保持します。 制御アクションには独自のノードがあります。 ActionNode は,フィールド評価や括弧付きパイプラインなどの単純なものを表します。

type ActionNode struct {
    NodeType
    Pos

    Line int       // 入力内の行番号非推奨 : 互換性のために保持されています。
    Pipe *PipeNode // アクションのパイプライン
    // エクスポートされていないフィールドがあります
}

func (*ActionNode) Copy

func (a *ActionNode) Copy() Node

func (*ActionNode) String

func (a *ActionNode) String() string

type BoolNode

BoolNode はブール定数を保持します。

type BoolNode struct {
    NodeType
    Pos

    True bool // ブール定数の値。
    // エクスポートされていないフィールドがあります
}

func (*BoolNode) Copy

func (b *BoolNode) Copy() Node

func (*BoolNode) String

func (b *BoolNode) String() string

type BranchNode

BranchNode は, if, range ,および with の一般的な表現です。

type BranchNode struct {
    NodeType
    Pos

    Line     int       // 入力内の行番号非推奨 : 互換性のために保持されています。
    Pipe     *PipeNode // 評価されるパイプライン
    List     *ListNode // 値が空でない場合に実行するもの
    ElseList *ListNode // 値が空の場合に何を実行しますか (存在しない場合は nil) 。
    // エクスポートされていないフィールドがあります
}

func (*BranchNode) Copy 1.4

func (b *BranchNode) Copy() Node

func (*BranchNode) String

func (b *BranchNode) String() string

type ChainNode 1.1

ChainNode は,一連のフィールドアクセス ('.' で始まる識別子) が続く用語を保持します。 名前は連鎖させることができます ('.x.y') 。 ピリオドは各アイデンティティから削除されます。

type ChainNode struct {
    NodeType
    Pos

    Node  Node
    Field []string // 字句順の識別子。
    // エクスポートされていないフィールドがあります
}

func (*ChainNode) Add 1.1

func (c *ChainNode) Add(field string)

Add は名前付きフィールド (ピリオドで始まるはずです) をチェーンの最後に追加します。

func (*ChainNode) Copy 1.1

func (c *ChainNode) Copy() Node

func (*ChainNode) String 1.1

func (c *ChainNode) String() string

type CommandNode

CommandNode はコマンド (評価アクション内のパイプライン) を保持します。

type CommandNode struct {
    NodeType
    Pos

    Args []Node // 字句順の引数 : 識別子,フィールド,または定数。
    // エクスポートされていないフィールドがあります
}

func (*CommandNode) Copy

func (c *CommandNode) Copy() Node

func (*CommandNode) String

func (c *CommandNode) String() string

type DotNode 1.1

DotNode は特別な識別子 '.' を持ちます。

type DotNode struct {
    NodeType
    Pos
    // エクスポートされていないフィールドがあります
}

func (*DotNode) Copy

func (d *DotNode) Copy() Node

func (*DotNode) String

func (d *DotNode) String() string

func (*DotNode) Type

func (d *DotNode) Type() NodeType

type FieldNode

FieldNode はフィールド ('.' で始まる識別子) を保持します。 名前は連鎖させることができます ('.x.y') 。 期間は各 ID から削除されます。

type FieldNode struct {
    NodeType
    Pos

    Ident []string // 字句順の識別子。
    // エクスポートされていないフィールドがあります
}

func (*FieldNode) Copy

func (f *FieldNode) Copy() Node

func (*FieldNode) String

func (f *FieldNode) String() string

type IdentifierNode

IdentifierNode は識別子を保持します。

type IdentifierNode struct {
    NodeType
    Pos

    Ident string // 識別子の名前
    // エクスポートされていないフィールドがあります
}

func NewIdentifier

func NewIdentifier(ident string) *IdentifierNode

NewIdentifier は,指定された識別子名を持つ新しい IdentifierNode を返します。

func (*IdentifierNode) Copy

func (i *IdentifierNode) Copy() Node

func (*IdentifierNode) SetPos 1.1

func (i *IdentifierNode) SetPos(pos Pos) *IdentifierNode

SetPos は位置を設定します。 NewIdentifier はパブリックメソッドなので,署名を変更することはできません。 利便性のためにチェーン。 TODO: いつか修正しますか ?

func (*IdentifierNode) SetTree 1.4

func (i *IdentifierNode) SetTree(t *Tree) *IdentifierNode

SetTree はノードの親ツリーを設定します。 NewIdentifier はパブリックメソッドなので,署名を変更することはできません。 利便性のためにチェーン。 TODO: いつか修正しますか ?

func (*IdentifierNode) String

func (i *IdentifierNode) String() string

type IfNode

IfNode は {{if}} アクションとそのコマンドを表します。

type IfNode struct {
    BranchNode
}

func (*IfNode) Copy

func (i *IfNode) Copy() Node

type ListNode

ListNode は一連のノードを保持します。

type ListNode struct {
    NodeType
    Pos

    Nodes []Node // 字句順の要素ノード。
    // エクスポートされていないフィールドがあります
}

func (*ListNode) Copy

func (l *ListNode) Copy() Node

func (*ListNode) CopyList

func (l *ListNode) CopyList() *ListNode

func (*ListNode) String

func (l *ListNode) String() string

type NilNode 1.1

NilNode は,型なし nil 定数を表す特別な識別子 'nil' を保持します。

type NilNode struct {
    NodeType
    Pos
    // エクスポートされていないフィールドがあります
}

func (*NilNode) Copy 1.1

func (n *NilNode) Copy() Node

func (*NilNode) String 1.1

func (n *NilNode) String() string

func (*NilNode) Type 1.1

func (n *NilNode) Type() NodeType

type Node 1.1

Node はパースツリーの要素です。 インターフェースは簡単です。 このパッケージにローカルな型だけがそれを満たすことができるように,インターフェースは未エクスポートのメソッドを含んでいます。

type Node interface {
    Type() NodeType
    String() string
    // コピーは,ノードとそのすべてのコンポーネントの詳細コピーを作成します。
    // 型宣言を回避するために,一部の XxxNode には *XxxNode を返す特殊な CopyXxx メソッドもあります。
    Copy() Node
    Position() Pos // 元の入力文字列全体におけるノードの先頭のバイト位置
    // contains filtered or unexported methods
}

type NodeType

NodeType は,解析木ノードの型を識別します。

type NodeType int
const (
    NodeText    NodeType = iota // プレーンテキスト
    NodeAction                  // 実地評価などの非統制行動。
    NodeBool                    // ブール定数
    NodeChain                   // 一連のフィールドアクセス。
    NodeCommand                 // パイプラインの要素
    NodeDot                     // カーソル,ドット

    NodeField      // フィールド名またはメソッド名
    NodeIdentifier // 識別子常に関数名
    NodeIf         // if アクション
    NodeList       // ノードのリスト。
    NodeNil        // 型なし nil 定数
    NodeNumber     // 数値定数です。
    NodePipe       // コマンドのパイプライン
    NodeRange      // レンジアクション。
    NodeString     // 文字列定数です。
    NodeTemplate   // テンプレート呼び出しアクション
    NodeVariable   // $ 変数
    NodeWith       // アクションあり。
)

func (NodeType) Type

func (t NodeType) Type() NodeType

Type は自分自身を返し, Node に埋め込むための簡単なデフォルト実装を提供します。 自明でないすべてのノードに埋め込まれています。

type NumberNode

NumberNode は,符号付きまたは符号なし整数, float ,または complex のいずれかの数値を保持します。 値は構文解析され,値を表すことができるすべての型の下に保管されます。 これは,少量のコードで Go の理想定数の動作をシミュレートします。

type NumberNode struct {
    NodeType
    Pos

    IsInt      bool       // 数値は整数値です。
    IsUint     bool       // 数値は符号なし整数値です。
    IsFloat    bool       // 数値は浮動小数点値です。
    IsComplex  bool       // 数は複雑です。
    Int64      int64      // 符号付き整数値
    Uint64     uint64     // 符号なし整数値です。
    Float64    float64    // 浮動小数点値
    Complex128 complex128 // 複素数です。
    Text       string     // 入力からの元のテキスト表現。
    // エクスポートされていないフィールドがあります
}

func (*NumberNode) Copy

func (n *NumberNode) Copy() Node

func (*NumberNode) String

func (n *NumberNode) String() string

type PipeNode

PipeNode はオプションの宣言でパイプラインを保持します

type PipeNode struct {
    NodeType
    Pos

    Line     int             // 入力内の行番号非推奨 : 互換性のために保持されています。
    IsAssign bool            // 変数は割り当てられていますが,宣言されていません。; added in Go 1.11
    Decl     []*VariableNode // 字句順の変数
    Cmds     []*CommandNode  // コマンドを字句順に並べます。
    // エクスポートされていないフィールドがあります
}

func (*PipeNode) Copy

func (p *PipeNode) Copy() Node

func (*PipeNode) CopyPipe

func (p *PipeNode) CopyPipe() *PipeNode

func (*PipeNode) String

func (p *PipeNode) String() string

type Pos 1.1

Pos は,このテンプレートが解析された元の入力テキスト内のバイト位置を表します。

type Pos int

func (Pos) Position 1.1

func (p Pos) Position() Pos

type RangeNode

RangeNode は {{range}} アクションとそのコマンドを表します。

type RangeNode struct {
    BranchNode
}

func (*RangeNode) Copy

func (r *RangeNode) Copy() Node

type StringNode

StringNode は文字列定数を保持します。 値は " 引用符で囲まれていません " 。

type StringNode struct {
    NodeType
    Pos

    Quoted string // 引用符付きの文字列の元のテキスト。
    Text   string // クォート処理後の文字列
    // エクスポートされていないフィールドがあります
}

func (*StringNode) Copy

func (s *StringNode) Copy() Node

func (*StringNode) String

func (s *StringNode) String() string

type TemplateNode

TemplateNode は {{template}} アクションを表します。

type TemplateNode struct {
    NodeType
    Pos

    Line int       // 入力内の行番号非推奨 : 互換性のために保持されています。
    Name string    // テンプレートの名前 (引用符なし) 。
    Pipe *PipeNode // テンプレートのドットとして評価するためのコマンド。
    // エクスポートされていないフィールドがあります
}

func (*TemplateNode) Copy

func (t *TemplateNode) Copy() Node

func (*TemplateNode) String

func (t *TemplateNode) String() string

type TextNode

TextNode はプレーンテキストを保持します。

type TextNode struct {
    NodeType
    Pos

    Text []byte // テキスト改行にまたがることがあります。
    // エクスポートされていないフィールドがあります
}

func (*TextNode) Copy

func (t *TextNode) Copy() Node

func (*TextNode) String

func (t *TextNode) String() string

type Tree

Tree は 1 つの解析済みテンプレートの表現です。

type Tree struct {
    Name      string    // ツリーによって表されるテンプレートの名前。
    ParseName string    // エラーメッセージ用の,解析中の最上位テンプレートの名前。; added in Go 1.1
    Root      *ListNode // ツリーの最上位ルート
    // エクスポートされていないフィールドがあります
}

func New

func New(name string, funcs ...map[string]interface{}) *Tree

New は,与えられた名前で新しい解析木を割り当てます。

func (*Tree) Copy 1.2

func (t *Tree) Copy() *Tree

Copy はツリーのコピーを返します。 解析状態はすべて破棄されます。

func (*Tree) ErrorContext 1.1

func (t *Tree) ErrorContext(n Node) (location, context string)

ErrorContext は,入力テキスト内のノードの場所のテキスト表現を返します。 受信側は,ノードの内部にツリーへのポインタがない場合にのみ使用されます。 これは古いコードで発生する可能性があります。

func (*Tree) Parse

func (t *Tree) Parse(text, leftDelim, rightDelim string, treeSet map[string]*Tree, funcs ...map[string]interface{}) (tree *Tree, err error)

Parse はテンプレート定義文字列を解析して実行用のテンプレートの表現を構築します。 どちらかのアクション区切り文字列が空の場合は,デフォルト ("{{" または "}}") が使用されます。 埋め込みテンプレート定義が treeSet マップに追加されます。

type VariableNode

AssignNode は,場合によっては連鎖フィールドアクセスを伴う,変数名のリストを保持します。 ドル記号は (最初の) 名前の一部です。

type VariableNode struct {
    NodeType
    Pos

    Ident []string // 字句順の変数名とフィールド。
    // エクスポートされていないフィールドがあります
}

func (*VariableNode) Copy

func (v *VariableNode) Copy() Node

func (*VariableNode) String

func (v *VariableNode) String() string

type WithNode

WithNode は {{with}} アクションとそのコマンドを表します。

type WithNode struct {
    BranchNode
}

func (*WithNode) Copy

func (w *WithNode) Copy() Node