DokuWiki

It's better when it's simple

User Tools

Site Tools


plugin:processing

This is an old revision of the document!


processing plugin

Compatible with DokuWiki

2005-09-22 and later.

plugin

Last updated on
2010-08-25
Provides
Syntax
Repository
Source
Conflicts with
s5

This extension has not been updated in over 2 years. It may no longer be maintained or supported and may have compatibility issues.

Tagged with highlight, javascript, processing, syntax

About this plugin

Processing is an environment that is widely being used for interaction design, interactive installations, graphic art, artistic programming, etc… A subset of functions of the processing environment has been ported to a single javascript file called processing.js, which allows users to execute their code in a browser environment.

This plugin parses processing(java) code to the processing.js script (which for this plugin has been renamed 'script.js' to be compliant with the dokuwiki plugin format) and outputs the resulting java applet to the wiki, as well as the syntax highlighted sketch code.

Download and Installation

Download and install the plugin using the Plugin Manager using the URL given above. Refer to Plugins on how to install plugins manually.

Syntax and Usage

Using <processing> and </processing> a snippet of code is both highlighted and parsed trough to the Processing.js (included and renamed as script.js for plugin portability)

See http://wiki.edwindertien.nl/doku.php?id=software:dokuwiki-processing-plugin for examples.

The plugin syntax file:

syntax.php
<?php
/**
 * DokuWiki Plugin processing (Syntax Component)
 *
 * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
 * @author  Edwin Dertien <mail@edwindertien.nl>
 */
 
// 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('<processing>',$mode,'plugin_processing');
    }
 
 function postConnect() {
        $this->Lexer->addExitPattern('</processing>','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 .=
  		"<script type=\"application/processing\">".
       $renderer->_xmlEntities($match).
        "</script><canvas width=\"".
        $width.
        "\" height=\"".
        $height.
        "\"></canvas>";
 
        $renderer->code($match,'java'); 
 
        $renderer->doc .= "<br>build with <a href=\"http://www.processing.org\">processing</a> and <a href=\"http://www.processingjs.org\">processing.js</a><br>";
        break;
        case DOKU_LEXER_EXIT :
        	break;
        default:
        break;
        }
            return true;
        }
        return false;
    }
}
?>

Bugs, feature requests

  • The java-applet is not parsed into a slideshow (s5). Anyone hints in a direction how to start solving this?
  • giving the download-link at the top of the highlighted code using $renderer→code($match,“java”,“filename.txt” gives a 404 link. Anyone hints how to fix this?
plugin/processing.1282743560.txt.gz · Last modified: 2010-08-25 15:39 by 130.89.207.237

Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki