File Coverage

blib/lib/BBCode/Parser.pm
Criterion Covered Total %
statement 210 251 83.6
branch 70 110 63.6
condition 5 9 55.5
subroutine 27 29 93.1
pod 10 13 76.9
total 322 412 78.1


line stmt bran cond sub pod time code
1             # $Id: Parser.pm 284 2006-12-01 07:51:49Z chronos $
2             package BBCode::Parser;
3 6     6   180767 use BBCode::Util qw(:parse :tag);
  6         23  
  6         2226  
4 6     6   3753 use BBCode::TagSet;
  6         20  
  6         171  
5 6     6   4006 use BBCode::Tag;
  6         21  
  6         180  
6 6     6   3378 use BBCode::Body;
  6         16  
  6         178  
7 6     6   38 use Carp qw(croak);
  6         14  
  6         272  
8 6     6   29 use strict;
  6         12  
  6         201  
9 6     6   27 use warnings;
  6         12  
  6         286  
10              
11             our $VERSION = '0.34';
12              
13             BEGIN {
14 6     6   2385 die "EBCDIC platforms not supported" unless ord "A" == 0x41;
15             }
16              
17             =head1 NAME
18              
19             BBCode::Parser - Parses BBCode tags
20              
21             =head1 DESCRIPTION
22              
23             BBCode is a simplified markup language used in several online forums
24             and bulletin boards. It originated with phpBB, and remains most popular
25             among applications written in PHP. Generally, users author their posts in
26             BBCode, and the forum converts it to a permitted subset of well-formed HTML.
27              
28             C is a proper recursive parser for BBCode-formatted text.
29              
30             =head1 OVERVIEW
31              
32             A C object stores various settings that affect the parsing
33             process. Simple settings are typically set when the parser is created using
34             L, but they can be queried using L and altered
35             using L.
36              
37             See L for more information.
38              
39             In addition to the simple settings, specific BBCode tags (or classes of tags)
40             can be permitted or forbidden, using L and
41             L respectively. By default, the only forbidden tag is
42             C<[HTML]>, which is normally a security violation if permitted.
43              
44             See L for a list of tag classes.
45              
46             Once the parser has been configured appropriately, parse trees can be created
47             using the L method. The parse tree will consist of objects
48             derived from L; the root of the tree will be a
49             L object.
50              
51             Converting the parse tree to HTML is quite simple: call L
52             on the root of the tree. Likewise, the parse tree can be converted back to
53             BBCode by calling L. See
54             L<"METHODS" in BBCode::Tag|BBCode::Tag/"METHODS"> to find out what other
55             output methods are available.
56              
57             =head1 SETTINGS
58              
59             The following settings can be manipulated using L and L.
60              
61             =over
62              
63             =item css_prefix
64              
65             (Type: String; Default: "bbcode-")
66              
67             Many BBCode tags will add CSS classes as style hooks in the output HTML, such
68             as C<<
...
>>. This setting allows you to
69             override the naming scheme for those hooks. At the moment, more direct control
70             of the CSS class names is not available.
71              
72             =item css_direct_styles
73              
74             (Type: Boolean; Default: FALSE)
75              
76             Certain style-related BBCode tags, such as [U] (underline) and [S]
77             (strike-through) don't have a direct equivalent in modern XHTML 1.0 Strict.
78             If this value is TRUE, then the generated HTML will use a C