import of Diogenes 0.9.18
[diogenes.git] / include / Text / Wiki / Parse / Default / Prefilter.php
1 <?php
2
3 /**
4 *
5 * "Pre-filter" the source 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: Prefilter.php,v 1.3 2005/02/23 17:38:29 pmjones Exp $
16 *
17 */
18
19 /**
20 *
21 * "Pre-filter" the source text.
22 *
23 * Convert DOS and Mac line endings to Unix, concat lines ending in a
24 * backslash \ with the next line, convert tabs to 4-spaces, add newlines
25 * to the top and end of the source text, compress 3 or more newlines to
26 * 2 newlines.
27 *
28 * @category Text
29 *
30 * @package Text_Wiki
31 *
32 * @author Paul M. Jones <pmjones@php.net>
33 *
34 */
35
36 class Text_Wiki_Parse_Prefilter extends Text_Wiki_Parse {
37
38
39 /**
40 *
41 * Simple parsing method.
42 *
43 * @access public
44 *
45 */
46
47 function parse()
48 {
49 // convert DOS line endings
50 $this->wiki->source = str_replace("\r\n", "\n",
51 $this->wiki->source);
52
53 // convert Macintosh line endings
54 $this->wiki->source = str_replace("\r", "\n",
55 $this->wiki->source);
56
57 // concat lines ending in a backslash
58 $this->wiki->source = str_replace("\\\n", "",
59 $this->wiki->source);
60
61 // convert tabs to four-spaces
62 $this->wiki->source = str_replace("\t", " ",
63 $this->wiki->source);
64
65 // add extra newlines at the top and end; this
66 // seems to help many rules.
67 $this->wiki->source = "\n" . $this->wiki->source . "\n\n";
68
69 // finally, compress all instances of 3 or more newlines
70 // down to two newlines.
71 $find = "/\n{3,}/m";
72 $replace = "\n\n";
73 $this->wiki->source = preg_replace($find, $replace,
74 $this->wiki->source);
75 }
76
77 }
78 ?>