From ca0645e63d39c8cb67423ef76f0415fc09d2aca4 Mon Sep 17 00:00:00 2001 From: Yves Fischer Date: Sun, 16 Oct 2011 22:11:40 +0200 Subject: Page Preferences (~~key:val~~), source modelines --- syntax.php | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 syntax.php (limited to 'syntax.php') diff --git a/syntax.php b/syntax.php new file mode 100644 index 0000000..fc6f648 --- /dev/null +++ b/syntax.php @@ -0,0 +1,46 @@ + + */ +if(!defined('DOKU_INC')) die(); +if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); +require_once DOKU_PLUGIN.'syntax.php'; + +class syntax_plugin_treenav extends DokuWiki_Syntax_Plugin { + private $keys = array("icon", "title"); + + function getType() { return 'baseonly'; } + function getSort() { return 32; } + + function connectTo($mode) { + foreach ($this->keys as $key) { + $this->Lexer->addSpecialPattern('~~'.$key.':.*?~~',$mode,'plugin_treenav'); + } + } + + function handle($match, $state, $pos, &$handler) { + switch ($state) { + case DOKU_LEXER_SPECIAL: + $match = substr($match, 2, -2); + @list($key, $value) = explode(':', $match, 2); + if (in_array($key, $this->keys)) { + $this->setMetadata($key, $value); + } + } + } + + function setMetadata($key, $value) { + global $ID; + $data = p_get_metadata($ID, "treenav", false) or array(); + $data[$key] = $value; + return p_set_metadata($ID, array("treenav" => $data)); + } +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ +/* Local Variables: */ +/* tab-width: 4 */ +/* indent-tabs-mode: nil */ +/* c-basic-offset: 4 */ +/* End: */ \ No newline at end of file -- cgit v1.2.1