summaryrefslogtreecommitdiff
path: root/helpcontent2/wiki-to-help/mwlib_mods/docbook_internLinks.py
blob: 2d22edd1646c974dd1361c91de1266999d7bde35 (plain)
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()