User:Nat/Table Converter
< User:Nat
Jump to navigation
Jump to search
My own table converter. I used to use Voidious's one, but that one create long table style, not compact style. But this one I created can convert to both long and short (inline) style. Try it out. Comment are welcome.
Available at http://wiki.robothai.net/table_converter
- Unimplemented List
(Help me if you can)
- Alignment & Table Style (the hardest one)
- MediaWiki table parser
- UseMod table creator
- How it work
It just simple PHP page. Using jQuery to do some AJAX. It have several functions:
- process() - this one will read $_POST and generate the output.
- usemodTableParser - read the UseModWiki-style table and return an array represent table.
- mediaTableCreater - take an array that represent table and generate MediaWiki-style table.
Table represent in array like:
Array ( [0] => Array( [0] => row1cell1, [1] => row1cell2, ... ), [1] => Array( [0] => row2cell1, [1] => row2cell2, ... ), ... )
Source Code
License under Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Thailand License
<?php
error_reporting(E_ALL);
define ('LINE', "<br />\n");
$ajax = isset($_GET['ajax']) && $_GET['ajax'];
$submit = isset($_GET['submit']) && $_GET['submit'];
$val = isset($_POST['table']) ? stripslashes($_POST['table']) : '';
if ($ajax) {
process();
die;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
<head>
<title>MediaWiki Table Converter</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#ct').submit(function(event){
event.preventDefault();
$.post('?ajax=1',
{
table: $('#table').val(), from: $('#from').val(), to: $('to').val(),
inline: $('#inline').is(':checked'), whole: $('#whole').is(':checked')
},
function(data, status) {
if (status != 'success') {
alert('Error: ' + status);
} else {
$('#result').html(data);
}
}
, 'text');
return false;
});
});
</script>
<style type="text/css">
#usemod-style {border:1px solid #f00; color:#f00; padding:10px;}
#table {width:100%}
#result {font-family:courier, monospace;font-size:x-small;}
</style>
</head>
<body>
<form action="?submit=1" method="post" id="ct">
<h2>Convert</h2>
<div id="usemod-style">
WARNING: Converting table cause lost of <strong>all</strong> table styles.
</div>
<p>
<label for="from">From:</label>
<select name="from" id="from" disabled="disabled">
<option value="usemod" selected="selected">UseModWiki Syntax</option>
<option value="media">MediaWiki Syntax</option>
</select>
<label for="to">To:</label>
<select name="to" id="to" disabled="disabled">
<option value="usemod">UseModWiki Syntax</option>
<option value="media" selected="selected">MediaWiki Syntax</option>
</select>
<br/>
<input type="checkbox" name="inline" id="inline" value="true" checked="checked" /> <label for="large">Inline table</label>
<input type="checkbox" name="whole" id="whole" value="true" disabled="disabled" /> <label for="whole">Whole Page</label>
</p>
<p>
<label id="table-label" for="table">Table</label>: <br />
<textarea id="table" name="table" rows="10" cols="80"><?php echo $val ?></textarea>
</p>
<p>
<input type="submit" value="Convert" id="convert"/>
</p>
</form>
<hr/>
<div id="result">
<?php
if ($submit) process();
?>
</div>
</body>
</html>
<?php
function process() {
$inline = isset($_POST['inline']) ? $_POST['inline'] == 'true' : false;
echo mediaTableCreator(usemodTableParser(stripslashes($_POST['table'])), $inline);
}
function usemodTableParser($table) {
$return = array();
$table = explode("\n", $table);
foreach ($table as $line) {
$line = trim($line);
$line = explode('|', $line);
array_shift($line);
array_pop($line);
$row = array();
foreach ($line as $cell) {
$row[] = $cell;
}
$return[] = $row;
}
return $return;
}
function mediaTableCreator($table, $inline = true, $style = 'border="1" style="border-collapse:collapse;color:black"') {
$out = '{| ' . $style . LINE;
$sep = '';
foreach ($table as $row) {
$out .= $sep;
$sep = '|-' . LINE;
$sep2 = '| ';
foreach ($row as $cell) {
$out .= $sep2;
if ($inline)
$sep2 = ' || ';
else $sep2 = LINE . '| ';
$out .= $cell;
}
$out .= LINE;
}
return $out . '|}';
}
function usemodTableCreator($table) { /* TODO Creating usemod table creator */ }
function mediaTableParser($table) { /* TODO Creating mediawiki table parser */ }
?>