package Text::Dokuwiki::Render; use strict; use warnings; use utf8; sub new { my ($class) = @_; my $self = { list_depth => 0, }; return bless($self, $class); } sub treewalk { my ($self, @tree) = @_; my $output = ""; foreach my $part (@tree) { if (ref $part eq 'ARRAY') { my ($tag, $attrs, @rest) = @{$part}; if ($self->SUPER::can($tag)) { $output .= $self->$tag($attrs, $self->treewalk(@rest)); } elsif ($self->SUPER::can('default')){ $output .= $self->default($tag, $attrs, $self->treewalk(@rest)); } else { die("Unimplemented handler for tag: $tag\n"); } next; } $output .= $part; } return $output; } 1;