--- deliantra/Deliantra-Client/bin/pod2wiki 2006/08/13 02:43:23 1.1
+++ deliantra/Deliantra-Client/bin/pod2wiki 2006/08/14 14:35:31 1.7
@@ -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];
@@ -56,12 +62,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";
+ "${MA_BEG}image${MA_SEP}arch/$base$MA_END"
+ } else {
+ "${MA_BEG}link$MA_SEP$text$MA_SEP$link$MA_END"
+ }
}
sub view_item {
@@ -70,8 +82,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 +113,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 +126,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 +139,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 +158,7 @@
push @result, {
indent => $indent * 16,
level => $level,
- markup => "\x{fffc}",
- widget => [["CFPlus::UI::Image" => path => "pod/" . $_[1]->text]],
+ markup => "${MA_BEG}image${MA_SEP}pod/" . $_->text . $MA_END,
};
}
()
@@ -164,13 +175,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 +192,7 @@
my ($node) = @_;
for (@{ $node->{kw} || {} }) {
- push @{$wiki{$_}}, $node;
+ push @{$wiki{lc $_}}, $node;
}
}