[Pywikipedia-l] SVN: [4849] trunk/pywikipedia/fixes.py

wikipedian at svn.wikimedia.org wikipedian at svn.wikimedia.org
Thu Jan 10 20:31:46 UTC 2008


Revision: 4849
Author:   wikipedian
Date:     2008-01-10 20:31:46 +0000 (Thu, 10 Jan 2008)

Log Message:
-----------
enhancements of grammar-de
converted tabs to spaces

Modified Paths:
--------------
    trunk/pywikipedia/fixes.py

Modified: trunk/pywikipedia/fixes.py
===================================================================
--- trunk/pywikipedia/fixes.py	2008-01-10 15:19:08 UTC (rev 4848)
+++ trunk/pywikipedia/fixes.py	2008-01-10 20:31:46 UTC (rev 4849)
@@ -16,231 +16,233 @@
 """
 
 fixes = {
-	# These replacements will convert HTML to wiki syntax where possible, and
-	# make remaining tags XHTML compliant.
-	'HTML': {
-		'regex': True,
-		'msg': {
-			'en':u'Robot: converting/fixing HTML',
-			'de':u'Bot: konvertiere/korrigiere HTML',
-			'fr':u'Robot: convertit/fixe HTML',
-			'he':u'בוט: ממיר/מתקן HTML',
-			'ia':u'Robot: conversion/reparation de HTML',
-			'lt':u'robotas: konvertuojamas/taisomas HTML',
-			'nl':u'Bot: conversie/reparatie HTML',
-			'pl':u'Robot konwertuje/naprawia HTML',
-			'pt':u'Bot: Corrigindo HTML',
-			'sr':u'Бот: Поправка HTML-а'
-		},
-		'replacements': [
-			# Everything case-insensitive (?i)
-			# Keep in mind that MediaWiki automatically converts <br> to <br />
-			# when rendering pages, so you might comment the next two lines out
-			# to save some time/edits.
-			#r'(?i)<br>':                      r'<br />',
-			# linebreak with attributes
-			#r'(?i)<br ([^>/]+?)>':            r'<br \1 />',
-			(r'(?i)<b>(.*?)</b>',              r"'''\1'''"),
-			(r'(?i)<strong>(.*?)</strong>',    r"'''\1'''"),
-			(r'(?i)<i>(.*?)</i>',              r"''\1''"),
-			(r'(?i)<em>(.*?)</em>',            r"''\1''"),
-			# horizontal line without attributes in a single line
-			(r'(?i)([\r\n])<hr[ /]*>([\r\n])', r'\1----\2'),
-			# horizontal line without attributes with more text in the same line
-			#(r'(?i) +<hr[ /]*> +',             r'\r\n----\r\n'),
-			# horizontal line with attributes; can't be done with wiki syntax
-			# so we only make it XHTML compliant
-			(r'(?i)<hr ([^>/]+?)>',            r'<hr \1 />'),
-			# a header where only spaces are in the same line
-			(r'(?i)([\r\n]) *<h1> *([^<]+?) *</h1> *([\r\n])',  r"\1= \2 =\3"),
-			(r'(?i)([\r\n]) *<h2> *([^<]+?) *</h2> *([\r\n])',  r"\1== \2 ==\3"),
-			(r'(?i)([\r\n]) *<h3> *([^<]+?) *</h3> *([\r\n])',  r"\1=== \2 ===\3"),
-			(r'(?i)([\r\n]) *<h4> *([^<]+?) *</h4> *([\r\n])',  r"\1==== \2 ====\3"),
-			(r'(?i)([\r\n]) *<h5> *([^<]+?) *</h5> *([\r\n])',  r"\1===== \2 =====\3"),
-			(r'(?i)([\r\n]) *<h6> *([^<]+?) *</h6> *([\r\n])',  r"\1====== \2 ======\3"),
-			# TODO: maybe we can make the bot replace <p> tags with \r\n's.
-		],
-		'exceptions': {
-			'inside-tags': [
-				'nowiki',
-				'comment',
-				'math',
-				'pre'
-			],
-		}
-	},
+    # These replacements will convert HTML to wiki syntax where possible, and
+    # make remaining tags XHTML compliant.
+    'HTML': {
+        'regex': True,
+        'msg': {
+            'en':u'Robot: converting/fixing HTML',
+            'de':u'Bot: konvertiere/korrigiere HTML',
+            'fr':u'Robot: convertit/fixe HTML',
+            'he':u'בוט: ממיר/מתקן HTML',
+            'ia':u'Robot: conversion/reparation de HTML',
+            'lt':u'robotas: konvertuojamas/taisomas HTML',
+            'nl':u'Bot: conversie/reparatie HTML',
+            'pl':u'Robot konwertuje/naprawia HTML',
+            'pt':u'Bot: Corrigindo HTML',
+            'sr':u'Бот: Поправка HTML-а'
+        },
+        'replacements': [
+            # Everything case-insensitive (?i)
+            # Keep in mind that MediaWiki automatically converts <br> to <br />
+            # when rendering pages, so you might comment the next two lines out
+            # to save some time/edits.
+            #r'(?i)<br>':                      r'<br />',
+            # linebreak with attributes
+            #r'(?i)<br ([^>/]+?)>':            r'<br \1 />',
+            (r'(?i)<b>(.*?)</b>',              r"'''\1'''"),
+            (r'(?i)<strong>(.*?)</strong>',    r"'''\1'''"),
+            (r'(?i)<i>(.*?)</i>',              r"''\1''"),
+            (r'(?i)<em>(.*?)</em>',            r"''\1''"),
+            # horizontal line without attributes in a single line
+            (r'(?i)([\r\n])<hr[ /]*>([\r\n])', r'\1----\2'),
+            # horizontal line without attributes with more text in the same line
+            #(r'(?i) +<hr[ /]*> +',             r'\r\n----\r\n'),
+            # horizontal line with attributes; can't be done with wiki syntax
+            # so we only make it XHTML compliant
+            (r'(?i)<hr ([^>/]+?)>',            r'<hr \1 />'),
+            # a header where only spaces are in the same line
+            (r'(?i)([\r\n]) *<h1> *([^<]+?) *</h1> *([\r\n])',  r"\1= \2 =\3"),
+            (r'(?i)([\r\n]) *<h2> *([^<]+?) *</h2> *([\r\n])',  r"\1== \2 ==\3"),
+            (r'(?i)([\r\n]) *<h3> *([^<]+?) *</h3> *([\r\n])',  r"\1=== \2 ===\3"),
+            (r'(?i)([\r\n]) *<h4> *([^<]+?) *</h4> *([\r\n])',  r"\1==== \2 ====\3"),
+            (r'(?i)([\r\n]) *<h5> *([^<]+?) *</h5> *([\r\n])',  r"\1===== \2 =====\3"),
+            (r'(?i)([\r\n]) *<h6> *([^<]+?) *</h6> *([\r\n])',  r"\1====== \2 ======\3"),
+            # TODO: maybe we can make the bot replace <p> tags with \r\n's.
+        ],
+        'exceptions': {
+            'inside-tags': [
+                'nowiki',
+                'comment',
+                'math',
+                'pre'
+            ],
+        }
+    },
 
-	# Grammar fixes for German language
-	'grammar-de': {
-		'regex': True,
-		'msg': {
-			'de':u'Bot: korrigiere Grammatik',
-		},
-		'replacements': [
-			#(u'([Ss]owohl) ([^,\.]+?), als auch',                                                            r'\1 \2 als auch'),
-			#(u'([Ww]eder) ([^,\.]+?), noch', r'\1 \2 noch'),
-			#
-			# Vorsicht bei Substantiven, z. B. 3-Jähriger!
-			(u'(\d+)(minütig|stündig|tägig|wöchig|jährig|minütlich|stündlich|täglich|wöchentlich|jährlich|fach|mal|malig|köpfig|teilig|gliedrig|geteilt|elementig|dimensional|bändig|eckig|farbig|stimmig)', r'\1-\2'),
-			# zusammengesetztes Wort, Bindestrich wird durchgeschleift
-			(u'(?<!\w)(\d+|\d+[\.,]\d+)(\$|€|DM|£|¥|mg|g|kg|ml|cl|l|t|ms|min|µm|mm|cm|dm|m|km|°C|kB|MB|TB|W|kW|MW|PS|Nm|eV|J|kcal|mA|mV|kV|Ω|Hz|kHz|MHz|GHz|mol|Pa|Bq|Sv|mSv)([²³]?-[\w\[])',           r'\1-\2\3'),
-			# Größenangabe ohne Leerzeichen vor Einheit
-			# weggelassen wegen vieler falsch Positiver: s, A, V, C, S, %
-			(u'(?<!\w)(\d+|\d+[\.,]\d+)(\$|€|DM|£|¥|mg|g|kg|ml|cl|l|t|ms|min|µm|mm|cm|dm|m|km|°C|kB|MB|GB|TB|W|kW|MW|GW|PS|Nm|eV|J|kcal|mA|mV|kV|Ω|Hz|kHz|MHz|GHz|mol|Pa|Bq|Sv|mSv)(?=\W|²|³|$)',          r'\1 \2'),
-			# Kein Leerzeichen zwischen Tag und Monat
-			(u'(\d+)\.(Januar|Februar|März|April|Mai|Juni|Juli|August|September|Oktober|November|Dezember)', r'\1. \2'),
-			# Keine führende Null beim Datum
-			#(u'0(\d+)\. (Januar|Februar|März|April|Mai|Juni|Juli|August|September|Oktober|November|Dezember)', r'\1. \2'),
-			# Kein Leerzeichen nach Komma
-			(u'([a-zäöüß](\]\])?,)((\[\[)?[a-zäöüA-ZÄÖÜ])',                                                                          r'\1 \3'),
+    # Grammar fixes for German language
+    'grammar-de': {
+        'regex': True,
+        'msg': {
+            'de':u'Bot: korrigiere Grammatik',
+        },
+        'replacements': [
+            #(u'([Ss]owohl) ([^,\.]+?), als auch',                                                            r'\1 \2 als auch'),
+            #(u'([Ww]eder) ([^,\.]+?), noch', r'\1 \2 noch'),
+            #
+            # Vorsicht bei Substantiven, z. B. 3-Jähriger!
+            (u'(\d+)(minütig|stündig|tägig|wöchig|jährig|minütlich|stündlich|täglich|wöchentlich|jährlich|fach|mal|malig|köpfig|teilig|gliedrig|geteilt|elementig|dimensional|bändig|eckig|farbig|stimmig)', r'\1-\2'),
+            # zusammengesetztes Wort, Bindestrich wird durchgeschleift
+            (u'(?<!\w)(\d+|\d+[\.,]\d+)(\$|€|DM|£|¥|mg|g|kg|ml|cl|l|t|ms|min|µm|mm|cm|dm|m|km|°C|kB|MB|GB|TB|W|kW|MW|GW|PS|Nm|eV|J|kcal|mA|mV|kV|Ω|Hz|kHz|MHz|GHz|mol|Pa|Bq|Sv|mSv)([²³]?-[\w\[])',           r'\1-\2\3'),
+            # Größenangabe ohne Leerzeichen vor Einheit
+            # weggelassen wegen vieler falsch Positiver: s, A, V, C, S, %
+            (u'(?<!\w)(\d+|\d+[\.,]\d+)(\$|€|DM|£|¥|mg|g|kg|ml|cl|l|t|ms|min|µm|mm|cm|dm|m|km|°C|kB|MB|GB|TB|W|kW|MW|GW|PS|Nm|eV|J|kcal|mA|mV|kV|Ω|Hz|kHz|MHz|GHz|mol|Pa|Bq|Sv|mSv)(?=\W|²|³|$)',          r'\1 \2'),
+            # Kein Leerzeichen zwischen Tag und Monat
+            (u'(\d+)\.(Januar|Februar|März|April|Mai|Juni|Juli|August|September|Oktober|November|Dezember)', r'\1. \2'),
+            # Keine führende Null beim Datum
+            #(u'0(\d+)\. (Januar|Februar|März|April|Mai|Juni|Juli|August|September|Oktober|November|Dezember)', r'\1. \2'),
+            # Kein Leerzeichen nach Komma
+            (u'([a-zäöüß](\]\])?,)((\[\[)?[a-zäöüA-ZÄÖÜ])',                                                                          r'\1 \3'),
             # Leerzeichen und Komma vertauscht
             (u'([a-zäöüß](\]\])?) ,((\[\[)?[a-zäöüA-ZÄÖÜ])',                                                                          r'\1, \3'),
             # Plenks (d. h. Leerzeichen auch vor dem Komma/Punkt/Semikolon/Doppelpunkt/Ausrufezeichen/Fragezeichen)
             # Achtung bei Französisch: http://de.wikipedia.org/wiki/Plenk#Sonderfall_Franz.C3.B6sisch
             (u'([a-zäöüß](\]\])?) ([,\.;:!\?]) ((\[\[)?[a-zäöüA-ZÄÖÜ])',                                                                          r'\1\3 \4'),
-			#(u'([a-z]\.)([A-Z])',                                                                             r'\1 \2'),
-		],
-		'exceptions': {
-			'inside-tags': [
-				'nowiki',
-				'comment',
-				'math',
+            #(u'([a-z]\.)([A-Z])',                                                                             r'\1 \2'),
+        ],
+        'exceptions': {
+            'inside-tags': [
+                'nowiki',
+                'comment',
+                'math',
                 'pre',           # because of code examples
                 'source',        # because of code examples
-				'startspace',    # because of code examples
-				'hyperlink',     # e.g. commas in URLs
-				'gallery',       # because of filenames
-			],
-			'text-contains': [
-				r'sic!',
+                'startspace',    # because of code examples
+                'hyperlink',     # e.g. commas in URLs
+                'gallery',       # because of filenames
+                'timeline',
+            ],
+            'text-contains': [
+                r'sic!',
                 r'20min.ch',     # Schweizer News-Seite
-			],
-			'inside': [
+            ],
+            'inside': [
                 r'<code>.*</code>', # because of code examples
                 r'{{[Zz]itat\|.*?}}',
                 r'{{§|.*?}}',
                 r'§ \d+[a-z]',     # Gesetzesparagraph, klappt nicht?
                 r'Ju 52/1m', # Flugzeugbezeichnung
                 r'Ju 52/3m', # Flugzeugbezeichnung
-				r'AH-1W',    # Hubschrauberbezeichnung
+                r'AH-1W',    # Hubschrauberbezeichnung
                 r'ZPG-3W',   # Luftschiffbezeichnung
                 r'8mm',      # Filmtitel
                 r'802.11g',  # WLAN-Standard
                 r'DOS/4GW',  # Software
                 r'ntfs-3g',  # Dateisystem-Treiber
+                r'/\w(,\w)*/',   # Laut-Aufzählung in der Linguistik
                 r'(?m)^;(.*?)$', # Definitionslisten, dort gibt es oft absichtlich Leerzeichen vor Doppelpunkten
-				r'\d+h( |&nbsp;)\d+m', # Schreibweise für Zeiten, vor allem in Film-Infoboxen. Nicht korrekt, aber dafür schön kurz.
-				r'(?i)\[\[(Bild|Image|Media):.+?\|', # Dateinamen auslassen
+                r'\d+h( |&nbsp;)\d+m', # Schreibweise für Zeiten, vor allem in Film-Infoboxen. Nicht korrekt, aber dafür schön kurz.
+                r'(?i)\[\[(Bild|Image|Media):.+?\|', # Dateinamen auslassen
                 r'<sup>\d+m</sup>',                   # bei chemischen Formeln
                 r'\([A-Z][A-Za-z]*(,[A-Z][A-Za-z]*(<sup>.*?</sup>|<sub>.*?</sub>|))+\)' # chemische Formel, z. B. AuPb(Pb,Sb,Bi)Te. Hier sollen keine Leerzeichen hinter die Kommata.
-			],
-			'title': [
-				r'Arsen',  # chemische Formel
-			],
-		}
-	},
+            ],
+            'title': [
+                r'Arsen',  # chemische Formel
+            ],
+        }
+    },
 
-	# Do NOT run this automatically!
-	# Recommendation: First run syntax-safe automatically, afterwards
-	# run syntax manually, carefully checking that you're not breaking
-	# anything.
-	'syntax': {
-		'regex': True,
-		'msg': {
-			'de':u'Bot: Korrigiere Wiki-Syntax',
-			'en':u'Bot: Fixing wiki syntax',
-			'fr':u'Bot: Corrige wiki-syntaxe',
-			'he':u'בוט: מתקן תחביר ויקי',
-			'ia':u'Robot: Reparation de syntaxe wiki',
-			'lt':u'robotas: Taisoma wiki sintaksė',
-			'nl':u'Bot: reparatie wikisyntaxis',
-			'pl':u'Robot poprawia wiki-składnię',
-			'pt':u'Bot: Corrigindo sintaxe wiki',
-			'sr':u'Бот: Поправка вики синтаксе',
-		},
-		'replacements': [
-			# external link in double brackets
-			(r'\[\[(?P<url>https?://[^\]]+?)\]\]',   r'[\g<url>]'),
-			# external link starting with double bracket
-			(r'\[\[(?P<url>https?://.+?)\]',   r'[\g<url>]'),
-			# external link with forgotten closing bracket
-			#(r'\[(?P<url>https?://[^\]\s]+)\r\n',  r'[\g<url>]\r\n'),
-			# external link ending with double bracket.
-			# do not change weblinks that contain wiki links inside
-			# inside the description
-			(r'\[(?P<url>https?://[^\[\]]+?)\]\](?!\])',   r'[\g<url>]'),
-			# external link and description separated by a dash.
-			# ATTENTION: while this is a mistake in most cases, there are some
-			# valid URLs that contain dashes!
-			(r'\[(?P<url>https?://[^\|\]\s]+?) *\| *(?P<label>[^\|\]]+?)\]', r'[\g<url> \g<label>]'),
-			# wiki link closed by single bracket.
-			# ATTENTION: There are some false positives, for example
-			# Brainfuck code examples or MS-DOS parameter instructions.
-			# There are also sometimes better ways to fix it than
-			# just putting an additional ] after the link.
-			(r'\[\[([^\[\]]+?)\](?!\])',  r'[[\1]]'),
-			# wiki link opened by single bracket.
-			# ATTENTION: same as above.
-			(r'(?<!\[)\[([^\[\]]+?)\]\](?!\])',  r'[[\1]]'),
-			# template closed by single bracket
-			# ATTENTION: There are some false positives, especially in
-			# mathematical context or program code.
-			(r'{{([^{}]+?)}(?!})',       r'{{\1}}'),
-		],
-		'exceptions': {
-			'inside-tags': [
-				'nowiki',
-				'comment',
-				'math',
-				'pre',
+    # Do NOT run this automatically!
+    # Recommendation: First run syntax-safe automatically, afterwards
+    # run syntax manually, carefully checking that you're not breaking
+    # anything.
+    'syntax': {
+        'regex': True,
+        'msg': {
+            'de':u'Bot: Korrigiere Wiki-Syntax',
+            'en':u'Bot: Fixing wiki syntax',
+            'fr':u'Bot: Corrige wiki-syntaxe',
+            'he':u'בוט: מתקן תחביר ויקי',
+            'ia':u'Robot: Reparation de syntaxe wiki',
+            'lt':u'robotas: Taisoma wiki sintaksė',
+            'nl':u'Bot: reparatie wikisyntaxis',
+            'pl':u'Robot poprawia wiki-składnię',
+            'pt':u'Bot: Corrigindo sintaxe wiki',
+            'sr':u'Бот: Поправка вики синтаксе',
+        },
+        'replacements': [
+            # external link in double brackets
+            (r'\[\[(?P<url>https?://[^\]]+?)\]\]',   r'[\g<url>]'),
+            # external link starting with double bracket
+            (r'\[\[(?P<url>https?://.+?)\]',   r'[\g<url>]'),
+            # external link with forgotten closing bracket
+            #(r'\[(?P<url>https?://[^\]\s]+)\r\n',  r'[\g<url>]\r\n'),
+            # external link ending with double bracket.
+            # do not change weblinks that contain wiki links inside
+            # inside the description
+            (r'\[(?P<url>https?://[^\[\]]+?)\]\](?!\])',   r'[\g<url>]'),
+            # external link and description separated by a dash.
+            # ATTENTION: while this is a mistake in most cases, there are some
+            # valid URLs that contain dashes!
+            (r'\[(?P<url>https?://[^\|\]\s]+?) *\| *(?P<label>[^\|\]]+?)\]', r'[\g<url> \g<label>]'),
+            # wiki link closed by single bracket.
+            # ATTENTION: There are some false positives, for example
+            # Brainfuck code examples or MS-DOS parameter instructions.
+            # There are also sometimes better ways to fix it than
+            # just putting an additional ] after the link.
+            (r'\[\[([^\[\]]+?)\](?!\])',  r'[[\1]]'),
+            # wiki link opened by single bracket.
+            # ATTENTION: same as above.
+            (r'(?<!\[)\[([^\[\]]+?)\]\](?!\])',  r'[[\1]]'),
+            # template closed by single bracket
+            # ATTENTION: There are some false positives, especially in
+            # mathematical context or program code.
+            (r'{{([^{}]+?)}(?!})',       r'{{\1}}'),
+        ],
+        'exceptions': {
+            'inside-tags': [
+                'nowiki',
+                'comment',
+                'math',
+                'pre',
                 'source',        # because of code examples
                 'startspace',    # because of code examples
-			],
-			'text-contains': [
-				r'http://.*?object=tx\|',               # regular dash in URL
-				r'http://.*?allmusic\.com',             # regular dash in URL
-				r'http://.*?allmovie\.com',             # regular dash in URL
-				r'http://physics.nist.gov/',            # regular dash in URL
-				r'http://www.forum-seniorenarbeit.de/', # regular dash in URL
-				r'http://kuenstlerdatenbank.ifa.de/',   # regular dash in URL
-				r'&object=med',                         # regular dash in URL
-				r'\[CDATA\['                            # lots of brackets
-			],
-		}
-	},
+            ],
+            'text-contains': [
+                r'http://.*?object=tx\|',               # regular dash in URL
+                r'http://.*?allmusic\.com',             # regular dash in URL
+                r'http://.*?allmovie\.com',             # regular dash in URL
+                r'http://physics.nist.gov/',            # regular dash in URL
+                r'http://www.forum-seniorenarbeit.de/', # regular dash in URL
+                r'http://kuenstlerdatenbank.ifa.de/',   # regular dash in URL
+                r'&object=med',                         # regular dash in URL
+                r'\[CDATA\['                            # lots of brackets
+            ],
+        }
+    },
 
-	# The same as syntax, but restricted to replacements that should
-	# be safe to run automatically.
-	'syntax-safe': {
-		'regex': True,
-		'msg': {
-			'de':u'Bot: Korrigiere Wiki-Syntax',
-			'en':u'Bot: Fixing wiki syntax',
-			'fr':u'Bot: Corrige wiki-syntaxe',
-			'he':u'בוט: מתקן תחביר ויקי',
-			'ia':u'Robot: Reparation de syntaxe wiki',
-			'lt':u'robotas: Taisoma wiki sintaksė',
-			'nl':u'Bot: reparatie wikisyntaxis',
-			'pl':u'Robot poprawia wiki-składnię',
-			'pt':u'Bot: Corrigindo sintaxe wiki',
-			'sr':u'Бот: Поправка вики синтаксе',
-		},
-		'replacements': [
-			# external link in double brackets
-			(r'\[\[(?P<url>https?://[^\]]+?)\]\]',   r'[\g<url>]'),
-			# external link starting with double bracket
-			(r'\[\[(?P<url>https?://.+?)\]',   r'[\g<url>]'),
-			# external link with forgotten closing bracket
-			#(r'\[(?P<url>https?://[^\]\s]+)\r\n',   r'[\g<url>]\r\n'),
-			# external link and description separated by a dash, with
-			# whitespace in front of the dash, so that it is clear that
-			# the dash is not a legitimate part of the URL.
-			(r'\[(?P<url>https?://[^\|\] \r\n]+?) +\| *(?P<label>[^\|\]]+?)\]', r'[\g<url> \g<label>]'),
-			# dash in external link, where the correct end of the URL can
-			# be detected from the file extension. It is very unlikely that
-			# this will cause mistakes.
-			(r'\[(?P<url>https?://[^\|\] ]+?(\.pdf|\.html|\.htm|\.php|\.asp|\.aspx|\.jsp)) *\| *(?P<label>[^\|\]]+?)\]', r'[\g<url> \g<label>]'),
-		],
+    # The same as syntax, but restricted to replacements that should
+    # be safe to run automatically.
+    'syntax-safe': {
+        'regex': True,
+        'msg': {
+            'de':u'Bot: Korrigiere Wiki-Syntax',
+            'en':u'Bot: Fixing wiki syntax',
+            'fr':u'Bot: Corrige wiki-syntaxe',
+            'he':u'בוט: מתקן תחביר ויקי',
+            'ia':u'Robot: Reparation de syntaxe wiki',
+            'lt':u'robotas: Taisoma wiki sintaksė',
+            'nl':u'Bot: reparatie wikisyntaxis',
+            'pl':u'Robot poprawia wiki-składnię',
+            'pt':u'Bot: Corrigindo sintaxe wiki',
+            'sr':u'Бот: Поправка вики синтаксе',
+        },
+        'replacements': [
+            # external link in double brackets
+            (r'\[\[(?P<url>https?://[^\]]+?)\]\]',   r'[\g<url>]'),
+            # external link starting with double bracket
+            (r'\[\[(?P<url>https?://.+?)\]',   r'[\g<url>]'),
+            # external link with forgotten closing bracket
+            #(r'\[(?P<url>https?://[^\]\s]+)\r\n',   r'[\g<url>]\r\n'),
+            # external link and description separated by a dash, with
+            # whitespace in front of the dash, so that it is clear that
+            # the dash is not a legitimate part of the URL.
+            (r'\[(?P<url>https?://[^\|\] \r\n]+?) +\| *(?P<label>[^\|\]]+?)\]', r'[\g<url> \g<label>]'),
+            # dash in external link, where the correct end of the URL can
+            # be detected from the file extension. It is very unlikely that
+            # this will cause mistakes.
+            (r'\[(?P<url>https?://[^\|\] ]+?(\.pdf|\.html|\.htm|\.php|\.asp|\.aspx|\.jsp)) *\| *(?P<label>[^\|\]]+?)\]', r'[\g<url> \g<label>]'),
+        ],
         'exceptions': {
             'inside-tags': [
                 'nowiki',
@@ -251,232 +253,232 @@
                 'startspace',    # because of code examples
             ],
         }
-	},
+    },
 
-	'case-de': { # German upper / lower case issues
-		'regex': True,
-		'msg': {
-			'de':u'Bot: Korrigiere Groß-/Kleinschreibung',
-		},
-		'replacements': [
-			(r'\batlantische(r|n|) Ozean', r'Atlantische\1 Ozean'),
-			(r'\bdeutsche(r|n|) Bundestag\b', r'Deutsche\1 Bundestag'),
-			(r'\bdeutschen Bundestags\b', r'Deutschen Bundestags'), # Aufpassen, z. B. 'deutsche Bundestagswahl'
-			(r'\bdeutsche(r|n|) Reich\b', r'Deutsche\1 Reich'),
-			(r'\bdeutschen Reichs\b', r'Deutschen Reichs'), # Aufpassen, z. B. 'deutsche Reichsgrenzen'
-			(r'\bdritte(n|) Welt(?!krieg)', r'Dritte\1 Welt'),
-			(r'\bdreißigjährige(r|n|) Krieg', r'Dreißigjährige\1 Krieg'),
-			(r'\beuropäische(n|) Gemeinschaft', r'Europäische\1 Gemeinschaft'),
-			(r'\beuropäische(n|) Kommission', r'Europäische\1 Kommission'),
-			(r'\beuropäische(n|) Parlament', r'Europäische\1 Parlament'),
-			(r'\beuropäische(n|) Union', r'Europäische\1 Union'),
-			(r'\berste(r|n|) Weltkrieg', r'Erste\1 Weltkrieg'),
-			(r'\bkalter(r|n|) Krieg', r'Kalte\1 Krieg'),
-			(r'\bpazifische(r|n|) Ozean', r'Pazifische\1 Ozean'),
-			(r'Tag der deutschen Einheit', r'Tag der Deutschen Einheit'),
-			(r'\bzweite(r|n|) Weltkrieg', r'Zweite\1 Weltkrieg'),
-		],
-		'exceptions': {
-			'inside-tags': [
-				'nowiki',
-				'comment',
-				'math',
-				'pre',
-			],
-			'text-contains': [
-				r'sic!',
-			],
-		}
-	},
+    'case-de': { # German upper / lower case issues
+        'regex': True,
+        'msg': {
+            'de':u'Bot: Korrigiere Groß-/Kleinschreibung',
+        },
+        'replacements': [
+            (r'\batlantische(r|n|) Ozean', r'Atlantische\1 Ozean'),
+            (r'\bdeutsche(r|n|) Bundestag\b', r'Deutsche\1 Bundestag'),
+            (r'\bdeutschen Bundestags\b', r'Deutschen Bundestags'), # Aufpassen, z. B. 'deutsche Bundestagswahl'
+            (r'\bdeutsche(r|n|) Reich\b', r'Deutsche\1 Reich'),
+            (r'\bdeutschen Reichs\b', r'Deutschen Reichs'), # Aufpassen, z. B. 'deutsche Reichsgrenzen'
+            (r'\bdritte(n|) Welt(?!krieg)', r'Dritte\1 Welt'),
+            (r'\bdreißigjährige(r|n|) Krieg', r'Dreißigjährige\1 Krieg'),
+            (r'\beuropäische(n|) Gemeinschaft', r'Europäische\1 Gemeinschaft'),
+            (r'\beuropäische(n|) Kommission', r'Europäische\1 Kommission'),
+            (r'\beuropäische(n|) Parlament', r'Europäische\1 Parlament'),
+            (r'\beuropäische(n|) Union', r'Europäische\1 Union'),
+            (r'\berste(r|n|) Weltkrieg', r'Erste\1 Weltkrieg'),
+            (r'\bkalter(r|n|) Krieg', r'Kalte\1 Krieg'),
+            (r'\bpazifische(r|n|) Ozean', r'Pazifische\1 Ozean'),
+            (r'Tag der deutschen Einheit', r'Tag der Deutschen Einheit'),
+            (r'\bzweite(r|n|) Weltkrieg', r'Zweite\1 Weltkrieg'),
+        ],
+        'exceptions': {
+            'inside-tags': [
+                'nowiki',
+                'comment',
+                'math',
+                'pre',
+            ],
+            'text-contains': [
+                r'sic!',
+            ],
+        }
+    },
 
-	'vonbis': {
-		'regex': True,
-		'msg': {
-			'de':u'Bot: Ersetze Binde-/Gedankenstrich durch "bis"',
-		},
-		'replacements': [
-			# Bindestrich, Gedankenstrich, Geviertstrich
-			(u'(von \d{3,4}) *(-|&ndash;|–|&mdash;|—) *(\d{3,4})', r'\1 bis \3'),
-		],
-	},
+    'vonbis': {
+        'regex': True,
+        'msg': {
+            'de':u'Bot: Ersetze Binde-/Gedankenstrich durch "bis"',
+        },
+        'replacements': [
+            # Bindestrich, Gedankenstrich, Geviertstrich
+            (u'(von \d{3,4}) *(-|&ndash;|–|&mdash;|—) *(\d{3,4})', r'\1 bis \3'),
+        ],
+    },
 
-	# some disambiguation stuff for de:
-	# python replace.py -fix:music -subcat:Album
-	'music': {
-		'regex': False,
-		'msg': {
-			'de':u'Bot: korrigiere Links auf Begriffsklärungen',
-		},
-		'replacements': [
-			(u'[[CD]]', u'[[Audio-CD|CD]]'),
-			(u'[[LP]]', u'[[Langspielplatte|LP]]'),
-			(u'[[EP]]', u'[[Extended Play|EP]]'),
-			(u'[[MC]]', u'[[Musikkassette|MC]]'),
-			(u'[[Single]]', u'[[Single (Musik)|Single]]'),
-		],
-		'exceptions': {
-			'inside-tags': [
-				'hyperlink',
-			]
-		}
-	},
+    # some disambiguation stuff for de:
+    # python replace.py -fix:music -subcat:Album
+    'music': {
+        'regex': False,
+        'msg': {
+            'de':u'Bot: korrigiere Links auf Begriffsklärungen',
+        },
+        'replacements': [
+            (u'[[CD]]', u'[[Audio-CD|CD]]'),
+            (u'[[LP]]', u'[[Langspielplatte|LP]]'),
+            (u'[[EP]]', u'[[Extended Play|EP]]'),
+            (u'[[MC]]', u'[[Musikkassette|MC]]'),
+            (u'[[Single]]', u'[[Single (Musik)|Single]]'),
+        ],
+        'exceptions': {
+            'inside-tags': [
+                'hyperlink',
+            ]
+        }
+    },
 
-	# format of dates of birth and death, for de:
-	# python replace.py -fix:datum -ref:Vorlage:Personendaten
-	'datum': {
-		'regex': True,
-		'msg': {
-			'de': u'Bot: Korrigiere Datumsformat',
-		},
-		'replacements': [
-			# space after birth sign w/ year
-			#(u'\(\*(\d{3,4})', u'(* \\1'),
-			## space after death sign w/ year
-			#(u'†(\d{3,4})', u'† \\1'),
-			#(u'&dagger;(\d{3,4})', u'† \\1'),
-			## space after birth sign w/ linked date
-			#(u'\(\*\[\[(\d)', u'(* [[\\1'),
-			## space after death sign w/ linked date
-			#(u'†\[\[(\d)', u'† [[\\1'),
-			#(u'&dagger;\[\[(\d)', u'† [[\\1'),
-			(u'\[\[(\d+\. (?:Januar|Februar|März|April|Mai|Juni|Juli|August|September|Oktober|November|Dezember)) (\d{1,4})\]\]', u'[[\\1]] [[\\2]]'),
-		],
-		'exceptions': {
-			'inside': [
-				r'[[20. Juli 1944]]',
-				r'[[17. Juni 1953]]',
-				r'[[11. September 2001]]',
-			],
-		}
-	},
+    # format of dates of birth and death, for de:
+    # python replace.py -fix:datum -ref:Vorlage:Personendaten
+    'datum': {
+        'regex': True,
+        'msg': {
+            'de': u'Bot: Korrigiere Datumsformat',
+        },
+        'replacements': [
+            # space after birth sign w/ year
+            #(u'\(\*(\d{3,4})', u'(* \\1'),
+            ## space after death sign w/ year
+            #(u'†(\d{3,4})', u'† \\1'),
+            #(u'&dagger;(\d{3,4})', u'† \\1'),
+            ## space after birth sign w/ linked date
+            #(u'\(\*\[\[(\d)', u'(* [[\\1'),
+            ## space after death sign w/ linked date
+            #(u'†\[\[(\d)', u'† [[\\1'),
+            #(u'&dagger;\[\[(\d)', u'† [[\\1'),
+            (u'\[\[(\d+\. (?:Januar|Februar|März|April|Mai|Juni|Juli|August|September|Oktober|November|Dezember)) (\d{1,4})\]\]', u'[[\\1]] [[\\2]]'),
+        ],
+        'exceptions': {
+            'inside': [
+                r'[[20. Juli 1944]]',
+                r'[[17. Juni 1953]]',
+                r'[[11. September 2001]]',
+            ],
+        }
+    },
 
-	'isbn': {
-		'regex': True,
-		'msg': {
-			'de': u'Bot: Korrigiere ISBN-Format',
-			'en': u'Robot: Fixing ISBN format',
+    'isbn': {
+        'regex': True,
+        'msg': {
+            'de': u'Bot: Korrigiere ISBN-Format',
+            'en': u'Robot: Fixing ISBN format',
                         'he': u'בוט: מתקן פורמט ISBN',
-			'es': u'Arreglando formato ISBN',
-		},
-		'replacements': [
-			# colon
-			(r'ISBN: (\d+)', r'ISBN \1'),
-			# Spaces, dashes, or dots instead of hyphens as separators,
-			# or spaces between digits and separators.
-			# Note that these regular expressions also match valid ISBNs, but
-			# these won't be changed.
-			(ur'ISBN (978|979) *[\- –\.] *(\d+) *[\- –\.] *(\d+) *[\- –\.] *(\d+) *[\- –\.] *(\d)(?!\d)', r'ISBN \1-\2-\3-\4-\5'), # ISBN13
-			(ur'ISBN (\d+) *[\- –\.] *(\d+) *[\- –\.] *(\d+) *[\- –\.] *(\d|X|x)(?!\d)', r'ISBN \1-\2-\3-\4'), # ISBN10
-		],
-		'exceptions': {
-			'inside-tags': [
-				'comment',
-			],
-			'inside': [
-				r'ISBN (\d(-?)){12}\d',    # matches valid ISBN-13s
-				r'ISBN (\d(-?)){9}[\dXx]', # matches valid ISBN-10s
-			],
-		}
-	},
+            'es': u'Arreglando formato ISBN',
+        },
+        'replacements': [
+            # colon
+            (r'ISBN: (\d+)', r'ISBN \1'),
+            # Spaces, dashes, or dots instead of hyphens as separators,
+            # or spaces between digits and separators.
+            # Note that these regular expressions also match valid ISBNs, but
+            # these won't be changed.
+            (ur'ISBN (978|979) *[\- –\.] *(\d+) *[\- –\.] *(\d+) *[\- –\.] *(\d+) *[\- –\.] *(\d)(?!\d)', r'ISBN \1-\2-\3-\4-\5'), # ISBN13
+            (ur'ISBN (\d+) *[\- –\.] *(\d+) *[\- –\.] *(\d+) *[\- –\.] *(\d|X|x)(?!\d)', r'ISBN \1-\2-\3-\4'), # ISBN10
+        ],
+        'exceptions': {
+            'inside-tags': [
+                'comment',
+            ],
+            'inside': [
+                r'ISBN (\d(-?)){12}\d',    # matches valid ISBN-13s
+                r'ISBN (\d(-?)){9}[\dXx]', # matches valid ISBN-10s
+            ],
+        }
+    },
 
-	#Corrections for Arabic Wikipedia
-	#And any Arabic wiki.
-	#python replace.py -always -start:! -fix:correct-ar
-	'correct-ar': {
-		'regex': False,
-		'msg': {
-			'ar':u'تدقيق إملائي. 88 كلمة مستهدفة حاليًا.',
-		},
-		'replacements': [
-			(u' ,', u' ،'),
-			(u' إمرأة ', u' امرأة '),
-			(u' الى ', u' إلى '),
-			(u' إسم ', u' اسم '),
-			(u' الأن ', u' الآن '),
-			(u' اول ', u' أول '),
-			(u' الة ', u' آلة '),
-			(u' فى ', u' في '),
-			(u' اثقل ', u' أثقل '),
-			(u' إبن ', u' ابن '),
-			(u' إبنة ', u' ابنة '),
-			(u' إقتصاد ', u' اقتصاد '),
-			(u' إجتماع ', u' اجتماع '),
-			(u' انجيل ', u' إنجيل '),
-			(u' اجماع ', u' إجماع '),
-			(u' امريكا ', u' أمريكا '),
-			(u' اوروبا ', u' أوروبا '),
-			(u' انجلترا ', u' إنجلترا '),
-			(u' اكتوبر ', u' أكتوبر '),
-			(u' اسرائيل ', u' إسرائيل '),
-			(u' المانيا ', u' ألمانيا '),
-			(u' ايطاليا ', u' إيطاليا '),
-			(u' ايران ', u' إيران '),
-			(u' إستخراج ', u' استخراج '),
-			(u' إستعمال ', u' استعمال '),
-			(u' إستبدال ', u' استبدال '),
-			(u' إشتراك ', u' اشتراك '),
-			(u' إستعادة ', u' استعادة '),
-			(u' إستقلال ', u' استقلال '),
-			(u' إنتقال ', u' انتقال '),
-			(u' إتحاد ', u' اتحاد '),
-			(u' املاء ', u' إملاء '),
-			(u' إستخدام ', u' استخدام '),
-			(u' أحدى ', u' إحدى '),
-			(u' لاكن ', u' لكن '),
-			(u' الاردن ', u' الأردن '),
-			(u' إثنان ', u' اثنان '),
-			(u' شيئ ', u' شيء '),
-			(u' إحتياط ', u' احتياط '),
-			(u' إقتباس ', u' اقتباس '),
-			(u' الامارات ', u' الإمارات '),
-			(u' اكثر ', u' أكثر '),
-			(u' افضل ', u' أفضل '),
-			(u' اكبر ', u' أكبر '),
-			(u' اشهر ', u' أشهر '),
-			(u' ادارة ', u' إدارة '),
-			(u' ابناء ', u' أبناء '),
-			(u' الانصار ', u'  الأنصار '),
-			(u' اشارة ', u' إشارة '),
-			(u' إقرأ ', u' اقرأ '),
-			(u' إمتياز ', u' امتياز '),
-			(u' ارق ', u' أرق '),
-			(u' أرثوذوكس ', u' أرثوذكس '),
-			(u' الأرثوذوكس ', u' الأرثوذكس '),
-			(u' أرثوذوكسية ', u' أرثوذكسية '),
-			(u' الأرثوذوكسية ', u' الأرثوذكسية '),
-			(u' الأرثوذوكسي ', u' الأرثوذكسي '),
-			(u' ارثوذوكس ', u' أرثوذكس '),
-			(u' ارثوذوكسي ', u' أرثوذكسي '),
-			(u' ارثوذوكسية ', u' أرثوذكسية '),
-			(u' الارثوذوكسية ', u' الأرثوذكسية '),
-			(u' اللة ', u' الله '),
-			(u' إختبار ', u' اختبار '),
-			(u'== روابط خارجية ==', u'== وصلات خارجية =='),
-			(u'==روابط خارجية==', u'== وصلات خارجية =='),
-			(u' ارسال ', u' إرسال '),
-			(u' إتصالات ', u' اتصالات '),
-			(u' اسامة ', u' أسامة '),
-			(u' ابراهيم ', u' إبراهيم '),
-			(u' اسماعيل ', u' إسماعيل '),
-			(u' ايوب ', u' أيوب '),
-			(u' ايمن ', u' أيمن '),
-			(u' ابو ', u' أبو '),
-			(u' ابا ', u' أبا '),
-			(u' اخو ', u' أخو '),
-			(u' اخا ', u' أخا '),
-			(u' اخي ', u' أخي '),
-			(u' احد ', u' أحد '),
-			(u' اربعاء ', u' أربعاء '),
-			(u' اهم ', u' أهم '),
-			(u' اوزبكستان ', u' أوزبكستان '),
-			(u' اذربيجان ', u' أذربيجان '),
-			(u' افغانستان ', u' أفغانستان '),
-			(u' امجد ', u' أمجد '),
-			(u' اوسط ', u' أوسط '),
-			(u' اشقر ', u' أشقر '),
-			(u' انور ', u' أنور '),
-			(u' اصعب ', u' أصعب '),
-			(u' اسهل ', u' أسهل '),
-		]
-	},
+    #Corrections for Arabic Wikipedia
+    #And any Arabic wiki.
+    #python replace.py -always -start:! -fix:correct-ar
+    'correct-ar': {
+        'regex': False,
+        'msg': {
+            'ar':u'تدقيق إملائي. 88 كلمة مستهدفة حاليًا.',
+        },
+        'replacements': [
+            (u' ,', u' ،'),
+            (u' إمرأة ', u' امرأة '),
+            (u' الى ', u' إلى '),
+            (u' إسم ', u' اسم '),
+            (u' الأن ', u' الآن '),
+            (u' اول ', u' أول '),
+            (u' الة ', u' آلة '),
+            (u' فى ', u' في '),
+            (u' اثقل ', u' أثقل '),
+            (u' إبن ', u' ابن '),
+            (u' إبنة ', u' ابنة '),
+            (u' إقتصاد ', u' اقتصاد '),
+            (u' إجتماع ', u' اجتماع '),
+            (u' انجيل ', u' إنجيل '),
+            (u' اجماع ', u' إجماع '),
+            (u' امريكا ', u' أمريكا '),
+            (u' اوروبا ', u' أوروبا '),
+            (u' انجلترا ', u' إنجلترا '),
+            (u' اكتوبر ', u' أكتوبر '),
+            (u' اسرائيل ', u' إسرائيل '),
+            (u' المانيا ', u' ألمانيا '),
+            (u' ايطاليا ', u' إيطاليا '),
+            (u' ايران ', u' إيران '),
+            (u' إستخراج ', u' استخراج '),
+            (u' إستعمال ', u' استعمال '),
+            (u' إستبدال ', u' استبدال '),
+            (u' إشتراك ', u' اشتراك '),
+            (u' إستعادة ', u' استعادة '),
+            (u' إستقلال ', u' استقلال '),
+            (u' إنتقال ', u' انتقال '),
+            (u' إتحاد ', u' اتحاد '),
+            (u' املاء ', u' إملاء '),
+            (u' إستخدام ', u' استخدام '),
+            (u' أحدى ', u' إحدى '),
+            (u' لاكن ', u' لكن '),
+            (u' الاردن ', u' الأردن '),
+            (u' إثنان ', u' اثنان '),
+            (u' شيئ ', u' شيء '),
+            (u' إحتياط ', u' احتياط '),
+            (u' إقتباس ', u' اقتباس '),
+            (u' الامارات ', u' الإمارات '),
+            (u' اكثر ', u' أكثر '),
+            (u' افضل ', u' أفضل '),
+            (u' اكبر ', u' أكبر '),
+            (u' اشهر ', u' أشهر '),
+            (u' ادارة ', u' إدارة '),
+            (u' ابناء ', u' أبناء '),
+            (u' الانصار ', u'  الأنصار '),
+            (u' اشارة ', u' إشارة '),
+            (u' إقرأ ', u' اقرأ '),
+            (u' إمتياز ', u' امتياز '),
+            (u' ارق ', u' أرق '),
+            (u' أرثوذوكس ', u' أرثوذكس '),
+            (u' الأرثوذوكس ', u' الأرثوذكس '),
+            (u' أرثوذوكسية ', u' أرثوذكسية '),
+            (u' الأرثوذوكسية ', u' الأرثوذكسية '),
+            (u' الأرثوذوكسي ', u' الأرثوذكسي '),
+            (u' ارثوذوكس ', u' أرثوذكس '),
+            (u' ارثوذوكسي ', u' أرثوذكسي '),
+            (u' ارثوذوكسية ', u' أرثوذكسية '),
+            (u' الارثوذوكسية ', u' الأرثوذكسية '),
+            (u' اللة ', u' الله '),
+            (u' إختبار ', u' اختبار '),
+            (u'== روابط خارجية ==', u'== وصلات خارجية =='),
+            (u'==روابط خارجية==', u'== وصلات خارجية =='),
+            (u' ارسال ', u' إرسال '),
+            (u' إتصالات ', u' اتصالات '),
+            (u' اسامة ', u' أسامة '),
+            (u' ابراهيم ', u' إبراهيم '),
+            (u' اسماعيل ', u' إسماعيل '),
+            (u' ايوب ', u' أيوب '),
+            (u' ايمن ', u' أيمن '),
+            (u' ابو ', u' أبو '),
+            (u' ابا ', u' أبا '),
+            (u' اخو ', u' أخو '),
+            (u' اخا ', u' أخا '),
+            (u' اخي ', u' أخي '),
+            (u' احد ', u' أحد '),
+            (u' اربعاء ', u' أربعاء '),
+            (u' اهم ', u' أهم '),
+            (u' اوزبكستان ', u' أوزبكستان '),
+            (u' اذربيجان ', u' أذربيجان '),
+            (u' افغانستان ', u' أفغانستان '),
+            (u' امجد ', u' أمجد '),
+            (u' اوسط ', u' أوسط '),
+            (u' اشقر ', u' أشقر '),
+            (u' انور ', u' أنور '),
+            (u' اصعب ', u' أصعب '),
+            (u' اسهل ', u' أسهل '),
+        ]
+    },
 }





More information about the Pywikipedia-l mailing list