Revision: | 1.5 |
Committed: | Wed Oct 1 17:23:16 2008 UTC (15 years, 10 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 *** |
# | User | Rev | Content |
---|---|---|---|
1 | root | 1.2 | #! perl # mandatory |
2 | root | 1.1 | |
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 | root | 1.5 | |
27 | () | ||
28 | root | 1.1 | } |
29 | |||
30 | root | 1.5 | cf::post_init { |
31 | cf::async_ext { reload }; | ||
32 | }; | ||
33 | root | 1.1 | |
34 | sub make_book { | ||
35 | my ($book, $level) = @_; | ||
36 | |||
37 | return unless @BOOKS; | ||
38 | |||
39 | my ($title, @body) = @{$BOOKS[rand @BOOKS]}; | ||
40 | |||
41 | root | 1.3 | # half-assed attempt to make it a single line text-only title |
42 | $title = cf::pod::as_cfpod [$title]; | ||
43 | root | 1.1 | $title =~ s/\n/ /g; |
44 | $title =~ s/ +$//; | ||
45 | root | 1.3 | $title =~ s/B<([^>]*)>/$1/g; |
46 | root | 1.1 | |
47 | $book->name ($title); | ||
48 | $book->name_pl ($title); | ||
49 | $book->title (undef); | ||
50 | root | 1.3 | $book->msg (cf::pod::as_cfpod \@body); |
51 | root | 1.1 | } |
52 |