parse

package
v1.22.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 26, 2024 License: MIT Imports: 1 Imported by: 0

Documentation

Overview

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

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func IsEmptyTree

func IsEmptyTree(n Node) bool

IsEmptyTreeは、このツリー(ノード)がスペースまたはコメント以外のすべてが空であるかどうかを報告します。

func Parse

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

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

Types

type ActionNode

type ActionNode struct {
	NodeType
	Pos

	Line int
	Pipe *PipeNode
	// contains filtered or unexported fields
}

ActionNodeはアクション(デリミタで区切られた何か)を保持します。 制御アクションはそれぞれが独自のノードを持ち、ActionNodeはフィールド評価や 括弧付きパイプラインのような単純なものを表します。

func (*ActionNode) Copy

func (a *ActionNode) Copy() Node

func (*ActionNode) String

func (a *ActionNode) String() string

type BoolNode

type BoolNode struct {
	NodeType
	Pos

	True bool
	// contains filtered or unexported fields
}

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

func (*BoolNode) Copy

func (b *BoolNode) Copy() Node

func (*BoolNode) String

func (b *BoolNode) String() string

type BranchNode

type BranchNode struct {
	NodeType
	Pos

	Line     int
	Pipe     *PipeNode
	List     *ListNode
	ElseList *ListNode
	// contains filtered or unexported fields
}

BranchNodeは、if、range、およびwithの共通の表現です。

func (*BranchNode) Copy added in v1.4.0

func (b *BranchNode) Copy() Node

func (*BranchNode) String

func (b *BranchNode) String() string

type BreakNode added in v1.18.0

type BreakNode struct {
	NodeType
	Pos
	Line int
	// contains filtered or unexported fields
}

BreakNodeは{{break}}アクションを表します。

func (*BreakNode) Copy added in v1.18.0

func (b *BreakNode) Copy() Node

func (*BreakNode) String added in v1.18.0

func (b *BreakNode) String() string

type ChainNode added in v1.1.0

type ChainNode struct {
	NodeType
	Pos

	Node  Node
	Field []string
	// contains filtered or unexported fields
}

ChainNodeは、フィールドアクセスのチェーン('.'で始まる識別子)に続く項を保持します。 名前はチェーン可能です('.x.y'など)。 各識別子からピリオドは削除されます。

func (*ChainNode) Add added in v1.1.0

func (c *ChainNode) Add(field string)

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

func (*ChainNode) Copy added in v1.1.0

func (c *ChainNode) Copy() Node

func (*ChainNode) String added in v1.1.0

func (c *ChainNode) String() string

type CommandNode

type CommandNode struct {
	NodeType
	Pos

	Args []Node
	// contains filtered or unexported fields
}

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

func (*CommandNode) Copy

func (c *CommandNode) Copy() Node

func (*CommandNode) String

func (c *CommandNode) String() string

type CommentNode added in v1.16.0

type CommentNode struct {
	NodeType
	Pos

	Text string
	// contains filtered or unexported fields
}

CommentNode holds a comment.

func (*CommentNode) Copy added in v1.16.0

func (c *CommentNode) Copy() Node

func (*CommentNode) String added in v1.16.0

func (c *CommentNode) String() string

type ContinueNode added in v1.18.0

type ContinueNode struct {
	NodeType
	Pos
	Line int
	// contains filtered or unexported fields
}

ContinueNodeは{{continue}}アクションを表します。

func (*ContinueNode) Copy added in v1.18.0

func (c *ContinueNode) Copy() Node

func (*ContinueNode) String added in v1.18.0

func (c *ContinueNode) String() string

type DotNode

type DotNode struct {
	NodeType
	Pos
	// contains filtered or unexported fields
}

DotNodeは、特別な識別子'.'を保持します。

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

type FieldNode struct {
	NodeType
	Pos

	Ident []string
	// contains filtered or unexported fields
}

FieldNodeはフィールド('.'で始まる識別子)を保持します。 名前はチェーン可能です('.x.y'など)。 各識別子からピリオドは削除されます。

func (*FieldNode) Copy

func (f *FieldNode) Copy() Node

func (*FieldNode) String

func (f *FieldNode) String() string

type IdentifierNode

type IdentifierNode struct {
	NodeType
	Pos

	Ident string
	// contains filtered or unexported fields
}

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

func NewIdentifier

func NewIdentifier(ident string) *IdentifierNode

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

func (*IdentifierNode) Copy

func (i *IdentifierNode) Copy() Node

func (*IdentifierNode) SetPos added in v1.1.0

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

SetPosは位置を設定します。NewIdentifierは公開メソッドなので、そのシグネチャを変更することはできません。 便宜上チェーン化されています。 TODO: いつか修正する?

func (*IdentifierNode) SetTree added in v1.4.0

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

SetTreeは、ノードの親ツリーを設定します。NewIdentifierは公開メソッドなので、そのシグネチャを変更することはできません。 便宜上チェーン化されています。 TODO: いつか修正する?

func (*IdentifierNode) String

func (i *IdentifierNode) String() string

type IfNode

type IfNode struct {
	BranchNode
}

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

func (*IfNode) Copy

func (i *IfNode) Copy() Node

type ListNode

type ListNode struct {
	NodeType
	Pos

	Nodes []Node
	// contains filtered or unexported fields
}

ListNodeは、ノードのシーケンスを保持します。

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 Mode added in v1.16.0

type Mode uint

mode値はフラグのセット(または0)です。モードはパーサの動作を制御します。

const (
	ParseComments Mode = 1 << iota
	SkipFuncCheck
)

type NilNode added in v1.1.0

type NilNode struct {
	NodeType
	Pos
	// contains filtered or unexported fields
}

NilNodeは、型指定されていないnil定数を表す特別な識別子'nil'を保持します。

func (*NilNode) Copy added in v1.1.0

func (n *NilNode) Copy() Node

func (*NilNode) String added in v1.1.0

func (n *NilNode) String() string

func (*NilNode) Type added in v1.1.0

func (n *NilNode) Type() NodeType

type Node

type Node interface {
	Type() NodeType
	String() string
	Copy() Node
	Position() Pos
	// contains filtered or unexported methods
}

Nodeはパースツリーの要素です。インターフェースは極めて単純です。 インターフェースには未エクスポートのメソッドが含まれているため、 このパッケージのローカルタイプのみがそれを満たすことができます。

type NodeType

type NodeType int

NodeTypeは、パースツリーノードのタイプを識別します。

const (
	NodeText NodeType = iota
	NodeAction
	NodeBool
	NodeChain
	NodeCommand
	NodeDot

	NodeField
	NodeIdentifier
	NodeIf
	NodeList
	NodeNil
	NodeNumber
	NodePipe
	NodeRange
	NodeString
	NodeTemplate
	NodeVariable
	NodeWith
	NodeComment
	NodeBreak
	NodeContinue
)

func (NodeType) Type

func (t NodeType) Type() NodeType

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

type NumberNode

type NumberNode struct {
	NodeType
	Pos

	IsInt      bool
	IsUint     bool
	IsFloat    bool
	IsComplex  bool
	Int64      int64
	Uint64     uint64
	Float64    float64
	Complex128 complex128
	Text       string
	// contains filtered or unexported fields
}

NumberNodeは、符号付きまたは符号なしの整数、浮動小数点数、または複素数を保持します。 値は解析され、その値を表現できるすべての型の下に格納されます。 これはGoの理想的な定数の振る舞いを少量のコードでシミュレートします。

func (*NumberNode) Copy

func (n *NumberNode) Copy() Node

func (*NumberNode) String

func (n *NumberNode) String() string

type PipeNode

type PipeNode struct {
	NodeType
	Pos

	Line     int
	IsAssign bool
	Decl     []*VariableNode
	Cmds     []*CommandNode
	// contains filtered or unexported fields
}

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

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 added in v1.1.0

type Pos int

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

func (Pos) Position added in v1.1.0

func (p Pos) Position() Pos

type RangeNode

type RangeNode struct {
	BranchNode
}

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

func (*RangeNode) Copy

func (r *RangeNode) Copy() Node

type StringNode

type StringNode struct {
	NodeType
	Pos

	Quoted string
	Text   string
	// contains filtered or unexported fields
}

StringNodeは文字列定数を保持します。値は"引用符を外され"ています。

func (*StringNode) Copy

func (s *StringNode) Copy() Node

func (*StringNode) String

func (s *StringNode) String() string

type TemplateNode

type TemplateNode struct {
	NodeType
	Pos

	Line int
	Name string
	Pipe *PipeNode
	// contains filtered or unexported fields
}

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

func (*TemplateNode) Copy

func (t *TemplateNode) Copy() Node

func (*TemplateNode) String

func (t *TemplateNode) String() string

type TextNode

type TextNode struct {
	NodeType
	Pos

	Text []byte
	// contains filtered or unexported fields
}

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

func (*TextNode) Copy

func (t *TextNode) Copy() Node

func (*TextNode) String

func (t *TextNode) String() string

type Tree

type Tree struct {
	Name      string
	ParseName string
	Root      *ListNode
	Mode      Mode
	// contains filtered or unexported fields
}

Tree is the representation of a single parsed template.

func New

func New(name string, funcs ...map[string]any) *Tree

Newは、指定された名前を持つ新しいパースツリーを割り当てます。

func (*Tree) Copy added in v1.2.0

func (t *Tree) Copy() *Tree

CopyはTreeのコピーを返します。パース状態は破棄されます。

func (*Tree) ErrorContext added in v1.1.0

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]any) (tree *Tree, err error)

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

type VariableNode

type VariableNode struct {
	NodeType
	Pos

	Ident []string
	// contains filtered or unexported fields
}

VariableNodeは、チェーンフィールドへのアクセスが可能な変数名のリストを保持します。 ドル記号は(最初の)名前の一部です。

func (*VariableNode) Copy

func (v *VariableNode) Copy() Node

func (*VariableNode) String

func (v *VariableNode) String() string

type WithNode

type WithNode struct {
	BranchNode
}

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

func (*WithNode) Copy

func (w *WithNode) Copy() Node

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL