Open main menu


MediaWiki extensions manual
OOjs UI icon advanced.svg
Release status: beta
Implementation Tag , Extended syntax
Description Tags to control whitespace: <dws/> discards itself and all whitespace (including newlines) after the tag, <nl/> replaces itself with newline.
Author(s) Van de Buggertalk
Latest version 0.1.0 (2012-03-19)
MediaWiki 1.18+
Database changes No
License GNU Affero General Public License 3.0 or later
Translate the WhiteSpace extension if it is available at
Check usage and version matrix.


Two tags to control whitespace in templates: <dws/> discards itself and all whitespace (including newlines) after the tag, <nl/> replaces itself with a newline.


In wikitext spaces and newlines do matter. Leading space causes a paragraph to be verbatim, newline terminates a list item, etc. This means that template code cannot be formatted freely. For example, two subsequent template calls:

{{ Template1 }}{{ Template2 }}

being reformatted as:

{{ Template1 }}
{{ Template2 }}

may produce different result (e. g. two list items instead of one). This is not a big deal for a simple template, but it quickly become a real issue for complicated templates. Let us consider a real example, a small part of Template:Extension:

   {{#if: {{{username|}}} |<!--
   -->{{#ifeq: {{{username}}}|{{{author|{{{username}}}<!-- -->}}}|<!--
      -->{{{author}}} (<!--
   --><sup><small>[[User talk:{{{username}}}|{{int:talkpagelinktext}}]]</small></sup><!--
   -->{{#ifeq: {{{username}}}|{{{author|{{{username}}}<!-- -->}}}|<!--

HTML comments (<!-- -->) allows splitting template code to lines but it pollutes template code so the overall result is not so good. Using <dws/> the code can be reformatted as:

{{  #if: {{{ username | }}} 
    |   {{  #ifeq: {{{ username }}} | {{{ author | {{{ username }}} }}}
            |   nothing
            |   {{{ author }}}<dws/>
        [[User:{{{ username }}}|{{{ username }}}]]<dws/>
        <sup><small>[[User talk:{{{ username }}}|{{ int: talkpagelinktext }}]]</small></sup><dws/>
        {{  #ifeq: {{{ username }}} | {{{ author | {{{ username }}} }}}
            |   nothing
            |   )
    |   {{{ author }}}

Of course, it is just another style of formatting, but <dws/> allows using this style regularly and uniformly.


git clone


Note: This extension requires patching MediaWiki core. The one-line patch introduces a parser hook which makes implementation of this extension possible. See Requests for comment/New hook: ParserBeforePreprocess for rationale.

In the MediaWiki root directory:

$ patch -p0 -i extensions/WhiteSpace/MediaWiki-1.18.1.patch

The add to your `LocalSettings.php':

require_once( "$IP/extensions/WhiteSpace/WhiteSpace.php" );

Installing on MediaWiki v1.25 or newerEdit

The `wfRunHooks` function has been deprecated since v1.25, so the MediaWiki-1.18.1.patch patch file will not work and you will see a "Fatal Error" or "ParseError".

Instead, manually edit MediaWiki core file `includes/parser/Parser.php`. Find function `preprocessToDom` (around line 2952) and add this as the first line in that function:

 Hooks::run( 'ParserBeforePreprocess', array( $this, &$text, $flags ) );


No configuration.


Known issuesEdit

  • Patching the MediaWiki core required. :-(


GNU Affero General Public License, version 3 or any later version. See AGPL-3.0.txt file for the full license text.