Properly fix htmlspecialchars.
[diogenes.git] / include / Text / Wiki / Parse / Default / Heading.php
CommitLineData
6855525e
JL
1<?php
2
3/**
4*
5* Parses for heading text.
6*
7* @category Text
8*
9* @package Text_Wiki
10*
11* @author Paul M. Jones <pmjones@php.net>
12*
13* @license LGPL
14*
15* @version $Id: Heading.php,v 1.3 2005/02/23 17:38:29 pmjones Exp $
16*
17*/
18
19/**
20*
21* Parses for heading text.
22*
23* This class implements a Text_Wiki_Parse to find source text marked to
24* be a heading element, as defined by text on a line by itself prefixed
25* with a number of plus signs (+). The heading text itself is left in
26* the source, but is prefixed and suffixed with delimited tokens marking
27* the start and end of the heading.
28*
29* @category Text
30*
31* @package Text_Wiki
32*
33* @author Paul M. Jones <pmjones@php.net>
34*
35*/
36
37class Text_Wiki_Parse_Heading extends Text_Wiki_Parse {
38
39
40 /**
41 *
42 * The regular expression used to parse the source text and find
43 * matches conforming to this rule. Used by the parse() method.
44 *
45 * @access public
46 *
47 * @var string
48 *
49 * @see parse()
50 *
51 */
52
53 var $regex = '/^(\+{1,6}) (.*)/m';
54
55 var $conf = array(
56 'id_prefix' => 'toc'
57 );
58
59 /**
60 *
61 * Generates a replacement for the matched text. Token options are:
62 *
63 * 'type' => ['start'|'end'] The starting or ending point of the
64 * heading text. The text itself is left in the source.
65 *
66 * @access public
67 *
68 * @param array &$matches The array of matches from parse().
69 *
70 * @return string A pair of delimited tokens to be used as a
71 * placeholder in the source text surrounding the heading text.
72 *
73 */
74
75 function process(&$matches)
76 {
77 // keep a running count for header IDs. we use this later
78 // when constructing TOC entries, etc.
79 static $id;
80 if (! isset($id)) {
81 $id = 0;
82 }
83
60181dfb 84 $prefix = htmlspecialchars($this->getConf('id_prefix'), ENT_COMPAT | ENT_HTML401, "ISO-8859-1");
6855525e
JL
85
86 $start = $this->wiki->addToken(
87 $this->rule,
88 array(
89 'type' => 'start',
90 'level' => strlen($matches[1]),
91 'text' => $matches[2],
92 'id' => $prefix . $id ++
93 )
94 );
95
96 $end = $this->wiki->addToken(
97 $this->rule,
98 array(
99 'type' => 'end',
100 'level' => strlen($matches[1])
101 )
102 );
103
104 return $start . $matches[2] . $end . "\n";
105 }
106}
60181dfb 107?>