|
Packit |
971217 |
# -*- Mode: Python -*-
|
|
Packit |
971217 |
# vi:si:et:sw=4:sts=4:ts=4
|
|
Packit |
971217 |
|
|
Packit |
971217 |
"""
|
|
Packit |
971217 |
Insert includes for the element-*-details.xml files into the related docbook
|
|
Packit |
971217 |
files.
|
|
Packit |
971217 |
"""
|
|
Packit |
971217 |
|
|
Packit |
971217 |
from __future__ import print_function, unicode_literals
|
|
Packit |
971217 |
|
|
Packit |
971217 |
import codecs
|
|
Packit |
971217 |
import glob
|
|
Packit |
971217 |
import os
|
|
Packit |
971217 |
import sys
|
|
Packit |
971217 |
|
|
Packit |
971217 |
import xml.dom.minidom
|
|
Packit |
971217 |
|
|
Packit |
971217 |
def patch(related, details):
|
|
Packit |
971217 |
try:
|
|
Packit |
971217 |
doc = xml.dom.minidom.parse(related)
|
|
Packit |
971217 |
except IOError:
|
|
Packit |
971217 |
return
|
|
Packit |
971217 |
|
|
Packit |
971217 |
# find the insertion point
|
|
Packit |
971217 |
elem = None
|
|
Packit |
971217 |
for e in doc.childNodes:
|
|
Packit |
971217 |
if e.nodeType == e.ELEMENT_NODE and e.localName == 'refentry':
|
|
Packit |
971217 |
elem = e
|
|
Packit |
971217 |
break
|
|
Packit |
971217 |
if elem == None:
|
|
Packit |
971217 |
return
|
|
Packit |
971217 |
|
|
Packit |
971217 |
elem2 = None
|
|
Packit |
971217 |
for e in elem.childNodes:
|
|
Packit |
971217 |
if e.nodeType == e.ELEMENT_NODE and e.localName == 'refsect1':
|
|
Packit |
971217 |
id = e.getAttributeNode('id')
|
|
Packit |
971217 |
role = e.getAttributeNode('role')
|
|
Packit |
971217 |
if id and id.nodeValue.endswith('.description') and role and role.nodeValue == 'desc':
|
|
Packit |
971217 |
elem2 = e
|
|
Packit |
971217 |
break
|
|
Packit |
971217 |
if elem2 == None:
|
|
Packit |
971217 |
return
|
|
Packit |
971217 |
|
|
Packit |
971217 |
# insert include
|
|
Packit |
971217 |
include = doc.createElement('include')
|
|
Packit |
971217 |
include.setAttribute('xmlns', 'http://www.w3.org/2003/XInclude')
|
|
Packit |
971217 |
include.setAttribute('href', details)
|
|
Packit |
971217 |
fallback = doc.createElement('fallback')
|
|
Packit |
971217 |
fallback.setAttribute('xmlns', 'http://www.w3.org/2003/XInclude')
|
|
Packit |
971217 |
include.appendChild(fallback)
|
|
Packit |
971217 |
elem2.appendChild(include)
|
|
Packit |
971217 |
|
|
Packit |
971217 |
# store patched file
|
|
Packit |
971217 |
result = codecs.open(related, mode="w", encoding="utf-8")
|
|
Packit |
971217 |
#result = open(related, "wb")
|
|
Packit |
971217 |
doc.writexml(result)
|
|
Packit |
971217 |
result.close()
|
|
Packit |
971217 |
|
|
Packit |
971217 |
def main():
|
|
Packit |
971217 |
if not len(sys.argv) == 2:
|
|
Packit |
971217 |
sys.stderr.write('Please specify the xml/ dir')
|
|
Packit |
971217 |
sys.exit(1)
|
|
Packit |
971217 |
|
|
Packit |
971217 |
xmldir = sys.argv[1]
|
|
Packit |
971217 |
|
|
Packit |
971217 |
# parse all *-details.xml files and patch includes into the corresponding
|
|
Packit |
971217 |
# xml files
|
|
Packit |
971217 |
for details in glob.glob("%s/element-*-details.xml" % xmldir):
|
|
Packit |
971217 |
patch (details.replace("-details", ""), os.path.basename(details))
|
|
Packit |
971217 |
|
|
Packit |
971217 |
main()
|