Difference between revisions of "Pma2wiki"

From Freephile Wiki
Jump to navigation Jump to search
(fix nesting of <source>)
(corrected link)
(2 intermediate revisions by one other user not shown)
Line 1: Line 1:
 
See Also: [[Syntax highlighting]]
 
See Also: [[Syntax highlighting]]
<syntaxhighlight lang=php>
+
<source lang=php>
 
#!/usr/bin/php
 
#!/usr/bin/php
 
<?php
 
<?php
 
/**
 
/**
* This script is meant to be used as a command-line tool, or else as the target of a custom action within
+
* This script is meant to be used as a command-line tool, or else as the target of a custom action within
* Quanta
+
* Quanta
* The script will get the contents of a file which is the generated output of a PHPMyAdmin SQL Schema export, and change the
+
* The script will get the contents of a file which is the generated output of a PHPMyAdmin SQL Schema export, and change the
* format of the table defintion 'headings' into the H2 heading format suitable for posting into MediaWiki
+
* format of the table defintion 'headings' into the H2 heading format suitable for posting into MediaWiki
* This process creates easy to navigate and reference SQL schema files in the wiki
+
* This process creates easy to navigate and reference SQL schema files in the wiki
* The exact tag output by this script (<sql> or <source lang=sql>) must correlate with the MediaWiki extension you use to get syntax highlighting
+
* The exact tag output by this script (<sql> or <source lang=sql>) must correlate with the MediaWiki extension you use to get syntax highlighting
* In any case, you need to have a GeSHi syntax highlighting extension active in your MediaWiki installation.
+
* In any case, you need to have a GeSHi syntax highlighting extension active in your MediaWiki installation.
*
+
*
* @Usage
+
* @Usage
* php /path/to/pma2wiki.php /some/pma-schema.sql
+
* php /path/to/pma2wiki.php /some/pma-schema.sql
*/
+
*/
  
 
$content = file_get_contents($argv[1]);
 
$content = file_get_contents($argv[1]);
Line 21: Line 21:
  
 
/** replace the
 
/** replace the
* -- --------------------------------------------------------
+
* -- --------------------------------------------------------
* with nothing
+
* with nothing
*/
+
*/
 
$content = preg_replace ("/^[\s-]+$\n/m", '', $content);
 
$content = preg_replace ("/^[\s-]+$\n/m", '', $content);
  
  
 
/** Handle the 'header' output
 
/** Handle the 'header' output
*  e.g.
+
*  e.g.
 
-- phpMyAdmin SQL Dump
 
-- phpMyAdmin SQL Dump
 
-- version 2.9.1.1-Debian-3
 
-- version 2.9.1.1-Debian-3
 
-- http://www.phpmyadmin.net
 
-- http://www.phpmyadmin.net
*/
+
*/
  
 
$pattern = '/
 
$pattern = '/
Line 47: Line 47:
  
 
/**
 
/**
* Make the DB name a H2
+
* Make the DB name a H2
*/
+
*/
 
$pattern = '/^--[\s]([^:]+): `(.*)`$/mU';
 
$pattern = '/^--[\s]([^:]+): `(.*)`$/mU';
 
$replacement = "== $1: $2 == \n";
 
$replacement = "== $1: $2 == \n";
Line 54: Line 54:
  
 
/** handle the heading metadata
 
/** handle the heading metadata
* e.g.
+
* e.g.
-- Host: foo.example.com
+
-- Host: hermes.dc0.oasis-open.net
 
-- Generation Time: May 03, 2007 at 12:33 PM
 
-- Generation Time: May 03, 2007 at 12:33 PM
 
-- Server version: 3.23.55
 
-- Server version: 3.23.55
 
-- PHP Version: 5.2.0-8+etch1
 
-- PHP Version: 5.2.0-8+etch1
 
--
 
--
-- Database: `myDatabase`
+
-- Database: `kavi_live_wgorg`
*/
+
*/
 
$pattern = '/^--[\s]([^:]+): (.*)$/mU';
 
$pattern = '/^--[\s]([^:]+): (.*)$/mU';
 
$replacement = "; $1: $2";
 
$replacement = "; $1: $2";
Line 67: Line 67:
  
 
/** replace the
 
/** replace the
* -- Table --
+
* -- Table --
* comment with a
+
* comment with a
* === Table ===
+
* === Table ===
* wiki syntax heading
+
* wiki syntax heading
*/
+
*/
 
//$content = preg_replace("/^--\s+\n^-- Table structure for table `([^`]+)`\n^--\s+\n/imUs", "\n=== $1 ===\n", $content);
 
//$content = preg_replace("/^--\s+\n^-- Table structure for table `([^`]+)`\n^--\s+\n/imUs", "\n=== $1 ===\n", $content);
 
$content = preg_replace("/\n^-- Table structure for table `([^`]+)`$/imUs", "\n=== $1 ===\n", $content);
 
$content = preg_replace("/\n^-- Table structure for table `([^`]+)`$/imUs", "\n=== $1 ===\n", $content);
  
 
/** replace the
 
/** replace the
* -- --------------------------------------------------------
+
* -- --------------------------------------------------------
* with nothing
+
* with nothing
*/
+
*/
 
$content = preg_replace ("/^[\s-]+$\n/m", '', $content);
 
$content = preg_replace ("/^[\s-]+$\n/m", '', $content);
  
 
/** wrap the CREATE statement in <sql> tags (relies on geshi)
 
/** wrap the CREATE statement in <sql> tags (relies on geshi)
*/
+
*/
 
$pattern = '/(CREATE TABLE [^;]+;)/U';
 
$pattern = '/(CREATE TABLE [^;]+;)/U';
// depends on GeSHi and which extension you have
+
$replacement = '<source lang=sql> // depends on GeSHi and which extension you have
$replacement = '<source lang=sql>
 
 
$1
 
$1
 
</source>
 
</source>
Line 94: Line 93:
 
echo $content;
 
echo $content;
 
?>
 
?>
</syntaxhighlight>
+
</source>
 
 
[[Category:Wiki]]
 

Revision as of 22:33, 13 June 2007

See Also: MediaWiki/Syntax highlighting

#!/usr/bin/php
<?php
/**
 * This script is meant to be used as a command-line tool, or else as the target of a custom action within
 * Quanta
 * The script will get the contents of a file which is the generated output of a PHPMyAdmin SQL Schema export, and change the
 * format of the table defintion 'headings' into the H2 heading format suitable for posting into MediaWiki
 * This process creates easy to navigate and reference SQL schema files in the wiki
 * The exact tag output by this script (<sql> or <source lang=sql>) must correlate with the MediaWiki extension you use to get syntax highlighting
 * In any case, you need to have a GeSHi syntax highlighting extension active in your MediaWiki installation.
 *
 * @Usage
 * php /path/to/pma2wiki.php /some/pma-schema.sql
 */

$content = file_get_contents($argv[1]);



/** replace the
 * -- --------------------------------------------------------
 * with nothing
 */
$content = preg_replace ("/^[\s-]+$\n/m", '', $content);


/** Handle the 'header' output
 *  e.g.
-- phpMyAdmin SQL Dump
-- version 2.9.1.1-Debian-3
-- http://www.phpmyadmin.net
 */

$pattern = '/
-- phpMyAdmin SQL Dump
-- version (.*)$
-- http(.*)$
/mU';
$replacement = '
phpMyAdmin SQL Dump<br />
version $1<br />
http$2
';
$content = preg_replace ($pattern, $replacement, $content);

/**
 * Make the DB name a H2
 */
$pattern = '/^--[\s]([^:]+): `(.*)`$/mU';
$replacement = "== $1: $2 == \n";
$content = preg_replace ($pattern, $replacement, $content);

/** handle the heading metadata
 * e.g.
-- Host: hermes.dc0.oasis-open.net
-- Generation Time: May 03, 2007 at 12:33 PM
-- Server version: 3.23.55
-- PHP Version: 5.2.0-8+etch1
--
-- Database: `kavi_live_wgorg`
 */
$pattern = '/^--[\s]([^:]+): (.*)$/mU';
$replacement = "; $1: $2";
$content = preg_replace ($pattern, $replacement, $content);

/** replace the
 * -- Table --
 * comment with a
 * === Table ===
 * wiki syntax heading
 */
//$content = preg_replace("/^--\s+\n^-- Table structure for table `([^`]+)`\n^--\s+\n/imUs", "\n=== $1 ===\n", $content);
$content = preg_replace("/\n^-- Table structure for table `([^`]+)`$/imUs", "\n=== $1 ===\n", $content);

/** replace the
 * -- --------------------------------------------------------
 * with nothing
 */
$content = preg_replace ("/^[\s-]+$\n/m", '', $content);

/** wrap the CREATE statement in <sql> tags (relies on geshi)
 */
$pattern = '/(CREATE TABLE [^;]+;)/U';
$replacement = '<source lang=sql> // depends on GeSHi and which extension you have
$1

'; $content = preg_replace ($pattern, $replacement, $content);

// output the content so that the Quanta action can see it. echo $content; ?> </source>