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