*/ 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 .= '
'; $renderer->doc .= 'LADSPA Preset'.(count($data['presets'])!=1?'s':'').':'; $first=true; foreach ($data['presets'] as $pchain) { if ($first) $first=false; else $renderer->doc .= ', '; $renderer->doc .= ''; $renderer->doc .= htmlentities($pchain['title']); $renderer->doc .= ''; } #$renderer->doc .= print_r($data['presets']); $renderer->doc .= '
'; return true; } $plugins = $helper->parse_ap($data['lp']."\n"); #$renderer->doc .= 'LADSPA: '.strlen($data['lp']); $renderer->doc .= '
'; usort($plugins, array($helper,"cmp_label")); $renderer->doc .= $helper->render_list($plugins); $renderer->doc .= '
'; $renderer->doc .= '
'; usort($plugins,array($helper,'cmp_control')); foreach ($plugins as $p) $renderer->doc .= $helper->render_ladspa($p); $renderer->doc .= $helper->render_legend(); $renderer->doc .= '
'; return true; } return true; } } //Setup VIM: ex: et sw=2 ts=2 enc=utf-8 :