NaifyView\Dialect\Naify\NaifyStructuralDirectiveParser クラス
NaifyStructuralDirectiveParser — Naify dialect の Naify Structural Directive Parser
Native template 構文の parser / evaluator / runtime contract を担当する。 Twig / Smarty 互換文化を混ぜず、Naify として持つ構文 surface をここで固定する。
使用例
// Naify dialect の parser / expression / runtime helper として使う。
// 通常は NaifyParser や compiler/executor から間接的に呼ばれる。
プロパティ
| 名前 | 型 | 説明 |
|---|---|---|
private
$layoutContractGuard
|
NaifyLayoutContractGuard |
|
private
$consumeToken
|
Closure |
|
private
$currentToken
|
Closure |
|
private
$parseNestedNodes
|
Closure |
|
private
$parseLayoutScopedNodes
|
Closure |
|
private
$readRequiredIdentifierAttribute
|
Closure |
|
private
$parseMacroArguments
|
Closure |
|
private
$normalizeExpressionSurface
|
Closure |
|
private
$assertLayoutNameContract
|
Closure |
|
private
$assertLayoutMode
|
Closure |
|
private
$assertLayoutModePresence
|
Closure |
|
private
$assertLayoutUseSource
|
Closure |
|
private
$assertUniqueLayoutDefineSlotNames
|
Closure |
|
private
$assertLayoutUseChildren
|
Closure |
|
private
$assertUniqueLayoutUseSlotNames
|
Closure |
|
private
$assertSlotPlacement
|
Closure |
|
private
$mergeSpan
|
Closure |
|
private
$buildParserException
|
Closure |
メソッド
| メソッド | 説明 |
|---|---|
public
__construct(NaifyLayoutContractGuard $layoutContractGuard, Closure $consumeToken, Closure $currentToken, Closure $parseNestedNodes, Closure $parseLayoutScopedNodes, Closure $readRequiredIdentifierAttribute, Closure $parseMacroArguments, Closure $normalizeExpressionSurface, Closure $assertLayoutNameContract, Closure $assertLayoutMode, Closure $assertLayoutModePresence, Closure $assertLayoutUseSource, Closure $assertUniqueLayoutDefineSlotNames, Closure $assertLayoutUseChildren, Closure $assertUniqueLayoutUseSlotNames, Closure $assertSlotPlacement, Closure $mergeSpan, Closure $buildParserException): void
|
インスタンスを初期化する |
public
parseBlockNode(): BlockNode
|
`parseBlockNode()` を実行する |
public
parseLayoutNode(): LayoutNode
|
`parseLayoutNode()` を実行する |
public
parseSlotNode(): SlotNode
|
`parseSlotNode()` を実行する |
public
parseMacroNode(): MacroNode
|
`parseMacroNode()` を実行する |
private
consumeToken(): ?Token
|
`consumeToken()` を実行する |
private
currentToken(): ?Token
|
`currentToken()` を実行する |
private
parseNestedNodes(callable $shouldStop): array
|
`parseNestedNodes()` を実行する |
private
parseLayoutScopedNodes(string $layoutMode, callable $shouldStop): array
|
`parseLayoutScopedNodes()` を実行する |
private
readRequiredIdentifierAttribute(Token $token, string $attributeName, string $missingMessage, string $invalidMessagePrefix, string $missingCode, string $missingKey, string $invalidCode, string $invalidKey): string
|
`readRequiredIdentifierAttribute()` を実行する |
private
parseMacroArguments(string $arguments, Token $token): array
|
`parseMacroArguments()` を実行する |
private
normalizeExpressionSurface(string $expression, Token $token, string $label): string
|
`normalizeExpressionSurface()` を実行する |
private
assertLayoutNameContract(?string $name, string $attributeName, Token $token): void
|
`assertLayoutNameContract()` を実行する |
private
assertLayoutMode(?string $defineName, ?string $useName, Token $token): void
|
`assertLayoutMode()` を実行する |
private
assertLayoutModePresence(?string $defineName, ?string $useName, Token $token): void
|
`assertLayoutModePresence()` を実行する |
private
assertLayoutUseSource(?string $useName, ?string $source, Token $token): void
|
`assertLayoutUseSource()` を実行する |
private
assertUniqueLayoutDefineSlotNames(?string $defineName, array $children): void
|
`assertUniqueLayoutDefineSlotNames()` を実行する |
private
assertLayoutUseChildren(?string $useName, array $children): void
|
`assertLayoutUseChildren()` を実行する |
private
assertUniqueLayoutUseSlotNames(?string $useName, array $children): void
|
`assertUniqueLayoutUseSlotNames()` を実行する |
private
assertSlotPlacement(Token $token): void
|
`assertSlotPlacement()` を実行する |
private
mergeSpan(Token $openToken, Token $closeToken): mixed
|
`mergeSpan()` を実行する |
private
parserException(string $message, string $errorCode, string $messageKey, ?Token $token, array $payload = '...'): NaifyViewException
|
`parserException()` を実行する |