Extension:SimpleTable

I created this very simple extension to allow tabular data to be easily cut-and-pasted into a Wiki; for example, this allows a CSV export from Excel to be pasted in without having to manually edit it into Wiki table syntax. It's really crude, and doesn't allow any kind of clever formatting; for example, there is no way to set row and cell parameters, including row and cell spanning. OTOH, it's really simple, and it would be pretty easy to expand the parser (the convertTable function) to handle more complex input.

Suggestions for enhancements are welcome (on the talk page). However, please bear in mind that if we do anything fancy in the markup, it will end up being not much less complex than the Wiki table markup; the whole concept of this extension is to give the user something which is absolutely minimal, and requires no markup learning. If the user has to learn any markup at all, they may as well learn the real MW table markup.

There are now two versions available; a non-class-based version for PHP 4, and an enhanced, class-based version that works with PHP 5 and on MediaWiki 1.9.3. Both versions include Smcnaught's improvement to allow Wiki text within the table — thanks, Smcnaught! — JohanTheGhost 15:25, 12 April 2007 (UTC)

Update: the PHP 5 version now includes a new "sep" option, "bar", and the "head" parameter (see below). JohanTheGhost 17:18, 19 April 2007 (UTC)

Version for PHP 5 (MediaWiki 1.9)
This version requires PHP version 5 or later, and is known to run on MediaWiki 1.9.3. To install it:
 * Get the code
 * Save it as  in your   folder
 * Add this line to your :
 * require_once( "$IP/extensions/TabbedData.php" );

To use it, all you need to do is prepare your data in rows, with fields separated by tab characters. (Excel's "Save as" → "Text (Tab delimited)" function saves data in this format.) Place the data inside  ...  tags, and set any table parameters inside the opening   tag: Field 1→Field 2→Field 3 Field 4→Field 5→Field 6 Field 7→Field 8→Field 9 (where → represents a tab character) produces the corresponding table.

You can use a different separator, by specifying it as the  parameter. can be one of:
 * tab: a tab
 * space: a space
 * spaces: one or more spaces and/or tabs
 * comma: a comma
 * bar: a vertical bar (|)

You can also specify that either the top row or the left column should be formatted as a heading, using the  parameter, which takes one of two values:
 * top: make the top row a heading
 * left: make the left column a heading

For example:  Head 1,Head 2,Head 3 Field 4,Field 5,Field 6 Field 7,Field 8,Field 9 produces a table with a heading row and two data rows, all having three columns.

Version for PHP 4 (MediaWiki 1.6)
This version works on PHP version 4, and is known to run on MediaWiki 1.6. To install it:
 * Get the code for PHP 4
 * Save it as  in your   folder
 * Add this line to your :
 * require_once( "$IP/extensions/TabbedData.php" );

Usage is the same as above, except that the  and   parameters are not supported.

Installation

 * 1) Download the extension code:
 * 2) * Version 1.0: known to work with PHP 4 and MW 1.6.
 * 3) * Version 1.1: known to work with PHP 5 and MW 1.9; will not work on PHP 4 / MW 1.6. Usage is the same as above, except that the   and   parameters are not supported.
 * 4) Save the code in your wiki's   directory as.

Code: for PHP 4
\n";

// Done.

// * Added parse call that reserves the Parse reference.

// Reserve Parse Reference $ret = $parser->parse(                       $wikiTable,                        $parser->mTitle,                        $parser->mOptions,                        false,                        false                        ); return $ret->getText;

}

/* * Convert tabbed data into an HTML table body. */ function convertTable($tabbed) { $wikitab = "";

// Remove initial and final newlines. $tabbed = trim($tabbed);

// Split the input into lines, and convert each line to table format. $lines = preg_split('/\n/', $tabbed); foreach ($lines as $line) { $wikitab .= " \n"; $wikitab .= " ". preg_replace('/\t/', ' ', $line). " \n"; $wikitab .= " \n"; } return $wikitab; }

?>