syntax_plugin_spreadout.php, a PHP class that lets the * traditional amongst us to have double spaces after a sentence. * *

* This automatically detects and replaces double spaces after sentences. * Basically, any text that ends with a period ('.'), question mark ('?') * or exclamation point ('!'), with an optional bracket after that * punctuation, followed by two or more regular spaces, will be replaced * with a space followed by a non-breaking space entity (" "). This * makes things "spread out" by adding double space punctuation afterwards. *

* Before you ask, yes, I am a later generation than millennial. *

* *
* This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either * version 3 of the * License, or (at your option) any later version.
* This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. *
* * @author Emma Bowers * @version v1.0 */ class syntax_plugin_spreadout extends DokuWiki_Syntax_Plugin { /** * Tell the parser whether the plugin accepts syntax mode * $aMode within its own markup. * *

* This method always returns FALSE since no other data * can be nested inside a non-breaking space. *

* @param $aMode String The requested syntaxmode. * @return Boolean FALSE always. * @public * @see getAllowedTypes() */ function accepts($aMode) { return FALSE; } // accepts() /** * Connect lookup patterns to lexer. * * @param $aMode String The desired rendermode. * @public * @see render() */ function connectTo($aMode) { global $lang; // $this->Lexer->addSpecialPattern('(?<=[.\?\!\:]) {2,}', $aMode, 'plugin_spreadout'); // $this->Lexer->addSpecialPattern('(?<=[.\?\!\:][\)\]\}\"\']) {2,}', $aMode, 'plugin_spreadout'); // $this->Lexer->addSpecialPattern('(?<=[.\?\!\:][\]\}\"\']) {2,}', $aMode, 'plugin_spreadout'); $this->Lexer->addSpecialPattern(' {2,}', $aMode, 'plugin_spreadout'); } // connectTo() /** * Get an associative array with plugin info. * *

* The returned array holds the following fields: *

*
author
Author of the plugin
*
email
Email address to contact the author
*
date
Last modified date of the plugin in * YYYY-MM-DD format
*
name
Name of the plugin
*
desc
Short description of the plugin (Text only)
*
url
Website with more information on the plugin * (eg. syntax description)
*
* @return Array Information about this plugin class. * @public * @static */ function getInfo() { return array ( 'author' => 'Emma Bowers', 'email' => 'emb@pobox.com', 'date' => '2025-07-04', 'name' => 'Spreadout Plugin', 'desc' => 'A simple plugin that allows for two spaces between content sentences if the user types two spaces rather than one.', 'url' => 'http://www.dokuwiki.org/plugin:spreadout'); } // getInfo() /** * Where to sort in? * * @return Integer 174. * @public * @static */ function getSort() { return 174; } // getSort() /** * Get the type of syntax this plugin defines. * * @return String 'substition' (a mispelled 'substitution'). * @public * @static */ function getType() { return 'disabled'; } // getType() /** * Handler to prepare matched data for the rendering process. * *

* This implementation does nothing (ignoring the passed * arguments) and just returns the given $aState. *

* * @param $aMatch String The text matched by the patterns. * @param $aState Integer The lexer state for the match. * @param $aPos Integer The character position of the matched text. * @param $aHandler Object Reference to the Doku_Handler object. * @return Integer The given $aState value. * @public * @see render() * @static */ function handle($aMatch, $aState, $aPos, Doku_Handler $aHandler) { return $aState; // nothing more to do here ... } // handle() /** * Handle the actual output creation. * *

* The method checks for the given $aMode and returns * FALSE when a mode isn't supported. * $aRenderer contains a reference to the renderer object * which is currently handling the rendering. * The contents of $aData is the return value of the * handle() method. *

* This implementation ignores the passed $aFormat * argument adding a raw UTF-8 character sequence to the * renderer's document. *

* * @param $aFormat String The output format to generate. * @param $aRenderer Object A reference to the renderer object. * @param $aData Integer The state value returned by handle(). * @return Boolean TRUE always. * @public * @see handle() */ function render($aFormat, Doku_Renderer $aRenderer, $aData) { if (DOKU_LEXER_SPECIAL == $aData) { $aRenderer->doc .= '  '; } // if return TRUE; } // render() } // class syntax_plugin_nbsp } // if ?>