1e874628fSMatthias Schulte<?php 2*e689d293SMark Prins/* 3*e689d293SMark Prins * @phpcs:disable Squiz.Classes.ValidClassName.NotCamelCaps 4*e689d293SMark Prins * @noinspection AutoloadingIssuesInspection 5*e689d293SMark Prins */ 6*e689d293SMark Prins 7e874628fSMatthias Schulte/** 8*e689d293SMark Prins * Description plugin. 9e874628fSMatthias Schulte * 10e874628fSMatthias Schulte * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) 11917d5640Slupo49 * @author Matthias Schulte <dokuwiki@lupo49.de> 12*e689d293SMark Prins * @author Mark C. Prins <mprins@users.sf.net> 13*e689d293SMark Prins * 14e874628fSMatthias Schulte */ 15e874628fSMatthias Schulte 16*e689d293SMark Prinsuse dokuwiki\Extension\SyntaxPlugin; 17e874628fSMatthias Schulte 18*e689d293SMark Prinsclass syntax_plugin_description extends SyntaxPlugin 19*e689d293SMark Prins{ 20e874628fSMatthias Schulte 21*e689d293SMark Prins final public function getType(): string 22*e689d293SMark Prins { 23*e689d293SMark Prins return 'substition'; 24*e689d293SMark Prins } 25e874628fSMatthias Schulte 26*e689d293SMark Prins final public function getPType(): string 27*e689d293SMark Prins { 28*e689d293SMark Prins return 'block'; 29*e689d293SMark Prins } 30e874628fSMatthias Schulte 31*e689d293SMark Prins final public function getSort(): int 32*e689d293SMark Prins { 33*e689d293SMark Prins return 98; 34*e689d293SMark Prins } 35e874628fSMatthias Schulte 36*e689d293SMark Prins final public function connectTo($mode): void 37*e689d293SMark Prins { 38e874628fSMatthias Schulte $this->Lexer->addSpecialPattern('\{\{description>.+?\}\}', $mode, 'plugin_description'); 39e874628fSMatthias Schulte } 40e874628fSMatthias Schulte 41*e689d293SMark Prins final public function handle($match, $state, $pos, Doku_Handler $handler): array 42*e689d293SMark Prins { 43e874628fSMatthias Schulte $match = substr($match, 14, -2); // strip markup 44e874628fSMatthias Schulte $match = hsc($match); 45e874628fSMatthias Schulte 46e874628fSMatthias Schulte return array($match); 47e874628fSMatthias Schulte } 48e874628fSMatthias Schulte 49*e689d293SMark Prins final public function render($format, Doku_Renderer $renderer, $data): bool 50*e689d293SMark Prins { 51e874628fSMatthias Schulte $description = $data[0]; 52*e689d293SMark Prins if (empty($description)) { 53*e689d293SMark Prins return false; 54*e689d293SMark Prins } 55e874628fSMatthias Schulte 56*e689d293SMark Prins if ($format === 'metadata') { 57917d5640Slupo49 $renderer->meta['plugin_description']['keywords'] = $description; 58e874628fSMatthias Schulte return true; 59e874628fSMatthias Schulte } 60e874628fSMatthias Schulte return false; 61e874628fSMatthias Schulte } 62e874628fSMatthias Schulte} 63