50 lines
1.3 KiB
PHP
50 lines
1.3 KiB
PHP
<?php
|
|
/**
|
|
* Parses for links to other documentation sections.
|
|
*
|
|
* @category Text
|
|
* @package Text_Wiki
|
|
* @author Janne Vanhala <jpvanhal@cc.hut.fi>
|
|
* @license LGPL
|
|
* @version $Id$
|
|
*
|
|
*/
|
|
class Text_Wiki_Parse_Doclink extends Text_Wiki_Parse {
|
|
|
|
var $conf = array(
|
|
'toc' => null
|
|
);
|
|
|
|
var $regex = '/\[doc ([a-z0-9-]+(?::[a-z0-9-]+)*)(?: ([^\n\]]*))?]/';
|
|
|
|
function process(&$matches)
|
|
{
|
|
$toc = $this->getConf('toc');
|
|
|
|
if ($toc instanceof Sensei_Doc_Toc) {
|
|
$section = $toc->findByPath($matches[1]);
|
|
}
|
|
|
|
if (isset($section)) {
|
|
$options = array();
|
|
|
|
$options['path'] = $matches[1];
|
|
|
|
if (isset($matches[2])) {
|
|
$options['text'] = $matches[2];
|
|
$options['text'] = str_replace(':index', $section->getIndex(), $options['text']);
|
|
$options['text'] = str_replace(':name', $section->getName(), $options['text']);
|
|
$options['text'] = str_replace(':fullname', $section->getName(true), $options['text']);
|
|
} else {
|
|
$options['text'] = $section->getIndex();
|
|
}
|
|
|
|
return $this->wiki->addToken($this->rule, $options);
|
|
|
|
} else {
|
|
return $matches[0];
|
|
}
|
|
|
|
}
|
|
}
|