Talk:Main Page/Moderator Stuff/Text Edit Bot

From Custom Mario Kart
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

I (Wiimm) have written a text edit bot. It is very efficient and easy to handle, but it must be started as php script at severs backend. So only Tock and I are able to start it.


How it works

It loads every current text (no history text) of every standard text and template (other namespaces are possible) and calls a function. The function returns the text, modified or not. If the text was modified, it is written back to the database.

The edit function

The edit function looks like this:

function FixText ( $old_text, &$log )
{
    $text =
    ....

    return $text;
}
$old_text
The original text. It must be scanned.
$log
Print this before log messages and empty $log.

Example for a line based check

function FixText ( $old_text, &$log )
{
    #--- line collector
    $collect = '';

    #--- split text into lines
    foreach ( explode("\n",$old_text) as $line )
    {
	#--- make a fast pre test (optional)
	if (candiate_for_edit($line))
	{
	    #--- calculate a new line
	    $new_line = do_something_with($line);
	    if ( $line != $new_line )
	    {
		#--- log: can be commented out
		print("%s ** %s\n  > %s\n",$log,$line,$new_line); $log = '';

		#--- use the new line
		$line = $new_line;
	    }
	}
	#--- add the current line
	$collect .= "\n".$line;
    }

    #--- return collected text, but remove the first unwanted line-feed.
    return substr($collect,1);
}

Example for a test script

<?php

function FixText ( $old_text, &$log )
{
    ....
    # see above
}

#--------------------------------------------------

function TestIt ( $orig, $info )
{
    $log = sprintf("\n---------- %s ---------\n",$info);
    $text = FixText($orig,$log);
    if ( $text != $orig )
	printf("%s\n###ORIG###\n%s\n\n###NEW###\n%s\n\n",
		$log, $orig, $text );
}

#--------------------------------------------------

$orig = <<< __EOT__
This is my test.
== Title ==

__TO__

[[category:Text]]
__EOT__;

TestIt($orig,"Test 1");

#--------------------------------------------------

$orig = <<< __EOT__
...
__EOT__;

TestIt($orig,"Test 2");

#--------------------------------------------------
...
?>

The <<< __EOT__ part is a php here document.

Jobs

Any moderator can give me a job in form of a FixText() function. The job must be proved with example text and the edits must be explained. I accept only downloadable php-code in form of the example code.