1<?php 2/* 3 * Manlinks plugin: convert manpage descriptions to links to the manpages. 4 */ 5 6if(!defined('DOKU_INC')) die(); 7if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); 8require_once(DOKU_PLUGIN.'syntax.php'); 9 10class syntax_plugin_manlink extends DokuWiki_Syntax_Plugin { 11 12 function getType() { return 'substition'; } 13 function getPType() { return 'normal'; } 14 function getSort() { return 361; } 15 16 function connectTo($mode) { 17 $this->Lexer->addSpecialPattern( 18 '\!?[a-zA-Z0-9_.+\[\]-]*\([0-9]\)', 19 $mode, 20 'plugin_manlink'); 21 } 22 23 function handle($match, $state, $pos, Doku_Handler $handler){ 24 if ($state != DOKU_LEXER_SPECIAL) 25 return false; 26 27 if (substr($match, 0, 1) == "!") { 28 $handler->_addCall('cdata', array(substr($match, 1)), $pos); 29 return true; 30 } 31 32 $mantarget = $this->getconf('mantarget'); 33 $manpage = preg_replace('/^([a-zA-Z0-9_+\[\].-]*)\(([0-9])\)$/', '\1', $match); 34 $section = preg_replace('/^([a-zA-Z0-9_+\[\].-]*)\(([0-9])\)$/', '\2', $match); 35 36 if ($mantarget == 'NetBSD') 37 $target = 'http://mdoc.su/n/'.$manpage.'.'.$section; 38 elseif ($mantarget == 'FreeBSD') 39 $target = 'http://mdoc.su/f/'.$manpage.'.'.$section; 40 elseif ($mantarget == 'OpenBSD') 41 $target = 'http://mdoc.su/o/'.$manpage.'.'.$section; 42 elseif ($mantarget == 'DragonFlyBSD') 43 $target = 'http://mdoc.su/d/'.$manpage.'.'.$section; 44 45 $handler->_addCall('externallink', array($target, $match), $pos); 46 return true; 47 } 48 49 function render($format, Doku_Renderer $renderer, $data) { 50 return true; 51 } 52} 53 54?> 55