User:Noosphere/Mediation Cabal evidence template generator

From Wikipedia, the free encyclopedia

Here's a little perl script that will create a Wikipedia:Mediation Cabal/Evidence template based on your input.


#!/usr/bin/perl
#
# Mediation Cabal evidence template generator
#
# This program will prompt the user to input data that will be used
# to fill in the appropriate fields for the Mediation Cabal evidence template.
#
###############################################################################
# Author: Noosphere  -  http://en.wikipedia.org/wiki/User:Noosphere
# Version: 1.1
# License: This script is dual-licensed under the GPL version 2 or any later
#          version, at your option. See http://www.gnu.org/licenses/gpl.txt for
#          more details.
###############################################################################

$EOL = "\n" ;

# Wikipedia Mediation Cabal template page
$URL = "http://en.wikipedia.org/wiki/Wikipedia:Mediation_Cabal/Evidence" ;

# First half of evidence URL
$EVIDENCE_URL_FIRST = "{{Wikipedia:Mediation Cabal/Evidence" ;
$EVIDENCE_URL_LAST  = "}}" ;

$SEPERATOR = "|" ;


sub get_input { #{{{1
    $input = <> ;
    chomp $input ;
    return $input ;
} #}}}

sub print_instructions { #{{{1
    print "This program is to be used in conjunction with:" . $EOL ;
    print $EOL ;
    print "$URL" . $EOL ;
    print $EOL ;
    print "INSTRUCTIONS: Please fill in the prompted fields with " . $EOL ;
    print "              the following information." . $EOL ;
    print $EOL ;
    print "URL: Paste URL of the history diff you found using"          . $EOL ;
    print "     'compare selected versions' in the page history,"       . $EOL ;
    print "     and this program will automatically fill in"            . $EOL ;
    print "     the 'diff' and 'oldid' fields for you."                 . $EOL ;
    print "     Otherwise just leave it blank and you'll be promted"    . $EOL ;
    print "     for them" . $EOL ;
    print $EOL ;
    print "title: e.g. Vandalism" ;
    print $EOL . $EOL ;
    print "who: e.g. [[User:Example|Example]]" ;
    print $EOL . $EOL ;
    print "page: e.g. Talk:America" ;
    print $EOL . $EOL ;
    print "diff: " ;
    print "The diff as found in the URL of the history diff " . $EOL ;
    print "      after using 'compare selected versions' in the page history." ;
    print $EOL . $EOL ;
    print "oldid: " ;
    print "The oldid as found in the URL of the history diff" . $EOL ;
    print "       after using 'compare selected versions' in the page history.";
    print $EOL . $EOL ;
    print "comment: Please describe the incident." . $EOL ;
    print $EOL . $EOL ;
    print "Please sign outside the template, signatures inside the " ;
    print "template can get mangled" . $EOL ;
    return ;
} #}}}

sub get_page_diff_oldid { #{{{1
    my ( $diff_URL, $IGNORED ) = @_ ;
    my ( $page, $diff, $oldid, $IGNORED ) = split( /&/, $diff_URL ) ;
    ( $IGNORED, $diff, $IGNORED ) = split( /=/, $diff ) ;
    ( $IGNORED, $oldid, $IGNORED ) = split( /=/, $oldid ) ;
    ( $IGNORED, $page, $IGNORED ) = split( /=/, $page ) ;
    # Decoding colon, per template requirements
    $page =~ s/%3A/:/g ;
    # Sanity check - make sure diff and oldid are all digits, and page exists
    die( "ERROR: Invalid URL.  Exiting" ) unless ( $page  =~ /^.+$/ ) ;
    die( "ERROR: Invalid URL.  Exiting" ) unless ( $diff  =~ /^\d+$/ ) ;
    die( "ERROR: Invalid URL.  Exiting" ) unless ( $oldid =~ /^\d+$/ ) ;
    return( $page, $diff, $oldid ) ;
} #}}}

sub get_evidence { #{{{1
    my $diff  = "" ;
    my $oldid = "" ;
    my $page = "" ;
    print "Please input diff URL: " ;
    my $diff_URL = get_input ;
    if ( $diff_URL ne "" ) {
        ( $page, $diff, $oldid ) = get_page_diff_oldid( $diff_URL ) ;
    }
    print "Please input title: " ;
    my $title = get_input ;
    print "Please input who: " ;
    my $who   = get_input ;
    if ( $page eq "" ) {
        print "Please input page: " ;
        $page  = get_input ;
    } ;
    if ( $diff eq "" ) {
        print "Please input diff: " ;
        $diff  = get_input
    } ;
    if ( $oldid eq "" ) {
        print "Please input oldid: " ;
        $oldid = get_input
    } ;
    print "Please input comment: " ;
    my $comment = get_input ;
    return ( $diff_URL, $title, $who, $page, $diff, $oldid, $comment ) ;
} #}}}

sub print_evidence { #{{{1
    my ( $title, $who, $page, $diff, $oldid, $comment, $IGNORED ) = @_ ;
    print $EVIDENCE_URL_FIRST ;
    print $SEPERATOR ;
    print $title ;
    print $SEPERATOR ;
    print $who ;
    print $SEPERATOR ;
    print $page ;
    print $SEPERATOR ;
    print $diff ;
    print $SEPERATOR ;
    print $oldid ;
    print $SEPERATOR ;
    print $comment ;
    print $EVIDENCE_URL_LAST ;
    print $EOL ;
    return ;
} #}}}

sub main { #{{{1
    print_instructions ;
    while () {
        print $EOL . $EOL . $EOL ;
        my ( $diff_URL, $title, $who, $page, $diff, $oldid, $comment )
            = get_evidence ;
        print $EOL ;
        print_evidence ( $title, $who, $page, $diff, $oldid, $comment ) ;
    }
    return ;
} #}}}

main ;