--- deliantra/Deliantra-Client/bin/pod2wiki 2008/03/25 01:46:36 1.11 +++ deliantra/Deliantra-Client/bin/pod2wiki 2008/03/25 02:12:36 1.12 @@ -93,19 +93,6 @@ } } -sub view_item { - push @result, [ - $indent * 8, - $level, - ]; - my $title = $_[1]->title->present ($_[0]); - $result[-1][P_MARKUP] = "$title\n" if length $title; - $title = ::flatten $title; unshift @{ $result[-1][P_INDEX] }, $title if length $title; - local $level = $level + 1; - $_[1]->content->present ($_[0]); - () -} - sub view_verbatim { push @result, [ $indent * 16, $level, "" . (::asxml $_[1]) . "\n" ]; () @@ -149,6 +136,15 @@ sub view_over { local $indent = $indent + $_[1]->indent; push @result, [ $indent, $level ]; + $_[1]->content->present ($_[0]); + () +} + +sub view_item { + push @result, [ $indent * 8, $level ]; + my $title = $_[1]->title->present ($_[0]); + $result[-1][P_MARKUP] = "$title\n" if length $title; + $title = ::flatten $title; unshift @{ $result[-1][P_INDEX] }, $title if length $title; local $level = $level + 1; $_[1]->content->present ($_[0]); () @@ -196,14 +192,13 @@ sub add_node($) { my ($node) = @_; - for (@{ $node->{kw} || {} }) { + for (@{ $node->[N_KW] || {} }) { push @{$wiki{lc $_}}, $node; } } -my $root = { - kw => ["pod"], -}; +my $root; +$root->[N_KW] = ["pod"]; for my $path (@ARGV) { $path =~ /([^\/\\]+)\.pod$/ or die "$path: illegal pathname"; @@ -217,26 +212,30 @@ my $para = as_paragraphs $pom; - my @parent = ( - { parent => $root, kw => [$base], doc => $para, par => 0, level => 1 }, - ); + my $pod; + $pod->[N_PARENT] = $root; + $pod->[N_PAR] = 0; + $pod->[N_LEVEL] = 1; + $pod->[N_KW] = [$base]; + $pod->[N_DOC] = $para; + + my @parent = ($pod); add_node $parent[-1]; for my $idx (0 .. $#$para) { my $par = $para->[$idx]; - while ($parent[-1]{level} >= $par->[P_LEVEL]) { + while ($parent[-1][N_LEVEL] >= $par->[P_LEVEL]) { pop @parent; } if ($par->[P_INDEX]) { - my $node = { - kw => $par->[P_INDEX], - parent => $parent[-1], - doc => $para, - par => $idx, - level => $par->[P_LEVEL], - }; + my $node; + $node->[N_PARENT] = $parent[-1]; + $node->[N_PAR] = $idx; + $node->[N_LEVEL] = $par->[P_LEVEL]; + $node->[N_KW] = $par->[P_INDEX]; + $node->[N_DOC] = $para; push @parent, $node; add_node $node; }