sub build_para
{
return $handlers{'para'}->(join "" => map { $handlers{$_->[0]}->($_->[1]) } @{$_[0]});
}
####
my @test_data_2 = ( 'para', [
['none', 'The quick brown '],
['bold', 'fox'],
['none', ' jumped '],
['ital', 'over'],
['none', ' the lazy '],
['bold', 'dog'],
['none', '.']
]
);
sub build_HTML {
join "" => map {
(ref($_->[1]) eq "ARRAY") ?
$handlers{$_->[0]}->(build_HTML(@{$_->[1]}))
:
$handlers{$_->[0]}->($_->[1])
} ref($_[0]) ? @_ : ([ @_ ]);
}
print build_HTML(@test_data_2);
##
##
*build_para = curry(\&build_HTML, 'para');
print build_para(\@test_data);