ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/ext/books.ext
Revision: 1.5
Committed: Wed Oct 1 17:23:16 2008 UTC (15 years, 7 months ago) by root
Branch: MAIN
CVS Tags: rel-2_82, rel-2_81, rel-2_80, rel-2_72, rel-2_73, rel-2_76, rel-2_77, rel-2_74, rel-2_75, rel-2_79, rel-2_90, rel-2_92, rel-2_93, rel-2_78
Changes since 1.4: +5 -1 lines
Log Message:
*** empty log message ***

File Contents

# Content
1 #! perl # mandatory
2
3 our @BOOKS;
4
5 sub reload() {
6 @BOOKS = ();
7
8 my $paragraphs = cf::pod::load_pod "$PODDIR/books.pod"
9 or die "unable to load $PODDIR/books.pod";
10
11 my $level = 1e9;
12 my @books;
13
14 for my $par (@$paragraphs) {
15 if ($par->{type} eq "head1") {
16 if ($par->{markup} =~ /^(\S+)/) {
17 push @books, [$par];
18 $level = $par->{level};
19 }
20 } elsif ($par->{level} > $level) {
21 push @{ $books[-1] }, $par;
22 }
23 }
24
25 @BOOKS = @books;
26
27 ()
28 }
29
30 cf::post_init {
31 cf::async_ext { reload };
32 };
33
34 sub make_book {
35 my ($book, $level) = @_;
36
37 return unless @BOOKS;
38
39 my ($title, @body) = @{$BOOKS[rand @BOOKS]};
40
41 # half-assed attempt to make it a single line text-only title
42 $title = cf::pod::as_cfpod [$title];
43 $title =~ s/\n/ /g;
44 $title =~ s/ +$//;
45 $title =~ s/B<([^>]*)>/$1/g;
46
47 $book->name ($title);
48 $book->name_pl ($title);
49 $book->title (undef);
50 $book->msg (cf::pod::as_cfpod \@body);
51 }
52