Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
PSR-2 compatibility for info plugin
  • Loading branch information
splitbrain committed May 8, 2018
1 parent 29fc53c commit 957f36a
Showing 1 changed file with 61 additions and 49 deletions.
110 changes: 61 additions & 49 deletions lib/plugins/info/syntax.php
Expand Up @@ -6,35 +6,40 @@
* @author Andreas Gohr <andi@splitbrain.org>
* @author Esther Brunner <wikidesign@gmail.com>
*/
class syntax_plugin_info extends DokuWiki_Syntax_Plugin {
class syntax_plugin_info extends DokuWiki_Syntax_Plugin
{

/**
* What kind of syntax are we?
*/
public function getType(){
public function getType()
{
return 'substition';
}

/**
* What about paragraphs?
*/
public function getPType(){
public function getPType()
{
return 'block';
}

/**
* Where to sort in?
*/
public function getSort(){
public function getSort()
{
return 155;
}


/**
* Connect pattern to lexer
*/
public function connectTo($mode) {
$this->Lexer->addSpecialPattern('~~INFO:\w+~~',$mode,'plugin_info');
public function connectTo($mode)
{
$this->Lexer->addSpecialPattern('~~INFO:\w+~~', $mode, 'plugin_info');
}

/**
Expand All @@ -46,8 +51,9 @@ public function connectTo($mode) {
* @param Doku_Handler $handler The Doku_Handler object
* @return array Return an array with all data you want to use in render
*/
public function handle($match, $state, $pos, Doku_Handler $handler){
$match = substr($match,7,-2); //strip ~~INFO: from start and ~~ from end
public function handle($match, $state, $pos, Doku_Handler $handler)
{
$match = substr($match, 7, -2); //strip ~~INFO: from start and ~~ from end
return array(strtolower($match));
}

Expand All @@ -59,40 +65,41 @@ public function handle($match, $state, $pos, Doku_Handler $handler){
* @param array $data data created by handler()
* @return boolean rendered correctly?
*/
public function render($format, Doku_Renderer $renderer, $data) {
if($format == 'xhtml'){
public function render($format, Doku_Renderer $renderer, $data)
{
if ($format == 'xhtml') {
/** @var Doku_Renderer_xhtml $renderer */
//handle various info stuff
switch ($data[0]){
switch ($data[0]) {
case 'syntaxmodes':
$renderer->doc .= $this->_syntaxmodes_xhtml();
$renderer->doc .= $this->renderSyntaxModes();
break;
case 'syntaxtypes':
$renderer->doc .= $this->_syntaxtypes_xhtml();
$renderer->doc .= $this->renderSyntaxTypes();
break;
case 'syntaxplugins':
$this->_plugins_xhtml('syntax', $renderer);
$this->renderPlugins('syntax', $renderer);
break;
case 'adminplugins':
$this->_plugins_xhtml('admin', $renderer);
$this->renderPlugins('admin', $renderer);
break;
case 'actionplugins':
$this->_plugins_xhtml('action', $renderer);
$this->renderPlugins('action', $renderer);
break;
case 'rendererplugins':
$this->_plugins_xhtml('renderer', $renderer);
$this->renderPlugins('renderer', $renderer);
break;
case 'helperplugins':
$this->_plugins_xhtml('helper', $renderer);
$this->renderPlugins('helper', $renderer);
break;
case 'authplugins':
$this->_plugins_xhtml('auth', $renderer);
$this->renderPlugins('auth', $renderer);
break;
case 'remoteplugins':
$this->_plugins_xhtml('remote', $renderer);
$this->renderPlugins('remote', $renderer);
break;
case 'helpermethods':
$this->_helpermethods_xhtml($renderer);
$this->renderHelperMethods($renderer);
break;
default:
$renderer->doc .= "no info about ".htmlspecialchars($data[0]);
Expand All @@ -110,32 +117,33 @@ public function render($format, Doku_Renderer $renderer, $data) {
* @param string $type
* @param Doku_Renderer_xhtml $renderer
*/
protected function _plugins_xhtml($type, Doku_Renderer_xhtml $renderer){
protected function renderPlugins($type, Doku_Renderer_xhtml $renderer)
{
global $lang;
$renderer->doc .= '<ul>';

$plugins = plugin_list($type);
$plginfo = array();

// remove subparts
foreach($plugins as $p){
if (!$po = plugin_load($type,$p)) continue;
list($name,/* $part */) = explode('_',$p,2);
foreach ($plugins as $p) {
if (!$po = plugin_load($type, $p)) continue;
list($name,/* $part */) = explode('_', $p, 2);
$plginfo[$name] = $po->getInfo();
}

// list them
foreach($plginfo as $info){
foreach ($plginfo as $info) {
$renderer->doc .= '<li><div class="li">';
$renderer->externallink($info['url'],$info['name']);
$renderer->externallink($info['url'], $info['name']);
$renderer->doc .= ' ';
$renderer->doc .= '<em>'.$info['date'].'</em>';
$renderer->doc .= ' ';
$renderer->doc .= $lang['by'];
$renderer->doc .= ' ';
$renderer->emaillink($info['email'],$info['author']);
$renderer->emaillink($info['email'], $info['author']);
$renderer->doc .= '<br />';
$renderer->doc .= strtr(hsc($info['desc']),array("\n"=>"<br />"));
$renderer->doc .= strtr(hsc($info['desc']), array("\n"=>"<br />"));
$renderer->doc .= '</div></li>';
unset($po);
}
Expand All @@ -150,39 +158,40 @@ protected function _plugins_xhtml($type, Doku_Renderer_xhtml $renderer){
*
* @param Doku_Renderer_xhtml $renderer
*/
protected function _helpermethods_xhtml(Doku_Renderer_xhtml $renderer){
protected function renderHelperMethods(Doku_Renderer_xhtml $renderer)
{
$plugins = plugin_list('helper');
foreach($plugins as $p){
if (!$po = plugin_load('helper',$p)) continue;
foreach ($plugins as $p) {
if (!$po = plugin_load('helper', $p)) continue;

if (!method_exists($po, 'getMethods')) continue;
$methods = $po->getMethods();
$info = $po->getInfo();

$hid = $this->_addToTOC($info['name'], 2, $renderer);
$hid = $this->addToToc($info['name'], 2, $renderer);
$doc = '<h2><a name="'.$hid.'" id="'.$hid.'">'.hsc($info['name']).'</a></h2>';
$doc .= '<div class="level2">';
$doc .= '<p>'.strtr(hsc($info['desc']), array("\n"=>"<br />")).'</p>';
$doc .= '<pre class="code">$'.$p." = plugin_load('helper', '".$p."');</pre>";
$doc .= '</div>';
foreach ($methods as $method){
foreach ($methods as $method) {
$title = '$'.$p.'->'.$method['name'].'()';
$hid = $this->_addToTOC($title, 3, $renderer);
$hid = $this->addToToc($title, 3, $renderer);
$doc .= '<h3><a name="'.$hid.'" id="'.$hid.'">'.hsc($title).'</a></h3>';
$doc .= '<div class="level3">';
$doc .= '<div class="table"><table class="inline"><tbody>';
$doc .= '<tr><th>Description</th><td colspan="2">'.$method['desc'].
'</td></tr>';
if ($method['params']){
if ($method['params']) {
$c = count($method['params']);
$doc .= '<tr><th rowspan="'.$c.'">Parameters</th><td>';
$params = array();
foreach ($method['params'] as $desc => $type){
foreach ($method['params'] as $desc => $type) {
$params[] = hsc($desc).'</td><td>'.hsc($type);
}
$doc .= join($params, '</td></tr><tr><td>').'</td></tr>';
}
if ($method['return']){
if ($method['return']) {
$doc .= '<tr><th>Return value</th><td>'.hsc(key($method['return'])).
'</td><td>'.hsc(current($method['return'])).'</td></tr>';
}
Expand All @@ -200,18 +209,19 @@ protected function _helpermethods_xhtml(Doku_Renderer_xhtml $renderer){
*
* @return string
*/
protected function _syntaxtypes_xhtml(){
protected function renderSyntaxTypes()
{
global $PARSER_MODES;
$doc = '';

$doc .= '<div class="table"><table class="inline"><tbody>';
foreach($PARSER_MODES as $mode => $modes){
foreach ($PARSER_MODES as $mode => $modes) {
$doc .= '<tr>';
$doc .= '<td class="leftalign">';
$doc .= $mode;
$doc .= '</td>';
$doc .= '<td class="leftalign">';
$doc .= join(', ',$modes);
$doc .= join(', ', $modes);
$doc .= '</td>';
$doc .= '</tr>';
}
Expand All @@ -224,29 +234,30 @@ protected function _syntaxtypes_xhtml(){
*
* @return string
*/
protected function _syntaxmodes_xhtml(){
protected function renderSyntaxModes()
{
$modes = p_get_parsermodes();

$compactmodes = array();
foreach($modes as $mode){
foreach ($modes as $mode) {
$compactmodes[$mode['sort']][] = $mode['mode'];
}
$doc = '';
$doc .= '<div class="table"><table class="inline"><tbody>';

foreach($compactmodes as $sort => $modes){
foreach ($compactmodes as $sort => $modes) {
$rowspan = '';
if(count($modes) > 1) {
if (count($modes) > 1) {
$rowspan = ' rowspan="'.count($modes).'"';
}

foreach($modes as $index => $mode) {
foreach ($modes as $index => $mode) {
$doc .= '<tr>';
$doc .= '<td class="leftalign">';
$doc .= $mode;
$doc .= '</td>';

if($index === 0) {
if ($index === 0) {
$doc .= '<td class="rightalign" '.$rowspan.'>';
$doc .= $sort;
$doc .= '</td>';
Expand All @@ -267,11 +278,12 @@ protected function _syntaxmodes_xhtml(){
* @param Doku_Renderer_xhtml $renderer
* @return string
*/
protected function _addToTOC($text, $level, Doku_Renderer_xhtml $renderer){
protected function addToToc($text, $level, Doku_Renderer_xhtml $renderer)
{
global $conf;

$hid = '';
if (($level >= $conf['toptoclevel']) && ($level <= $conf['maxtoclevel'])){
if (($level >= $conf['toptoclevel']) && ($level <= $conf['maxtoclevel'])) {
$hid = $renderer->_headerToLink($text, true);
$renderer->toc[] = array(
'hid' => $hid,
Expand Down

0 comments on commit 957f36a

Please sign in to comment.