NaifyViewExtension\Dialect\Smarty\Migration\SmartySyntaxAudit クラス

SmartySyntaxAudit — Smartyから移行する前に、未対応の構文を調べる

現在の変換処理と中間表現への変換を使い、移行時に確認が必要な箇所を集める。 元のテンプレートは書き換えない。問題が出なかった場合も、実際の描画テストは別途必要。

使用例

use NaifyView\NaifyView;
use NaifyViewExtension\NaifyViewExtension;
use NaifyViewExtension\Dialect\Smarty\Migration\SmartySyntaxAudit;

NaifyView::boot();
NaifyViewExtension::boot();
$report = SmartySyntaxAudit::scanPaths(__DIR__ . '/views', [
    'extensions' => ['tpl'],
]);
echo SmartySyntaxAudit::formatTextReport($report);

メソッド

メソッド説明
public static scanPaths(array|string $paths, array $options = '...'): array 指定したディレクトリを走査し、調査結果をまとめる
標準ではtplとhtmlを対象にする。独自の区切り文字はoptionsで指定する。
public static defaultCustomTagNames(): array
public static formatTextReport(array $report): string 棚卸し結果を、ターミナルで読めるテキストに整える
private static appendIssue(array $issues, array $issueCounts, string $filePath, array $issue): void
private static scanTemplate(string $template, string $filePath, string $relativePath, string $openDelimiter, string $closeDelimiter, array $customTags, array $additionalLocalNames, array $availableTemplateFiles, array $templateSources): array
private static readFileContentsIfAvailable(string $path): ?string
private static scanUnsupportedTags(string $template, string $openDelimiter, string $closeDelimiter, array $customTags): array
private static isUnsupportedTagName(string $tagName, bool $closing): bool
private static normalizeRoots(array|string $paths): array
private static normalizeDelimiters(array $delimiters): array
private static normalizeExtensions(array $extensions): array
private static normalizeCustomTags(array $customTags): array
private static readTagBody(string $template, int $offset, string $openDelimiter, string $closeDelimiter): array
private static consumeLiteralBlock(string $template, int $offset, string $openDelimiter, string $closeDelimiter): array
private static isFunctionStyleTag(string $body): bool
private static isCustomTagName(string $tagName, array $customTags): bool
private static getTagName(string $body): string
private static offsetToLine(string $source, int $offset): int
private static buildLineSnippet(string $template, int $line): string
private static trimSnippet(string $body): string
private static isEscapedCharacter(string $source, int $offset): bool