1*7935713eSJames Collins<?php 2*7935713eSJames Collins/** 3*7935713eSJames Collins * Mikio Syntax Plugin: Steps 4*7935713eSJames Collins * 5*7935713eSJames Collins * @link http://github.com/nomadjimbob/mikioplugin 6*7935713eSJames Collins * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) 7*7935713eSJames Collins * @author James Collins <james.collins@outlook.com.au> 8*7935713eSJames Collins */ 9*7935713eSJames Collinsif (!defined('DOKU_INC')) die(); 10*7935713eSJames Collinsif (!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); 11*7935713eSJames Collinsrequire_once(dirname(__FILE__).'/core.php'); 12*7935713eSJames Collins 13*7935713eSJames Collinsclass syntax_plugin_mikioplugin_steps extends syntax_plugin_mikioplugin_core { 14*7935713eSJames Collins public $tag = 'steps'; 15*7935713eSJames Collins public $hasEndTag = true; 16*7935713eSJames Collins 17*7935713eSJames Collins public function __construct() { 18*7935713eSJames Collins $this->addCommonOptions('shadow'); 19*7935713eSJames Collins } 20*7935713eSJames Collins 21*7935713eSJames Collins // public function getAllowedTypes() { return array(); } 22*7935713eSJames Collins 23*7935713eSJames Collins public function render_lexer_enter(Doku_Renderer $renderer, $data) { 24*7935713eSJames Collins $classes = $this->buildClass($data); 25*7935713eSJames Collins 26*7935713eSJames Collins $renderer->doc .= '<ul class="' . $this->elemClass . ' ' . $this->classPrefix . 'steps'. $classes . '">'; 27*7935713eSJames Collins } 28*7935713eSJames Collins 29*7935713eSJames Collins 30*7935713eSJames Collins public function render_lexer_exit(Doku_Renderer $renderer, $data) { 31*7935713eSJames Collins $renderer->doc .= '</ul>'; 32*7935713eSJames Collins } 33*7935713eSJames Collins 34*7935713eSJames Collins 35*7935713eSJames Collins // public function render_lexer_unmatched(Doku_Renderer $renderer, $data) { 36*7935713eSJames Collins // $items = []; 37*7935713eSJames Collins // $bar = ''; 38*7935713eSJames Collins 39*7935713eSJames Collins // if(preg_match_all('/<(?i:' . $this->tagPrefix . 'step)(.*?)>/s', $data, $match)) { 40*7935713eSJames Collins // if(count($match) >= 1) { 41*7935713eSJames Collins // for($i = 0; $i < count($match[1]); $i++) { 42*7935713eSJames Collins // $title = ''; 43*7935713eSJames Collins // $text = ''; 44*7935713eSJames Collins // $complete = false; 45*7935713eSJames Collins 46*7935713eSJames Collins // if(preg_match('/title=("\w[\w\s]*(?=")|\w+|"[\w\s]*")/is', $match[1][$i], $titleMatch)) { 47*7935713eSJames Collins // if(count($titleMatch) >= 1) { 48*7935713eSJames Collins // $title = str_replace("\"", "", $titleMatch[1]); 49*7935713eSJames Collins // } 50*7935713eSJames Collins // } 51*7935713eSJames Collins 52*7935713eSJames Collins // if(preg_match('/text=("\w[\w\s]*(?=")|\w+|"[\w\s]*")/is', $match[1][$i], $titleMatch)) { 53*7935713eSJames Collins // if(count($titleMatch) >= 1) { 54*7935713eSJames Collins // $text = str_replace("\"", "", $titleMatch[1]); 55*7935713eSJames Collins // } 56*7935713eSJames Collins // } 57*7935713eSJames Collins 58*7935713eSJames Collins // if(preg_match('/ complete /is', $match[1][$i], $titleMatch)) { 59*7935713eSJames Collins // if(count($titleMatch) >= 1) { 60*7935713eSJames Collins // $complete = true; 61*7935713eSJames Collins // } 62*7935713eSJames Collins // } 63*7935713eSJames Collins 64*7935713eSJames Collins // $items[] = array('title' => $title, 'text' => $text, 'complete' => $complete); 65*7935713eSJames Collins // } 66*7935713eSJames Collins // } 67*7935713eSJames Collins // } 68*7935713eSJames Collins 69*7935713eSJames Collins // foreach($items as $item) { 70*7935713eSJames Collins // $bar .= '<li class="' . $this->elemClass . ' ' . $this->classPrefix . 'step' . ($item['complete'] ? ' ' . $this->classPrefix . 'complete' : '' ) . '"><b>' . $item['title'] .'</b>' . $item['text'] . '</li>'; 71*7935713eSJames Collins // } 72*7935713eSJames Collins 73*7935713eSJames Collins // $renderer->doc .= $bar . '</ul>'; 74*7935713eSJames Collins // } 75*7935713eSJames Collins} 76*7935713eSJames Collins?> 77