File: docbook_internLinks.py

package info (click to toggle)
libreoffice 1%3A3.5.4%2Bdfsg2-0%2Bdeb7u4
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 2,691,824 kB
  • sloc: cpp: 4,679,091; java: 395,153; xml: 170,215; ansic: 99,333; perl: 60,572; python: 27,776; sh: 17,789; makefile: 8,738; yacc: 8,219; cs: 6,648; asm: 3,257; objc: 2,349; lex: 2,103; pascal: 890; awk: 758; csh: 247; lisp: 115; php: 104; sed: 9
file content (76 lines) | stat: -rw-r--r-- 2,186 bytes parent folder | download | duplicates (16)
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()