ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/lib/cf/pod.pm
(Generate patch)

Comparing deliantra/server/lib/cf/pod.pm (file contents):
Revision 1.24 by root, Mon Jun 21 22:28:12 2010 UTC vs.
Revision 1.28 by root, Tue Nov 13 01:12:23 2012 UTC

1# 1#
2# This file is part of Deliantra, the Roguelike Realtime MMORPG. 2# This file is part of Deliantra, the Roguelike Realtime MMORPG.
3# 3#
4# Copyright (©) 2005,2006,2007,2008,2009,2010 Marc Alexander Lehmann / Robin Redeker / the Deliantra team 4# Copyright (©) 2005,2006,2007,2008,2009,2010,2011,2012 Marc Alexander Lehmann / Robin Redeker / the Deliantra team
5# 5#
6# Deliantra is free software: you can redistribute it and/or modify it under 6# Deliantra is free software: you can redistribute it and/or modify it under
7# the terms of the Affero GNU General Public License as published by the 7# the terms of the Affero GNU General Public License as published by the
8# Free Software Foundation, either version 3 of the License, or (at your 8# Free Software Foundation, either version 3 of the License, or (at your
9# option) any later version. 9# option) any later version.
10# 10#
11# This program is distributed in the hope that it will be useful, 11# This program is distributed in the hope that it will be useful,
12# but WITHOUT ANY WARRANTY; without even the implied warranty of 12# but WITHOUT ANY WARRANTY; without even the implied warranty of
13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14# GNU General Public License for more details. 14# GNU General Public License for more details.
15# 15#
16# You should have received a copy of the Affero GNU General Public License 16# You should have received a copy of the Affero GNU General Public License
17# and the GNU General Public License along with this program. If not, see 17# and the GNU General Public License along with this program. If not, see
18# <http://www.gnu.org/licenses/>. 18# <http://www.gnu.org/licenses/>.
19# 19#
20# The authors can be reached via e-mail to <support@deliantra.net> 20# The authors can be reached via e-mail to <support@deliantra.net>
21# 21#
22 22
23package cf::pod; 23package cf::pod;
24 24
192 192
193############################################################################# 193#############################################################################
194 194
195package cf::pod; 195package cf::pod;
196 196
197sub pom_as_paragraphs($) { 197sub pom_as_paragraphs_ng($) {
198 my ($pom) = @_; 198 my ($pom) = @_;
199
200 # we suckers use global variables, unfortunately.
201 my $guard = cf::lock_acquire "cf::pod::as_paragraphs";
202 199
203 local $indent = 0; 200 local $indent = 0;
204 local $level = 1; 201 local $level = 1;
205 local @result = ( { } ); 202 local @result = ( { } );
206 203
207 $pom->present ("cf::pod::AsParagraphs"); 204 $pom->present ("cf::pod::AsParagraphs");
208 205
209 [grep $_->{index} || exists $_->{markup}, @result] 206 [grep $_->{index} || exists $_->{markup}, @result]
210} 207}
211 208
209sub pom_as_paragraphs($) {
210 my ($pom) = @_;
211
212 # we suckers use global variables, unfortunately.
213 my $guard = cf::lock_acquire "cf::pod::as_paragraphs";
214
215 $pom->pom_as_paragraphs_ng
216}
217
212sub load_pod($) { 218sub load_pod($) {
213 my ($path) = @_; 219 my ($path) = @_;
214 220
215 Coro::Storable::thaw cf::cache "cf::pod::as_paragraphs/$path" => [$path], 221 Coro::Storable::thaw cf::cache "cf::pod::as_paragraphs/$path" => [$path],
216 8 => sub { 222 8 => sub {
217 my ($src) = @_; 223 my ($src) = @_;
218 224
219 cf::fork_call { 225 cf::fork_call {
220 Coro::Storable::blocking_nfreeze 226 Coro::Storable::blocking_nfreeze
221 pom_as_paragraphs 227 pom_as_paragraphs_ng
222 +(Pod::POM->new->parse_text ($src->[0])) 228 +(Pod::POM->new->parse_text ($src->[0]))
223 } 229 }
224 }; 230 };
225} 231}
226 232

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines