summaryrefslogtreecommitdiff
path: root/inc/plugins/info/syntax.php
diff options
context:
space:
mode:
authorandi <andi@splitbrain.org>2005-05-19 22:10:09 +0200
committerandi <andi@splitbrain.org>2005-05-19 22:10:09 +0200
commitee20e7d16637625e900f518b6b46a61bfa30fe6e (patch)
treef621ec424429d9dc9732a059ec0ca4bf83aab566 /inc/plugins/info/syntax.php
parent64f50cdbe21d0b9ca2165749301e6f553f9b8f02 (diff)
downloadrpg-ee20e7d16637625e900f518b6b46a61bfa30fe6e.tar.gz
rpg-ee20e7d16637625e900f518b6b46a61bfa30fe6e.tar.bz2
first attempt of syntax plugins
The first version of the new plugin system. Syntax plugins only yet. A very simple example plugin called info (doing nothig useful yet) is included. Missing Features - Doku_Block_Handler needs work (doesn't honur plugins yet) - there is no way to specify the order of plugins and other modes yet - useful output from the info plugin - bug testing and fixing - code cleanup - documentation darcs-hash:20050519201009-9977f-f793dbfc6a39d8a9643b610927d93cd3288bdd6b.gz
Diffstat (limited to 'inc/plugins/info/syntax.php')
-rw-r--r--inc/plugins/info/syntax.php63
1 files changed, 63 insertions, 0 deletions
diff --git a/inc/plugins/info/syntax.php b/inc/plugins/info/syntax.php
new file mode 100644
index 000000000..4567de685
--- /dev/null
+++ b/inc/plugins/info/syntax.php
@@ -0,0 +1,63 @@
+<?php
+/**
+ * Info Plugin: Displays information about various DokuWiki internals
+ *
+ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
+ * @author Andreas Gohr <andi@splitbrain.org>
+ */
+
+if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/');
+if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'inc/plugins/');
+require_once(DOKU_PLUGIN.'syntax.php');
+
+/**
+ * All DokuWiki plugins to extend the parser/rendering mechanism
+ * need to inherit from this class
+ */
+class syntax_plugin_info extends DokuWiki_Syntax_Plugin {
+
+ /**
+ * What kind of syntax are we?
+ */
+ function getType(){
+ return 'substition';
+ }
+
+
+ /**
+ * Connect pattern to lexer
+ */
+ function connectTo($mode) {
+ $this->Lexer->addSpecialPattern('~~INFO:\w+~~',$mode,'plugin_info');
+ }
+
+
+ /**
+ * Handle the match
+ */
+ function handle($match, $state, $pos, &$handler){
+ $match = substr($match,7,-2); //strip ~~INFO: from start and ~~ from end
+ return array(strtolower($match));
+ }
+
+ /**
+ * Create output
+ */
+ function render($mode, &$renderer, $data) {
+ if($mode == 'xhtml'){
+ //handle various info stuff
+ switch ($data[0]){
+ case 'foo':
+ $renderer->doc .= "foo is foo";
+ break;
+ default:
+ $renderer->doc .= "no info about ".htmlspecialchars($data[0]);
+ }
+ return true;
+ }
+ return false;
+ }
+
+}
+
+//Setup VIM: ex: et ts=4 enc=utf-8 :