*/ // must be run within Dokuwiki if (!defined('DOKU_INC')) die(); if (!defined('DOKU_LF')) define('DOKU_LF', "\n"); if (!defined('DOKU_TAB')) define('DOKU_TAB', "\t"); if (!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); require_once DOKU_PLUGIN.'syntax.php'; require_once DOKU_INC.'inc/geshi.php'; require_once DOKU_INC.'inc/parser/code.php'; class syntax_plugin_processing extends DokuWiki_Syntax_Plugin { function getInfo() { return array('author' => 'Edwin Dertien', 'email' => 'mail@edwindertien.nl', 'date' => '2010-08-22', 'name' => 'Processing code Plugin', 'desc' => 'Include processing code and embedded processing.js applet', 'url' => 'http://www.dokuwiki.org/plugin:tutorial'); } function getType() { return 'substition'; } function getPType() { return 'normal'; } function getSort() { return 100; } function connectTo($mode) { $this->Lexer->addEntryPattern('',$mode,'plugin_processing'); } function postConnect() { $this->Lexer->addExitPattern('','plugin_processing'); } function handle($match, $state, $pos, &$handler){ $width = 300; $height = 300; switch ($state) { case DOKU_LEXER_ENTER : break; case DOKU_LEXER_MATCHED : break; case DOKU_LEXER_UNMATCHED : // ugly piece of string decomposition to get width and hight from the sketch $numbers = substr($match,strpos($match,"size(")+5,20); $width = trim(substr($numbers,0,strpos($numbers,","))); $height = trim(substr($numbers,strpos($numbers,",")+1,strpos($numbers,");")-strpos($numbers,",")-1)); return array($state,$match,$width,$height); break; case DOKU_LEXER_EXIT : break; case DOKU_LEXER_SPECIAL : break; } } function render($mode, &$renderer, $data) { if($mode == 'xhtml'){ list($state, $match,$width,$height) = $data; switch ($state) { case DOKU_LEXER_ENTER : break; case DOKU_LEXER_UNMATCHED : $renderer->doc .= ""; $renderer->code($match,'java'); $renderer->doc .= "
build with processing and processing.js
"; break; case DOKU_LEXER_EXIT : break; default: break; } return true; } return false; } } ?>