*/ 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_ladspa extends DokuWiki_Syntax_Plugin { /** * return some info */ function getInfo(){ return array( 'author' => 'Robin Gareus', 'email' => 'robin@gareus.org', 'date' => '2009-01-01', 'name' => 'ladspa', 'desc' => 'ladspa info.', 'url' => 'http://mir.dnsalias.com/wiki/dokuladspa', ); } function getType(){ return 'substition'; } function getPType(){ return 'block'; } function getSort(){ return 150; } /** * Connect pattern to lexer */ function connectTo($mode) { $this->Lexer->addSpecialPattern('\{\{ladspa>[^}]*\}\}',$mode,'plugin_ladspa'); $this->Lexer->addSpecialPattern('\{\{ladspapreset>[^}]*\}\}',$mode,'plugin_ladspa'); ##$this->Lexer->addSpecialPattern('\{\{ladspa>.+\}\}',$mode,'plugin_ladspa'); } /** * Handle the match */ function handle($match, $state, $pos, &$handler){ $data = array(); if (!strncasecmp($match,"{{ladspapreset>",15)) { $match = substr($match,15,-2); $presets=array(); foreach (split("\n", $match) as $preset) { list($title, $jchain) = split('\[', trim($preset),2); if (empty($title) || empty($jchain)) continue; foreach (split(";", $jchain) as $jdata) { list($id, $vals) = split(':', $jdata,2); $vals = preg_replace('/^\[+/','', $vals); $vals = preg_replace('/\]+$/','', $vals); $parsed=array(); foreach (split(',',$vals) as $v) $parsed[]=intval($v); $json='['.join(',',$parsed).']'; if (count($parsed)>0 && intval($id) >0) $presets[] = array ( 'id' => intval($id), 'json' => $json); } $pchain[] = array ('title' => trim($title), 'presets' => $presets); } $data['presets'] = $pchain; $data['mode'] = 'preset'; } else if (!strncasecmp($match,"{{ladspa>",9)) { $match = substr($match,9,-2); $data['lp'] = $match; } return $data; } /** * Create output */ function render($mode, &$renderer, $data) { if (!$helper=plugin_load('helper', 'ladspa')) { msg('can not load ladspa helper.', -1); return false; } if($mode == 'xhtml'){ if ($data['mode']=='preset' && count($data['presets'])>0 ){ $renderer->doc .= '