Extension:StringLoop
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. |
![]() Release status: unmaintained |
|
---|---|
Implementation | Parser function |
Description | This extension implements for loops in the style of the Bourne shell. |
Author(s) | Robert Paciorek (berciktalk) |
Latest version | 1.0 (2010-08-14) |
MediaWiki | 1.15 |
License | GNU General Public License 3.0 |
Download | below |
What can this extension do?Edit
This extension implements for loops in the style of the Bourne shell. For any words in "input list" (separated by "input_list_separator" - default space) this word is substituted for variable "variable_name" and is inserting "wiki code".
"wiki code" can use variable value by:
{{ #var: variable_name }}
UsageEdit
{{#string_loop:variable_name|input list|wiki code|input_list_separator}}
input_list_separator is optional and default is space.
ExampleEdit
{{#string_loop:v|a b c|[[{{ #var: v }}]] <nowiki/>}}
generated:
[[a]] [[b]] [[c]]
Download instructionsEdit
Please cut and paste the code found below and place it in $IP/extensions/StringLoop/StringLoop.php
. Note: $IP stands for the root directory of your MediaWiki installation, the same directory that holds LocalSettings.php .
InstallationEdit
This extension require VariablesExtension to be installed. To install this extension, add the following to LocalSettings.php :
require_once("$IP/extensions/StringLoop/StringLoop.php");
CodeEdit
<?php
/**
* This extension implements for loops in the style of the Bourne shell.
* For any words in "input list" (separated by "input_list_separator" - default space)
* this word is substituted for variable "variable_name" and is inserting "wiki code".
* "wiki code" can use variable value by "{{ #var: variable_name }}"
*
* Extensions can by used to parse a template argument which is a list.
*
* INSTALATION:
* 1. install VariablesExtension - http://www.mediawiki.org/wiki/Extension:VariablesExtension
* 2. put this file (StringLoop.php) to PATH_TO_YOUR_WIKI//extensions/StringLoop/
* 3. add to LocalSettings.php
* require_once("$IP/extensions/StringLoop/StringLoop.php");
*
* USAGE:
* {{#string_loop:variable_name|input list|wiki code|input_list_separator}}
* input_list_separator is optional and default is space
*
* EXAMPLE:
* {{#string_loop:v|a b c|[[{{ #var: v }}]] <nowiki/>}}
* generated: [[a]] [[b]] [[c]]
*
*
* COPYRIGHT (c) 2010, Robert Paciorek (http://www.opcode.eu.org/), GNU GPL v 3.0
*
* 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 program 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.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* some code fragmets inspired by Loops extensions by David M. Sledge
* (http://www.mediawiki.org/wiki/Extension:Loops)
*
**/
$wgExtensionFunctions[] = 'StringLoop::register';
$wgExtensionCredits['parserhook'][] = array(
'name' => 'StringLoop',
'author' => 'Robert paciorek',
'url' => 'http://opcode.eu.org/',
);
$wgHooks['LanguageGetMagic'][] = "StringLoop::setMagicWords";
class StringLoop {
public static function register() {
global $wgParser;
$wgParser->setFunctionHook( 'string_loop', array( 'StringLoop', 'string_loop' ), SFH_OBJECT_ARGS );
return true;
}
public static function setMagicWords( &$magicWords, $langCode ) {
$magicWords['string_loop'] = array( 0, 'string_loop' );
return true;
}
public function string_loop(&$parser, $frame, $args) {
global $wgExtVariables;
$varName=array_shift( $args );
$varName = $varName === null ? '' : trim( $frame->expand( $varName ) );
$input_str=array_shift( $args );
$input_str = $input_str === null ? '' : trim( $frame->expand( $input_str ) );
$loopStatement=array_shift( $args );
$delimiter=array_shift( $args );
$delimiter = $delimiter === null ? ' ' : $delimiter;
$output='';
$words = explode($delimiter, $input_str);
foreach ( $words as $word ) {
$wgExtVariables->vardefine( $parser, $varName, "$word" );
$output .= isset( $loopStatement ) ?
trim( $frame->expand( $loopStatement ) ) : '';
}
return $output;
}
}