C:\xampp\php\pear\Text\Wiki\Parse\Default\Deflist.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
<?php

/**

* Parses for definition lists.

* @category Text

* @package Text_Wiki

* @author Paul M. Jones <pmjones@php.net>

* @license LGPL

* @version $Id: Deflist.php 180591 2005-02-23 17:38:29Z pmjones $

*/

/**

* Parses for definition lists.

* This class implements a Text_Wiki_Parse to find source text marked as a
* definition list.  In short, if a line starts with ':' then it is a
* definition list item; another ':' on the same line indicates the end
* of the definition term and the beginning of the definition narrative.
* The list items must be on sequential lines (no blank lines between
* them) -- a blank line indicates the beginning of a new list.
*
* @category Text

* @package Text_Wiki

* @author Paul M. Jones <pmjones@php.net>

*/

class Text_Wiki_Parse_Deflist extends Text_Wiki_Parse {
    
    
    
/**
    * 
    * The regular expression used to parse the source text and find
    * matches conforming to this rule.  Used by the parse() method.
    * 
    * @access public
    * 
    * @var string
    * 
    * @see parse()
    * 
    */
    
    
var $regex '/\n((: ).*\n)(?!(: |\n))/Us';
    
    
    
/**
    * 
    * Generates a replacement for the matched text.  Token options are:
    * 
    * 'type' =>
    *     'list_start'    : the start of a definition list
    *     'list_end'      : the end of a definition list
    *     'term_start'    : the start of a definition term
    *     'term_end'      : the end of a definition term
    *     'narr_start'    : the start of definition narrative
    *     'narr_end'      : the end of definition narrative
    *     'unknown'       : unknown type of definition portion
    *
    * @access public
    *
    * @param array &$matches The array of matches from parse().
    *
    * @return A series of text and delimited tokens marking the different
    * list text and list elements.
    *
    */
    
    
function process(&$matches)
    {
        
// the replacement text we will return to parse()
        
$return '';
        
        
// the list of post-processing matches
        
$list = array();
        
        
// start the deflist
        
$options = array('type' => 'list_start');
        
$return .= $this->wiki->addToken($this->rule$options);
        
        
// $matches[1] is the text matched as a list set by parse();
        // create an array called $list that contains a new set of
        // matches for the various definition-list elements.
        
preg_match_all(
            
'/^(: )(.*)?( : )(.*)?$/Ums',
            
$matches[1],
            
$list,
            
PREG_SET_ORDER
        
);
        
        
// add each term and narrative
        
foreach ($list as $key => $val) {
            
$return .= (
                
$this->wiki->addToken($this->rule, array('type' => 'term_start')) .
                
trim($val[2]) .
                
$this->wiki->addToken($this->rule, array('type' => 'term_end')) .
                
$this->wiki->addToken($this->rule, array('type' => 'narr_start')) .
                
trim($val[4]) . 
                
$this->wiki->addToken($this->rule, array('type' => 'narr_end'))
            );
        }
        
        
        
// end the deflist
        
$options = array('type' => 'list_end');
        
$return .= $this->wiki->addToken($this->rule$options);
        
        
// done!
        
return "\n" $return "\n\n";
    }
}
?>
x

Windows NT KPTV 6.2 build 9200 (Windows Server 2012 Datacenter Edition) i586