FILE: doc/test1/.htyattrc IN: use YATT::ArgMacro test1 => in => [qw(pair)], out => [qw(x y)]; use YATT::LRXML::Node; test1->define(handle => sub { (my test1 $macro, my ($trans, $scope, $node)) = @_; my ($x, $y) = split /,/, node_body($macro->{cf_pair}); $node->add_attribute(x => $x); $node->add_attribute(y => $y); $node; }); TITLE: hello pair => x, y FILE: doc/test1/index.html IN: world!

Hello

&perl:x; x &perl:y; = OUT:

Hello world!

3 x 8 = 24 TITLE: hello => real => x, y FILE: doc/test1/t%d.html IN: &perl:x; x &perl:y; = OUT: 3 x 8 = 24 # eol. TITLE: hello => real => x, y FILE: doc/test1/t%d.html IN: &perl:x; x &perl:y; = OUT: 3 x 8 = 24 # eol. TITLE: hello => optional argmacro FILE: doc/test1/t%d.html IN: Hello &yatt:arg; OUT: Hello world # eol. FILE: doc/test2/.htyattrc IN: use YATT::ArgMacro range => out => ['list=list'], in => [qw(from to)]; use YATT::LRXML::Node; range->define(handle => sub { (my range $macro, my ($trans, $scope, $node)) = @_; $macro->accept($trans, $scope, $node); $node->add_node($macro->{out_list}) if $macro->{out_list}; $node; }); range->define(accept => sub { (my range $macro, my ($trans, $scope, $node)) = @_; $macro->{out_list} = $node->create_attribute($macro->output_name('list') => node_body($macro->{cf_from}), '..', node_body($macro->{cf_to})); }); TITLE: %range; FILE: doc/test2/t%d.html IN: &yatt:list:expand(); OUT: 345678 # eol. TITLE: %range; - output overriding FILE: doc/test2/t%d.html IN: &yatt:list:expand(); OUT: 234 # eol. TITLE: %range; input and output overriding FILE: doc/test2/t%d.html IN: &yatt:to; OUT: 8 # eol. TITLE: %range(num=from); FILE: doc/test2/t%d.html IN: &yatt:num:expand(); OUT: 345 # eol. TITLE: %range(num=from); overriding FILE: doc/test2/t%d.html IN: &yatt:num:expand(); OUT: 23 # eol. TITLE: %range(row=from); %range(col=from); FILE: doc/test2/t%d.html IN: &yatt:row:expand(); &yatt:col:expand(); OUT: 234 678 # eol. TITLE: %range(row=from); %range(col=from); overriding FILE: doc/test2/t%d.html IN: &yatt:row:expand(); &yatt:col:expand(); OUT: 23 78 # eol.