# -*- coding: utf-8 -*- FILE: doc/.htyattrc IN: use YATT::Registry special_entities => [qw(sum)]; Entity sum => sub { my ($pack, @args) = @_; my $sum = 0; $sum += $_ for @args; $sum; }; Entity new => sub { my ($pack, @args) = @_; bless [@args], $pack; }; sub foo { my $self = shift; my $mul = 1; foreach my $i (@$self, @_) { $mul *= $i; } $mul } sub entity_HTML { my $this = shift; \ join "", grep {defined $_} @_; } sub entity_dump { shift; YATT::Util::terse_dump(@_); } TITLE: &yatt:sum(3,4,5); IN: &yatt:sum(3,4,5); OUT: 12 TITLE: &yatt:this:method(); IN: &yatt:x:foo(3,8); OUT: 48 TITLE: &sum(); IN: &sum(3,8); OUT: 11 TITLE: hashref IN: &yatt:x{foo}{:y}; PARAM[ { foo{ bar: baz } } - bar ] OUT: baz TITLE: aref with var index IN: &yatt:x[:y]; PARAM[ [ - 3 - 4 - 5 ] - 1 ] OUT: 4 TITLE: aref with call index IN: &yatt:x[:sum(0,1,2)]; PARAM[ [ - 3 - 4 - 5 - 6 ] ] OUT: 6 TITLE: aref nest IN: &yatt:x[0][:y][1]; PARAM[ [ [ - X [ - x - o - y ] ] ] - 1 ] OUT: o TITLE: aref with var index IN: &yatt:x[:y[0][:z]][1]; PARAM[ [ - 3 [ - X - O ] - 5 ] [ [ - 2 - 1 - 0 ] ] - 1 ] OUT: O TITLE: parse error (aref) IN: &yatt:x[0][0]][0]; PARAM[ [ [ ] ] ] ERROR: ^Unexpected token '\]\[0\]' TITLE: array literal IN: &yatt:HTML(:dump([3])); OUT: ['3'] TITLE: array literal and aref IN: &yatt:HTML([=3][0]); OUT: 3 TITLE: expr: or IN: &yatt:if(=$$list[0]or$$list[1],yes,no); PARAM[ [ - 1 - 0 ] ] OUT: yes TITLE: expr: == IN: &yatt:if(=$$list[0]*$$list[1]==24,yes,no); PARAM[ [ - 3 - 8 ] ] OUT: yes TITLE: expr: (..) IN: &yatt:if(=($$list[0]+$$list[1])==11,yes,no); PARAM[ [ - 3 - 8 ] ] OUT: yes TITLE: expr: @var IN: &yatt:HTML(=@var); OUT: 345678