*/
if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/');
if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
require_once(DOKU_PLUGIN.'syntax.php');
class syntax_plugin_xterm2 extends DokuWiki_Syntax_Plugin {
var $notes = array(
'xterm2user' => array('', 'user'),
'xterm2root' => array('root', 'admin')
);
var $default = 'xterm2user';
function getInfo(){
return array(
'author' => 'Olivier Cortès / Eric Hameleers / Christopher Smith / Aurélien Bompard',
'email' => 'olive@deep-ocean.net',
'date' => '2006-03-29',
'name' => 'Xterm2 Plugin',
'desc' => 'Add console root or user Capability for root console(DIV+CSS box)\n Adapted by Xarkam',
'url' => 'http://wiki.splitbrain.org/plugin:xterm2',
);
}
function getType(){ return 'container'; }
function getPType(){ return 'normal'; }
function getAllowedTypes() {
return array('container','substition','protected','disabled','formatting','paragraphs');
}
function getSort(){ return 195; }
// override default accepts() method to allow nesting
// - ie, to get the plugin accepts its own entry syntax
function accepts($mode) {
if ($mode == substr(get_class($this), 7)) return true;
return parent::accepts($mode);
}
function connectTo($mode) {
$this->Lexer->addEntryPattern('(?=.*?)',$mode,'plugin_xterm2');
}
function postConnect() {
$this->Lexer->addExitPattern('','plugin_xterm2');
}
function handle($match, $state, $pos, &$handler){
switch ($state) {
case DOKU_LEXER_ENTER :
$note = strtolower(trim(substr($match,7,-1)));
foreach( $this->notes as $class => $names ) {
if (in_array($note, $names))
return array($state, $class);
}
return array($state, $this->default);
case DOKU_LEXER_UNMATCHED :
return array($state, $match);
default:
return array($state);
}
}
function render($mode, &$renderer, $indata) {
if($mode == 'xhtml'){
list($state, $data) = $indata;
switch ($state) {
case DOKU_LEXER_ENTER :
$renderer->doc .= '';
break;
case DOKU_LEXER_UNMATCHED :
$renderer->doc .= $renderer->_xmlEntities($data);
break;
case DOKU_LEXER_EXIT :
$renderer->doc .= "
";
break;
}
return true;
}
// unsupported $mode
return false;
}
}
//Setup VIM: ex: et ts=4 enc=utf-8 :
?>