Shipped Text-Xslate-AST-Walker @ 0.01

これはなに?

Text::Xslate::Parser が返す AST を文字通り「歩きまわる」ためのモジュールです。

0.01 現在では条件に一致するノードのみを返すメソッド (#search_descendants) が実装されています。

使い方

SYNOPSIS より:

use Text::Xslate::Parser;
use Text::Xslate::AST::Walker;

my $template = <<EOF;
: my $first_name = 'Hanae';
Hello, <: $last_name :>, <: $first_name :>.
EOF
my $parser = Text::Xslate::Parser->new;
my $nodes = $parser->parse($template);
my $tw = Text::Xslate::AST::Walker->new(nodes => $nodes);
my $undeclared_vars = $tw->search_descendants(sub {
  my ($node) = @_;
  ($node->arity eq 'variable') && !$node->is_defined && !$node->is_reserved;
});

printf "Undeclared var: %s @ Line %d\n", $_->id, $_->line for @$undeclared_vars;

簡単ですね。

#search_descendants に渡すサブルーチンには Text::Xslate::Symbolインスタンスが渡されます。

上記例のように未定義の変数を列挙することなどができます。

Text::Xslate は便利

Text::Xslate は高速なテンプレートエンジンとして既に有名で実績がありますが、一方で構文を選ぶことのできる柔軟性も持ち合わせています。

構文それぞれについて Parser が用意されており、抽象構文木を得ることができます。

今後

などを目指しています。

機能追加、バグ報告

GitHub で開発しているので Issues or Pull Request をお待ちしております。

どうぞご利用ください

cpanm Text::Xslate::AST::Walker