#
# This software is Copyright 2005 by Elsevier Inc.  You may use it
# under the terms of the license at http://perl.plover.com/hop/LICENSE.txt .
#



###
### walk_html_dispatch
###

## Chapter 2 section 2.1

sub walk_html {
  my ($html, $textfunc, $elementfunc_table) = @_;
  return $textfunc->($html) unless ref $html;   # It's a plain string

  my ($item, @results);
  for $item (@{$html->{_content}}) {
    push @results, walk_html($item, $textfunc, $elementfunc_table);
  }
  my $tag = $html->{_tag};
  my $elementfunc =  $elementfunc_table->{$tag} 
               || $elementfunc_table->{_DEFAULT_}
               || die "No function defined for tag `$tag'";
  return $elementfunc->($html, @results);
}
