--- deliantra/Deliantra-Client/DC/Pod.pm 2006/07/23 16:11:12 1.1 +++ deliantra/Deliantra-Client/DC/Pod.pm 2006/07/24 08:23:28 1.2 @@ -7,23 +7,25 @@ use CFClient; use CFClient::UI; -our $VERSION = 1; # bump if resultant formatting changes +our $VERSION = 1.02; # bump if resultant formatting changes our @result; our $indent; -package CFClient::Pod::AsXML; +package CFClient::Pod::AsMarkup; use strict; use base "Pod::POM::View::Text"; +*view_seq_file = *view_seq_code = *view_seq_bold = sub { "$_[1]" }; *view_seq_italic = sub { "$_[1]" }; *view_seq_space = -*view_seq_link = -*view_seq_index = sub { CFClient::asxml $_[1] }; +*view_seq_link = sub { CFClient::asxml $_[1] }; +*view_seq_zero = +*view_seq_index = sub { }; sub view_seq_text { my $text = $_[1]; @@ -46,7 +48,7 @@ } sub view_textblock { - ("\t" x ($indent / 2)) . "$_[1]\n\n" + ("\t" x ($indent / 2)) . "$_[1]\n" } sub view_head1 { @@ -75,12 +77,13 @@ use base "Pod::POM::View"; +*view_seq_file = *view_seq_code = *view_seq_bold = sub { "$_[1]" }; *view_seq_italic = sub { "$_[1]" }; -*view_seq_space = -*view_seq_link = -*view_seq_index = sub { CFClient::asxml $_[1] }; +*view_seq_zero = sub { }; +*view_seq_space = sub { my $text = $_[1]; $text =~ s/ / /g; $text }; +*view_seq_index = sub { warn "index<@_>\n"; $result[-1]{index}{$_[1]} = undef }; sub view_seq_text { my $text = $_[1]; @@ -88,10 +91,21 @@ CFClient::asxml $text } +sub view_seq_link { + my (undef, $link) = @_; + + # TODO: + # http://... + # ref + # pod/ref + + "" . (CFClient::asxml $_[1]) . ""; +} + sub view_item { push @result, { indent => $indent * 8, - text => $_[1]->title->present ($_[0]) . "\n\n", + markup => $_[1]->title->present ($_[0]) . "\n\n", }; $_[1]->content->present ($_[0]); () @@ -100,7 +114,7 @@ sub view_verbatim { push @result, { indent => $indent * 16, - text => "" . (CFClient::asxml $_[1]) . "", + markup => "" . (CFClient::asxml $_[1]) . "\n", }; () } @@ -108,7 +122,7 @@ sub view_textblock { push @result, { indent => $indent * 16, - text => "$_[1]\n", + markup => "$_[1]\n", }; () } @@ -116,7 +130,7 @@ sub view_head1 { push @result, { indent => $indent * 16, - text => "\n\n" . $_[1]->title->present ($_[0]) . "\n", + markup => "\n\n" . $_[1]->title->present ($_[0]) . "\n", }; $_[1]->content->present ($_[0]); () @@ -125,7 +139,7 @@ sub view_head2 { push @result, { indent => $indent * 16, - text => "\n\n" . $_[1]->title->present ($_[0]) . "\n", + markup => "\n\n" . $_[1]->title->present ($_[0]) . "\n", }; $_[1]->content->present ($_[0]); () @@ -134,7 +148,7 @@ sub view_head3 { push @result, { indent => $indent * 16, - text => "\n\n" . $_[1]->title->present ($_[0]) . "\n", + markup => "\n\n" . $_[1]->title->present ($_[0]) . "\n", }; $_[1]->content->present ($_[0]); () @@ -151,8 +165,8 @@ if ($_[1]->format eq "image") { push @result, { indent => $indent * 16, - text => "\x{fffc}", - obj => [new CFClient::UI::Image path => "pod/" . $_[1]->text], + markup => "\x{fffc}", + widget => [new CFClient::UI::Image path => "pod/" . $_[1]->text], }; } () @@ -176,7 +190,10 @@ my $phash = join ",", $filterversion, $VERSION, (stat _)[7,9]; - my ($chash, $pom) = eval { @{ Storable::thaw $pod_cache->get ("$path/$filtertype") } }; + my ($chash, $pom) = eval { + local $SIG{__DIE__}; + @{ Storable::thaw $pod_cache->get ("$path/$filtertype") } + }; return $pom if $chash eq $phash; @@ -196,12 +213,16 @@ $pom } -sub as_xml($) { +sub section($$) { + my ($pod, $section) = @_; +} + +sub as_markup($) { my ($pom) = @_; local $indent = 0; - $pom->present ("CFClient::Pod::AsXML") + $pom->present ("CFClient::Pod::AsMarkup") } sub as_paragraphs($) { @@ -212,6 +233,11 @@ $pom->present ("CFClient::Pod::AsParagraphs"); - [grep exists $_->{text}, @result] + [grep exists $_->{markup}, @result] +} + +sub pod_paragraphs($) { + load CFClient::find_rcfile "pod/$_[0].pod", + pod_paragraphs => 1, sub { as_paragraphs $_[0] }; }