Extension:BacktickCode
Appearance
This extension stores its source code on a wiki page. Please be aware that this code may be unreviewed or maliciously altered. They may contain security holes, outdated interfaces that are no longer compatible etc. Note: No localisation updates are provided for this extension by translatewiki.net . |
This extension is currently not actively maintained! Although it may still work, any bug reports or feature requests will more than likely be ignored. |
BacktickCode Release status: unmaintained |
|
---|---|
Implementation | Tag |
Description | Wrap `text between backticks` in <code> tags. |
Author(s) | Joel Thornton (joelpttalk) |
Latest version | 1.1 (2020-02-16) |
MediaWiki | 1.5+ |
PHP | 5.3+ |
Database changes | No |
License | GNU General Public License 2.0 or later |
Download | See the code section |
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]- Copy the code into a file and place the file(s) in a directory called
BacktickCode
in yourextensions/
folder. - Add the following code at the bottom of your LocalSettings.php file:
require_once "$IP/extensions/BacktickCode/BacktickCode.php";
- Done – Navigate to Special:Version on your wiki to verify that the extension is successfully installed.
Code
[edit]- BacktickCode.php
<?php
/**
* @author Joel Thornton <mediawiki@joelpt.net>
* @license https://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' => array('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;
};