--- 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] };
}