#!/usr/bin/python
"""
Just a hack to convert rst to xml and then docbook .
May not containt all the required elements of a docbook .
Just done to make it run for the specific rst for our
sees documentation.
"""
import xml.etree.ElementTree as ET
from lxml import etree as ET2
import os
import re
import subprocess
import os
import pkg_resources
import glob, os, re, sys
names = glob.glob('/home/hg/repos/SEES-hacks/temp/ch*.xml')
"""
chapterno=0
def convert2xml(file):
# print folder,subfolder,file
global chapterno
name=file.split('/')[-1]
name=str(chapterno)+name.split('.')[0]
# full_file=os.path.join(folder,file)
# if file.endswith('.rst'):
print file
xml_file=name+'.xml'
command="rst2xml.py %s > %s" %(file , xml_file)
print command
a=subprocess.Popen(command , shell=True)
def walk(repo):
global chapterno
mainfolder='/home/amit/sttp_latest/'
for readline in open('index.config','r').readlines():
chapterno+=1
filename=mainfolder+readline
convert2xml(filename)
"""
def convert2docbook(name ,xml_string):
"""changing tags to convert the xml to docbook"""
xml_string=re.sub('<strong>','<emphasis role="strong">', xml_string)
xml_string=re.sub('</strong>' ,'</emphasis>',xml_string)
xml_string=re.sub('<literal_block xml:space="preserve">','<literal_block xml:space="preserve">\n',xml_string)
xml_string=re.sub('<literal_block xml:space="preserve">','<programlisting>',xml_string)
xml_string=re.sub('</literal_block>','</programlisting>',xml_string)
xml_string=re.sub('<paragraph>' ,'<para>',xml_string)
xml_string=re.sub('</paragraph>' ,'</para>',xml_string)
xml_string=re.sub('<bullet_list bullet="[-*+]">','<itemizedlist mark="*">',xml_string,)
xml_string=re.sub('</bullet_list>','</itemizedlist>',xml_string)
xml_string=re.sub('<list_item>','<listitem>',xml_string)
xml_string=re.sub('</list_item>','</listitem>',xml_string)
xml_string=re.sub('<enumerated_list enumtype="arabic" prefix="." suffix=".">', '<orderedlist numeration="arabic">',xml_string)
xml_string=re.sub('<enumerated_list enumtype="arabic" prefix="" suffix=".">', '<orderedlist numeration="arabic">',xml_string)
xml_string=re.sub('</enumerated_list>', '</orderedlist>',xml_string)
xml_string=re.sub('<line_block>', '',xml_string)
xml_string=re.sub('</line_block>', '',xml_string)
xml_string=re.sub('<line>', '',xml_string)
xml_string=re.sub('</line>', '',xml_string)
xml_string=re.sub('<block_quote>', '',xml_string)
xml_string=re.sub('</block_quote>', '',xml_string)
xml_string=re.sub('<title_reference>', '',xml_string)
xml_string=re.sub('</title_reference>', '',xml_string)
xml_string=re.sub('<definition>', '',xml_string)
xml_string=re.sub('</definition>', '',xml_string)
xml_string=re.sub('<definition_list_item>', '',xml_string)
xml_string=re.sub('</definition_list_item>', '',xml_string)
xml_string=re.sub('<definition_list>', '',xml_string)
xml_string=re.sub('</definition_list>', '',xml_string)
xml_string=re.sub('<term>', '',xml_string)
xml_string=re.sub('</term>', '',xml_string)
xml_string=re.sub('<entry>', '',xml_string)
xml_string=re.sub('</entry>', '',xml_string)
xml_string=re.sub('<row>', '',xml_string)
xml_string=re.sub('</row>', '',xml_string)
xml_string=re.sub('<tbody>', '',xml_string)
xml_string=re.sub('</tbody>', '',xml_string)
xml_string=re.sub('<table>', '',xml_string)
xml_string=re.sub('</table>', '',xml_string)
xml_string=re.sub('<thead>', '',xml_string)
xml_string=re.sub('</thead>', '',xml_string)
xml_string=re.sub('<tgroup.*"/>', '',xml_string)
xml_string=re.sub('</tgroup>', '',xml_string)
chapter= ET.Element("chapter")
article=ET.SubElement(chapter,"article")
articleinfo=ET.SubElement(article,"articleinfo")
try:
# print name
tree = ET.fromstring(xml_string)
except:
pass
#print name
# tree=ET2.fromstring(xml_string)
#print "xml_string problem"
# print "fromstring"
try:
title= ET.SubElement(articleinfo,"title")
title_element=tree.find('title')
title.text=title_element.text
article.insert(1,tree)
except:
if name not in ('ch12index.xml',):
title= ET.SubElement(articleinfo,"title")
section_element=tree.find('section')
title_element=section_element.find('title')
title.text=title_element.text
article.insert(1,tree)
xml_string=ET.tostring(chapter)
xml_string=xml_string.replace('\\',' ')
xml_string=re.sub('<document[-A-Za-z=/_" .0-9:]*>' ,'',xml_string)
xml_string=re.sub('</document>' ,'',xml_string)
# xml_string=re.sub('</section></section></section>' ,'</section></section>',xml_string)
return xml_string
if __name__=='__main__':
for name in names:
#print name
#xml_string=open(name,'r').read()
xml_string=open(name,'r').read()
xml_string=convert2docbook(name,xml_string)
docbook_file=name.split('.')[0]+'.docbook'
f=open(docbook_file,'w')
try:
f.write(xml_string)
except:
pass