--- deliantra/Deliantra-Client/bin/pod2wiki 2006/08/13 02:43:23 1.1
+++ deliantra/Deliantra-Client/bin/pod2wiki 2006/08/14 18:46:08 1.8
@@ -1,17 +1,23 @@
#! perl
-use Storable;
-
# convert given .pod files to wiki style
+# base path of arch tree, only used for new arch graphics
+my $ARCH = "/root/devel/cvs/cf.schmorp.de/arch";
+
use strict;
+use Storable;
use Pod::POM;
our @result;
our $indent;
our $level;
+my $MA_BEG = "\x{fcd0}";
+my $MA_SEP = "\x{fcd1}";
+my $MA_END = "\x{fcd2}";
+
sub asxml($) {
local $_ = $_[0];
@@ -33,6 +39,10 @@
$_
}
+sub special {
+ $MA_BEG . (join $MA_SEP, @_) . $MA_END
+}
+
package AsParagraphs;
use strict;
@@ -56,12 +66,18 @@
sub view_seq_link {
my (undef, $link) = @_;
- # TODO:
- # http://...
- # ref
- # pod/ref
+ my $text = $link =~ s/^(.*)\|// ? $1 : $link;
- "" . (::asxml $_[1]) . "";
+ if ($link =~ /http:/) {
+ "" . (::asxml $link) . ""
+ } elsif ($link =~ /^\$ARCH\/(.+)$/) {
+ my $path = $1;
+ (my $base = $path) =~ s/.*\///;
+ -f "$ARCH/$path" && system "rsync -av -c \Q$ARCH/$path\E \Qresources/arch/$base";
+ ::special image => "arch/$base", 1;
+ } else {
+ ::special link => $text, $link
+ }
}
sub view_item {
@@ -70,8 +86,8 @@
level => $level,
};
my $title = $_[1]->title->present ($_[0]);
- $result[-1]{markup} = "$title\n\n";
- unshift @{ $result[-1]{index} }, ::flatten $title;
+ $result[-1]{markup} = "$title\n\n" if length $title;
+ $title = ::flatten $title; unshift @{ $result[-1]{index} }, $title if length $title;
local $level = $level + 1;
$_[1]->content->present ($_[0]);
()
@@ -101,8 +117,8 @@
level => $level,
};
my $title = $_[1]->title->present ($_[0]);
- $result[-1]{markup} = "\n\n$title\n";
- unshift @{ $result[-1]{index} }, ::flatten $title;
+ $result[-1]{markup} = "\n\n$title\n" if length $title;
+ $title = ::flatten $title; unshift @{ $result[-1]{index} }, $title if length $title;
local $level = $level + 1;
$_[1]->content->present ($_[0]);
()
@@ -114,8 +130,8 @@
level => $level,
};
my $title = $_[1]->title->present ($_[0]);
- $result[-1]{markup} = "\n\n$title\n";
- unshift @{ $result[-1]{index} }, ::flatten $title;
+ $result[-1]{markup} = "\n\n$title\n" if length $title;
+ $title = ::flatten $title; unshift @{ $result[-1]{index} }, $title if length $title;
local $level = $level + 1;
$_[1]->content->present ($_[0]);
()
@@ -127,8 +143,8 @@
level => $level,
};
my $title = $_[1]->title->present ($_[0]);
- $result[-1]{markup} = "\n\n$title\n";
- unshift @{ $result[-1]{index} }, ::flatten $title;
+ $result[-1]{markup} = "\n\n$title\n" if length $title;
+ $title = ::flatten $title; unshift @{ $result[-1]{index} }, $title if length $title;
local $level = $level + 1;
$_[1]->content->present ($_[0]);
()
@@ -146,8 +162,7 @@
push @result, {
indent => $indent * 16,
level => $level,
- markup => "\x{fffc}",
- widget => [["CFPlus::UI::Image" => path => "pod/" . $_[1]->text]],
+ markup => (::special image => "pod/" . $_->text),
};
}
()
@@ -164,13 +179,13 @@
sub as_paragraphs($) {
my ($pom) = @_;
- local @result = ( { } );
local $indent = 0;
local $level = 1;
+ local @result = ( { } );
$pom->present ("AsParagraphs");
- [grep exists $_->{markup}, @result]
+ [grep $_->{index} || exists $_->{markup}, @result]
}
#############################################################################
@@ -181,7 +196,7 @@
my ($node) = @_;
for (@{ $node->{kw} || {} }) {
- push @{$wiki{$_}}, $node;
+ push @{$wiki{lc $_}}, $node;
}
}