1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
"""
This enables the conversion of article links to internal links within the docbook output.
Usage:
import docbook_internLinks
docbook_internLinks.apply()
Requires:
docbook_grammar
Author: Timo Richter
"""
## Set up nuwiki.adapt
import mwlib.nuwiki
class MyAdapt(mwlib.nuwiki.adapt):
def getParsedArticle(self, title, revision=None):
""" Add the original title to the attributes of each article """
a = super(MyAdapt,self).getParsedArticle(title,revision)
if a:
a.title = title
return a
def getURL(self, name, revision=None, defaultns=None):
""" Returns raw link targets """
return name
def setupAdapt():
mwlib.nuwiki.adapt = MyAdapt
## Set up docbookwriter
import mwlib.docbookwriter
#import lxml.etree
Element = mwlib.docbookwriter.Element
SubElement = mwlib.docbookwriter.SubElement
class MyDocBookWriter(mwlib.docbookwriter.DocBookWriter):
def getTargetId(self,title):
""" Transform "The first article" to "The_first_article" """
# See mwlib.zipwiki.normalize_title()
return title.replace(" ","_")
def dbwriteArticle(self, a):
"""
Add id-attribute with original title to all articles.
<article id="a.title">
"""
e = super(MyDocBookWriter,self).dbwriteArticle(a)
targetId = self.getTargetId(a.title)
e.set("id",targetId)
return e
def dbwriteArticleLink(self, obj):
a = Element("link")
if obj.target:
a.set("linkend", obj.target)
if not obj.children:
a.text = obj.target
return a
#dbwriteLink = dbwriteURL
#dbwriteNamedURL = dbwriteURL
#dbwriteSpecialLink = dbwriteURL
#dbwriteCategoryLink = dbwriteURL
#dbwriteLangLink = dbwriteURL
#dbwriteArticleLink = dbwriteLink
#dbwriteLangLink = dbwriteLink # FIXME
#dbwriteNamespaceLink = dbwriteLink# FIXME
#dbwriteInterwikiLink = dbwriteLink# FIXME
#dbwriteSpecialLink = dbwriteLink# FIXME
def setupDocBookWriter():
mwlib.docbookwriter.DocBookWriter = MyDocBookWriter
def apply():
setupAdapt()
#setupGrammar()
setupDocBookWriter()
|