Extension:BacktickCode

From MediaWiki.org
Jump to navigation Jump to search
MediaWiki extensions manual
OOjs UI icon advanced.svg
BacktickCode
Release status: unmaintained
Implementation Tag
Description Wrap `text between backticks` in <code> tags.
Author(s) Joel Thornton (joelpttalk)
Latest version 1.0 (2020-02-16)
MediaWiki 1.5+
PHP 5.2+
Database changes No
License GNU General Public License 2.0 or later
Download See the code section
Check usage and version matrix.

The BacktickCode extension wraps <code> tags around wikitext which is placed `between backtick characters`.

This provides a handy wiki-editing shortcut for wikis that expect a lot of inlined <code> snippets in its pages, and functions similarly to the standard MediaWiki ''' -> <b> bold formatting shortcut.

Backtick characters within <pre> blocks will not be altered by this extension. Backticks outside of <pre> blocks can also be output to the page by escaping them as \`.

Installing[edit]

  • Add the following code at the bottom of your LocalSettings.php:
    require_once "$IP/extensions/BacktickCode/BacktickCode.php";
    
  • Yes Done – Navigate to Special:Version on your wiki to verify that the extension is successfully installed.

Code[edit]

BacktickCode.php (PHP 5.3+)
<?php
/**
 * @author Joel Thornton <mediawiki@joelpt.net>
 * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
 */

if(!defined('MEDIAWIKI')) {
    die("This is an extension to the MediaWiki package and cannot be run standalone.");
}

// Register as an extention
$wgExtensionCredits['parserhook'][] = array(
        'name' => 'BacktickCode',
        'version' => '1.1',
        'url' => 'https://www.mediawiki.org/wiki/Extension:BacktickCode',
        'author' => 'Joel Thornton; Sk4p',
        'description' => 'Allows to show text as <code> between backticks (`)',
);

// Register hooks
$wgHooks['InternalParseBeforeLinks'][] = function( &$parser, &$text, &$stripState ) {
        // We replace '`...`' by '<code>...</code>' and '\`' by '`'.

        // This is hard, because MediaWiki itself uses backticks in
        // the `UNIQ and QINU` blocks.  We find that when we just
        // change pairs of ` `, we break the stripstate badly.  So
        // first we're going to "hide" those by turning the backticks
        // into tildes.
        //
        $fixprefix = preg_replace('/`/', '~', Parser::MARKER_PREFIX);
        $fixsuffix = preg_replace('/`/', '~', Parser::MARKER_SUFFIX);

        $text = str_replace(Parser::MARKER_PREFIX, $fixprefix, $text);
        $text = str_replace(Parser::MARKER_SUFFIX, $fixsuffix, $text);

        // Now that those are tildes, we can do the replace.  We check
        // for \x7f to ensure our pair of backticks isn't spanning a
        // UNIQ/QINU set.
        $text = preg_replace('/([^\\\\]|^)`([^`\x7f]*)`/', '$1<code>$2</code>', $text);
        $text = preg_replace('/\\\\\`/', '`', $text);

        // Now put the prefix/suffixes back to normal.
        $text = str_replace($fixprefix, Parser::MARKER_PREFIX, $text);
        $text = str_replace($fixsuffix, Parser::MARKER_SUFFIX, $text);

        return true;
};