SEESenv/scripts/rst2docbook.py
author amit@thunder
Sun, 21 Feb 2010 13:14:37 +0530
changeset 6 1ce9b33fb6ff
parent 5 c9c9819cd5e5
child 26 1846ab4ebdda
permissions -rw-r--r--
sorted the problem related to paths

#!/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
import os 
import re
import subprocess
import os
import pkg_resources
import glob, os, re, sys
names = glob.glob('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(xml_string):
	""" convert to docbook from xml converted using rst2xml using regex replacements """		
	xml_string=re.sub('<strong>','<emphasis role="strong">', 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('</strong>' ,'</emphasis>',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>', '</orderedlist>',xml_string)
	xml_string=re.sub('<block_quote>', '',xml_string)	
	xml_string=re.sub('</block_quote>', '',xml_string) 	
	xml_string=re.sub('<definition_list>', '',xml_string)	
	xml_string=re.sub('</definition_list>', '',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 cols="[1-90]*"><colspec colwidth="[1-90]*"/><colspec colwidth="[1-90]*"/><colspec colwidth="[1-90]"/>', '',xml_string)
#	xml_string=re.sub('</tgroup', '',xml_string)	
	chapter= ET.Element("chapter")
	article=ET.SubElement(chapter,"article")
	articleinfo=ET.SubElement(article,"articleinfo")
		
	try:	
		tree = ET.fromstring(xml_string)
	except:
		print "xml_string problem"	
	#	print "fromstring"	
	try:    
	        title= ET.SubElement(articleinfo,"title") 
		title.text=tree.items()[1][1]
	except:
	        pass    
	article.insert(1,tree)
	xml_string=ET.tostring(chapter)
	xml_string=re.sub('<document [A-Za-z=/_."]*>' ,'',xml_string)
	xml_string=re.sub('</document>' ,'',xml_string)
	return xml_string

    




if __name__=='__main__':
	for name in names:
		#print name        
		xml_string=open(name,'r').read()
		#xml_string=open('ch9Using_Linux_Tools.xml','r').read()
		xml_string=convert2docbook(xml_string)
		docbook_file=name.split('.')[0]+'.docbook'
		f=open(docbook_file,'w')
		try:        
		    f.write(xml_string)
		except:
		        pass