ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/ext/doclet.ext
Revision: 1.4
Committed: Wed Nov 21 12:12:03 2012 UTC (11 years, 6 months ago) by root
Branch: MAIN
CVS Tags: rel-3_1, HEAD
Changes since 1.3: +9 -0 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.1 #! perl # mandatory
2    
3     # implements the doclet exti request, to serve cfhtml strings
4    
5     our %DOCLET; # $DOCLET{category} = $cb
6    
7     sub register($$) {
8     my ($category, $cb) = @_;
9     $DOCLET{$category} = $cb;
10     Guard::guard { delete $DOCLET{$category} }
11     }
12    
13 root 1.3 sub doclet($$$) {
14     my ($pl, $category, $item) = @_;
15    
16     if (my $cb = $DOCLET{$category}) {
17     $cb->($pl, $category, $item)
18     } else {
19     "No documentation found for $category/$item."
20     }
21     }
22    
23     our $SKILL_HANDLER = ext::doclet::register skill => sub {
24     my ($pl, $category, $name) = @_;
25    
26     my $skill = $pl->find_skill ($name);
27    
28     "B<$name>\n\n"
29     . ($skill ? $skill->msg : "You don't know anything about this skill.")
30     };
31    
32 root 1.4 our $SPELL_HANDLER = ext::doclet::register spell => sub {
33     my ($pl, $category, $name) = @_;
34    
35     my $skill = $pl->ob->find_spell ($name);
36    
37     "B<$name>\n\n"
38     . ($skill ? $skill->msg : "You don't know anything about this spell.")
39     };
40    
41 root 1.1 cf::register_async_exticmd doclet => sub {
42 root 1.3 my ($ns, $reply, $category, $item) = @_;
43 root 1.1
44 root 1.3 $ns->async (sub {
45 root 1.1 my $cfpod;
46    
47     if (my $pl = $ns->pl) {
48 root 1.3 $cfpod = $pl->expand_cfpod (doclet $pl, $category, $item);
49 root 1.1 } else {
50 root 1.2 $cfpod = "(documentation not available before login)";
51 root 1.1 }
52    
53     $reply->($cfpod);
54 root 1.3 });
55 root 1.1 };
56