Revision: 5437
Author: valhallasw
Date: 2008-05-24 00:55:14 +0000 (Sat, 24 May 2008)
Log Message:
-----------
Refactored interwikiFormat's sort function into interwikiSort
Modified Paths:
--------------
trunk/pywikipedia/wikipedia.py
Modified: trunk/pywikipedia/wikipedia.py
===================================================================
--- trunk/pywikipedia/wikipedia.py 2008-05-23 20:10:36 UTC (rev 5436)
+++ trunk/pywikipedia/wikipedia.py 2008-05-24 00:55:14 UTC (rev 5437)
@@ -78,6 +78,8 @@
getLanguageLinks
interwikiFormat(links): convert a dict of interlanguage links to text
(using same dict format as getLanguageLinks)
+ interwikiSort(sites, inSite): sorts a list of sites according to interwiki
+ sort preference of inSite.
url2link: Convert urlname of a wiki page into interwiki link format.
Wikitext manipulation functions for category links:
@@ -3348,25 +3350,9 @@
insite = getSite()
if not links:
return ''
+
+ ar = interwikiSort(links.keys(), insite)
s = []
- ar = links.keys()
- ar.sort()
- putfirst = insite.interwiki_putfirst()
- if putfirst:
- #In this case I might have to change the order
- ar2 = []
- for code in putfirst:
- # The code may not exist in this family?
- if code in insite.family.obsolete:
- code = insite.family.obsolete[code]
- if code in insite.validLanguageLinks():
- site = insite.getSite(code = code)
- if site in ar:
- del ar[ar.index(site)]
- ar2 = ar2 + [site]
- ar = ar2 + ar
- if insite.interwiki_putfirst_doubled(ar):
- ar = insite.interwiki_putfirst_doubled(ar) + ar
for site in ar:
try:
link = links[site].aslink(forceInterwiki=True)
@@ -3379,9 +3365,35 @@
sep = u'\r\n'
s=sep.join(s) + u'\r\n'
return s
+
+# Sort sites according to local interwiki sort logic
+def interwikiSort(sites, insite = None):
+ if insite is None:
+ insite = getSite()
+ if not sites:
+ return []
+ sites.sort()
+ putfirst = insite.interwiki_putfirst()
+ if putfirst:
+ #In this case I might have to change the order
+ firstsites = []
+ for code in putfirst:
+ # The code may not exist in this family?
+ if code in insite.family.obsolete:
+ code = insite.family.obsolete[code]
+ if code in insite.validLanguageLinks():
+ site = insite.getSite(code = code)
+ if site in sites:
+ del sites[sites.index(site)]
+ firstsites = firstsites + [site]
+ sites = firstsites + sites
+ if insite.interwiki_putfirst_doubled(sites): #some implementations return False
+ sites = insite.interwiki_putfirst_doubled(sites) + sites
+
+ return sites
+
# Wikitext manipulation functions dealing with category links
-
def getCategoryLinks(text, site):
import catlib
"""Return a list of category links found in text.