-
Notifications
You must be signed in to change notification settings - Fork 19
/
Anchor.php
60 lines (53 loc) · 1.63 KB
/
Anchor.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
<?php
namespace Geeklog\Text\Wiki;
/**
* Parses for anchor targets.
*
* @category Text
* @package Text_Wiki
* @author Manuel Holtgrewe <purestorm at ggnore dot net>
* @author Paul M. Jones <pmjones@php.net>
* @license LGPL
* @version $Id: Anchor.php 180591 2005-02-23 17:38:29Z pmjones $
*/
/**
* This class implements a Text_Wiki_Parse to add an anchor target name
* in the wiki page.
*
* @author Manuel Holtgrewe <purestorm at ggnore dot net>
* @author Paul M. Jones <pmjones at ciaweb dot net>
* @category Text
* @package Text_Wiki
*/
class Text_Wiki_Parse_Anchor extends Text_Wiki_Parse
{
/**
* The regular expression used to find source text matching this
* rule. Looks like a macro: [[# anchor_name]]
*
* @var string
*/
public $regex = '/(\[\[# )([-_A-Za-z0-9.]+?)( .+)?(\]\])/i';
/**
* Generates a token entry for the matched text. Token options are:
* 'text' => The full matched text, not including the <code></code> tags.
*
* @param array &$matches The array of matches from parse().
* @return string A delimited token number to be used as a placeholder in the source text.
*/
public function process(&$matches)
{
$name = $matches[2];
$text = $matches[3];
$start = $this->wiki->addToken(
$this->rule,
array('type' => 'start', 'name' => $name)
);
$end = $this->wiki->addToken(
$this->rule,
array('type' => 'end', 'name' => $name)
);
// done, place the script output directly in the source
return $start . trim($text) . $end;
}
}