use IO::File;
+our $arguments;
our @cond;
sub out {
$x =~ s/^\[//;
$x =~ s/\]$//;
eval_if_ok($x);
+ } elsif ($t =~ /\G@\(/cgs) {
+ my $x = get_nested(\$t, '\(', '\)');
+ $x =~ s/^\(//;
+ $x =~ s/\)$//;
+ out (defined($arguments->{$x}) ? $arguments->{$x} : "");
} elsif ($t =~ /\G\@(\w+)\(/cgs) {
my $func = $1;
my $args = get_nested(\$t, '(', ')');
parse_string($text);
}
-sub start()
+sub start($)
{
+ $arguments = $_[0];
@cond = (1);
}
$#cond and die "Unterminated \@if (depth $#cond)";
}
-sub process_file($) {
- start();
- parse_file($_[0]);
+sub process_file($;$) {
+ my ($name, $args) = @_;
+ start($args);
+ parse_file($name);
finish();
}
-sub process_string($) {
- start();
- parse_string($_[0]);
+sub process_string($;$) {
+ my ($string, $args) = @_;
+ start($args);
+ parse_string($string);
finish();
}