SEESenv/scripts/rst2docbook.py
changeset 46 7f011b42609c
parent 41 e54725be4df6
child 49 3b5f1341d6c6
equal deleted inserted replaced
45:b5bff924ef69 46:7f011b42609c
    11 import re
    11 import re
    12 import subprocess
    12 import subprocess
    13 import os
    13 import os
    14 import pkg_resources
    14 import pkg_resources
    15 import glob, os, re, sys
    15 import glob, os, re, sys
       
    16 from docbook import Writer
       
    17 from docutils.core import publish_file 
       
    18 
       
    19 #repo="/home/hg/repos/test_review/sttp/"
    16 repo=sys.argv[1]
    20 repo=sys.argv[1]
    17 names = glob.glob(os.path.join(repo , 'ch*.xml'))
    21 #names = glob.glob(os.path.join(repo , '*.rst'))
    18 """
    22 tmp_folder="/home/hg/repos/SEES-hacks/temp/"
       
    23 
       
    24 
    19 chapterno=0
    25 chapterno=0
    20 
    26 
    21 def convert2xml(file):
    27 # def convert2xml(file):
    22 #    print folder,subfolder,file
    28 # #    print folder,subfolder,file
       
    29 #     global chapterno
       
    30 #     name=file.split('/')[-1]
       
    31 #     name=str(chapterno)+name.split('.')[0]
       
    32 # #    full_file=os.path.join(folder,file)    
       
    33 # #    if file.endswith('.rst'):    
       
    34 #     print file	    
       
    35 #     xml_file=name+'.xml'        
       
    36 #     command="rst2xml.py %s > %s" %(file , xml_file)
       
    37 #     print command        
       
    38 #     a=subprocess.Popen(command , shell=True)
       
    39 	   	
       
    40 
       
    41 
       
    42 # def walk(repo):
       
    43 #     global chapterno
       
    44 #     mainfolder='/home/amit/sttp_latest/'    
       
    45 #     for readline in open('index.config','r').readlines():
       
    46 #         chapterno+=1		
       
    47 #         filename=mainfolder+readline
       
    48 #         convert2xml(filename)
       
    49 
       
    50 
       
    51 
       
    52 # def convert2docbook(name ,xml_string):
       
    53 #     """changing tags to convert the xml to docbook"""	
       
    54         
       
    55 #     xml_string=re.sub('<strong>','<emphasis role="strong">', xml_string)   
       
    56 #     xml_string=re.sub('</strong>' ,'</emphasis>',xml_string)   
       
    57 #     xml_string=re.sub('<literal_block xml:space="preserve">','<literal_block xml:space="preserve">\n',xml_string)	
       
    58 #     xml_string=re.sub('<literal_block xml:space="preserve">','<programlisting>',xml_string)
       
    59 #     xml_string=re.sub('</literal_block>','</programlisting>',xml_string)
       
    60 #     xml_string=re.sub('<paragraph>' ,'<para>',xml_string)
       
    61 #     xml_string=re.sub('</paragraph>' ,'</para>',xml_string)  
       
    62     
       
    63 #     xml_string=re.sub('<bullet_list bullet="[-*+]">','<itemizedlist mark="*">',xml_string,)
       
    64 #     xml_string=re.sub('</bullet_list>','</itemizedlist>',xml_string)
       
    65 #     xml_string=re.sub('<list_item>','<listitem>',xml_string)	
       
    66 #     xml_string=re.sub('</list_item>','</listitem>',xml_string)	
       
    67 #     xml_string=re.sub('<enumerated_list enumtype="arabic" prefix="." suffix=".">', '<orderedlist numeration="arabic">',xml_string)
       
    68 #     xml_string=re.sub('<enumerated_list enumtype="arabic" prefix="" suffix=".">',  '<orderedlist numeration="arabic">',xml_string)  
       
    69 #     xml_string=re.sub('</enumerated_list>', '</orderedlist>',xml_string)
       
    70 #     xml_string=re.sub('<line_block>', '',xml_string)
       
    71 #     xml_string=re.sub('</line_block>', '',xml_string)
       
    72 #     xml_string=re.sub('<line>', '',xml_string)
       
    73 #     xml_string=re.sub('</line>', '',xml_string)   
       
    74 #     xml_string=re.sub('<block_quote>', '',xml_string)
       
    75 #     xml_string=re.sub('</block_quote>', '',xml_string)
       
    76 #     xml_string=re.sub('<title_reference>', '',xml_string)
       
    77 #     xml_string=re.sub('</title_reference>', '',xml_string)	
       
    78 #     xml_string=re.sub('<definition>', '',xml_string)
       
    79 #     xml_string=re.sub('</definition>', '',xml_string)
       
    80 #     xml_string=re.sub('<definition_list_item>', '',xml_string)	
       
    81 #     xml_string=re.sub('</definition_list_item>', '',xml_string)
       
    82 #     xml_string=re.sub('<definition_list>', '',xml_string)	
       
    83 #     xml_string=re.sub('</definition_list>', '',xml_string)	
       
    84 #     xml_string=re.sub('<term>', '',xml_string)
       
    85 #     xml_string=re.sub('</term>', '',xml_string)
       
    86 #     xml_string=re.sub('<entry>', '',xml_string)	
       
    87 #     xml_string=re.sub('</entry>', '',xml_string) 	
       
    88 #     xml_string=re.sub('<row>', '',xml_string)	
       
    89 #     xml_string=re.sub('</row>', '',xml_string)	
       
    90 #     xml_string=re.sub('<tbody>', '',xml_string)	
       
    91 #     xml_string=re.sub('</tbody>', '',xml_string)	
       
    92 #     xml_string=re.sub('<table>', '',xml_string)			
       
    93 #     xml_string=re.sub('</table>', '',xml_string)	
       
    94 #     xml_string=re.sub('<thead>', '',xml_string)	
       
    95 #     xml_string=re.sub('</thead>', '',xml_string)	
       
    96     
       
    97 #     xml_string=re.sub('<tgroup.*"/>', '',xml_string)
       
    98 #     xml_string=re.sub('</tgroup>', '',xml_string)	
       
    99 #     chapter= ET.Element("chapter")
       
   100 #     article=ET.SubElement(chapter,"article")
       
   101 #     articleinfo=ET.SubElement(article,"articleinfo")
       
   102 		
       
   103 #     try:	
       
   104     
       
   105 # #        print name    
       
   106 #         tree = ET.fromstring(xml_string)
       
   107 #     except:
       
   108 #         pass        
       
   109 #         #print name        
       
   110                
       
   111 #       #  tree=ET2.fromstring(xml_string)    
       
   112 #         #print "xml_string problem"	
       
   113         
       
   114 #     #   print "fromstring"	
       
   115 #     try:    
       
   116 #         title= ET.SubElement(articleinfo,"title") 
       
   117 #         title_element=tree.find('title')
       
   118 #         title.text=title_element.text
       
   119 #         article.insert(1,tree)	
       
   120 #     except:
       
   121 #         if name not in ('ch12index.xml',):        
       
   122 #             title= ET.SubElement(articleinfo,"title") 
       
   123 #             section_element=tree.find('section')
       
   124 #             title_element=section_element.find('title')
       
   125 #             title.text=title_element.text
       
   126 #             article.insert(1,tree)                
       
   127             
       
   128 #     xml_string=ET.tostring(chapter)
       
   129 #     xml_string=xml_string.replace('\\',' ')    
       
   130 #     xml_string=re.sub('<document[-A-Za-z=/_" .0-9:]*>' ,'',xml_string)
       
   131 #     xml_string=re.sub('</document>' ,'',xml_string)
       
   132 # #    xml_string=re.sub('</section></section></section>' ,'</section></section>',xml_string)    
       
   133 #     return xml_string
       
   134 
       
   135 def convert2docbook(file_name):
       
   136     global chapterno    
       
   137     file_name=file_name.split()[0]
       
   138     name=file_name.split('/')[-1]
       
   139    
       
   140     xml_file_temp='/'.join(file_name.split('/')[:-2])
       
   141      
       
   142     name='ch'+str(chapterno)+name.split('.')[0]
       
   143     docbook_file=tmp_folder+name+'.docbook'
       
   144     print docbook_file   
       
   145     writer=Writer()
       
   146 #    try:    
       
   147     publish_file(source_path=file_name, destination_path=docbook_file,parser_name='restructuredtext', writer=writer) 
       
   148 #    except :
       
   149 #        pass    
       
   150     
       
   151 
       
   152 
       
   153 
       
   154 
       
   155 
       
   156 
       
   157 
       
   158         
       
   159     # for name in names:
       
   160            
       
   161     # #print name        
       
   162     # #xml_string=open(name,'r').read()
       
   163     #     xml_string=open(name,'r').read()
       
   164     #     xml_string=convert2docbook(name,xml_string)
       
   165     #     docbook_file=name.split('.')[0]+'.docbook'
       
   166     #     f=open(docbook_file,'w')
       
   167     #     try:        
       
   168     #             f.write(xml_string)
       
   169     #     except:
       
   170     #             pass
       
   171 def main():
       
   172     
    23     global chapterno
   173     global chapterno
    24     name=file.split('/')[-1]
   174 #    mainfolder='/home/hg/repos/sttp/'    
    25     name=str(chapterno)+name.split('.')[0]
   175     for readline in open('/home/hg/repos/SEES-hacks/index.config','r').readlines():
    26 #    full_file=os.path.join(folder,file)    
       
    27 #    if file.endswith('.rst'):    
       
    28     print file	    
       
    29     xml_file=name+'.xml'        
       
    30     command="rst2xml.py %s > %s" %(file , xml_file)
       
    31     print command        
       
    32     a=subprocess.Popen(command , shell=True)
       
    33 	   	
       
    34 
       
    35 
       
    36 def walk(repo):
       
    37     global chapterno
       
    38     mainfolder='/home/amit/sttp_latest/'    
       
    39     for readline in open('index.config','r').readlines():
       
    40         chapterno+=1		
   176         chapterno+=1		
    41         filename=mainfolder+readline
   177         filename=repo+readline
    42         convert2xml(filename)
   178         print filename        
    43 
   179         convert2docbook(filename)
    44 
       
    45 """
       
    46 def convert2docbook(name ,xml_string):
       
    47     """changing tags to convert the xml to docbook"""	
       
    48         
       
    49     xml_string=re.sub('<strong>','<emphasis role="strong">', xml_string)   
       
    50     xml_string=re.sub('</strong>' ,'</emphasis>',xml_string)   
       
    51     xml_string=re.sub('<literal_block xml:space="preserve">','<literal_block xml:space="preserve">\n',xml_string)	
       
    52     xml_string=re.sub('<literal_block xml:space="preserve">','<programlisting>',xml_string)
       
    53     xml_string=re.sub('</literal_block>','</programlisting>',xml_string)
       
    54     xml_string=re.sub('<paragraph>' ,'<para>',xml_string)
       
    55     xml_string=re.sub('</paragraph>' ,'</para>',xml_string)  
       
    56     
       
    57     xml_string=re.sub('<bullet_list bullet="[-*+]">','<itemizedlist mark="*">',xml_string,)
       
    58     xml_string=re.sub('</bullet_list>','</itemizedlist>',xml_string)
       
    59     xml_string=re.sub('<list_item>','<listitem>',xml_string)	
       
    60     xml_string=re.sub('</list_item>','</listitem>',xml_string)	
       
    61     xml_string=re.sub('<enumerated_list enumtype="arabic" prefix="." suffix=".">', '<orderedlist numeration="arabic">',xml_string)
       
    62     xml_string=re.sub('<enumerated_list enumtype="arabic" prefix="" suffix=".">',  '<orderedlist numeration="arabic">',xml_string)  
       
    63     xml_string=re.sub('</enumerated_list>', '</orderedlist>',xml_string)
       
    64     xml_string=re.sub('<line_block>', '',xml_string)
       
    65     xml_string=re.sub('</line_block>', '',xml_string)
       
    66     xml_string=re.sub('<line>', '',xml_string)
       
    67     xml_string=re.sub('</line>', '',xml_string)   
       
    68     xml_string=re.sub('<block_quote>', '',xml_string)
       
    69     xml_string=re.sub('</block_quote>', '',xml_string)
       
    70     xml_string=re.sub('<title_reference>', '',xml_string)
       
    71     xml_string=re.sub('</title_reference>', '',xml_string)	
       
    72     xml_string=re.sub('<definition>', '',xml_string)
       
    73     xml_string=re.sub('</definition>', '',xml_string)
       
    74     xml_string=re.sub('<definition_list_item>', '',xml_string)	
       
    75     xml_string=re.sub('</definition_list_item>', '',xml_string)
       
    76     xml_string=re.sub('<definition_list>', '',xml_string)	
       
    77     xml_string=re.sub('</definition_list>', '',xml_string)	
       
    78     xml_string=re.sub('<term>', '',xml_string)
       
    79     xml_string=re.sub('</term>', '',xml_string)
       
    80     xml_string=re.sub('<entry>', '',xml_string)	
       
    81     xml_string=re.sub('</entry>', '',xml_string) 	
       
    82     xml_string=re.sub('<row>', '',xml_string)	
       
    83     xml_string=re.sub('</row>', '',xml_string)	
       
    84     xml_string=re.sub('<tbody>', '',xml_string)	
       
    85     xml_string=re.sub('</tbody>', '',xml_string)	
       
    86     xml_string=re.sub('<table>', '',xml_string)			
       
    87     xml_string=re.sub('</table>', '',xml_string)	
       
    88     xml_string=re.sub('<thead>', '',xml_string)	
       
    89     xml_string=re.sub('</thead>', '',xml_string)	
       
    90     
       
    91     xml_string=re.sub('<tgroup.*"/>', '',xml_string)
       
    92     xml_string=re.sub('</tgroup>', '',xml_string)	
       
    93     chapter= ET.Element("chapter")
       
    94     article=ET.SubElement(chapter,"article")
       
    95     articleinfo=ET.SubElement(article,"articleinfo")
       
    96 		
       
    97     try:	
       
    98     
       
    99 #        print name    
       
   100         tree = ET.fromstring(xml_string)
       
   101     except:
       
   102         pass        
       
   103         #print name        
       
   104                
       
   105       #  tree=ET2.fromstring(xml_string)    
       
   106         #print "xml_string problem"	
       
   107         
       
   108     #   print "fromstring"	
       
   109     try:    
       
   110         title= ET.SubElement(articleinfo,"title") 
       
   111         title_element=tree.find('title')
       
   112         title.text=title_element.text
       
   113         article.insert(1,tree)	
       
   114     except:
       
   115         if name not in ('ch12index.xml',):        
       
   116             title= ET.SubElement(articleinfo,"title") 
       
   117             section_element=tree.find('section')
       
   118             title_element=section_element.find('title')
       
   119             title.text=title_element.text
       
   120             article.insert(1,tree)                
       
   121             
       
   122     xml_string=ET.tostring(chapter)
       
   123     xml_string=xml_string.replace('\\',' ')    
       
   124     xml_string=re.sub('<document[-A-Za-z=/_" .0-9:]*>' ,'',xml_string)
       
   125     xml_string=re.sub('</document>' ,'',xml_string)
       
   126 #    xml_string=re.sub('</section></section></section>' ,'</section></section>',xml_string)    
       
   127     return xml_string
       
   128 
       
   129     
       
   130 
       
   131 
       
   132 
       
   133 
   180 
   134 if __name__=='__main__':
   181 if __name__=='__main__':
   135         
   182     main()
   136     for name in names:
   183 
   137            
   184 
   138     #print name        
   185 
   139     #xml_string=open(name,'r').read()
   186 
   140         xml_string=open(name,'r').read()
   187 
   141         xml_string=convert2docbook(name,xml_string)
   188 
   142         docbook_file=name.split('.')[0]+'.docbook'
   189 
   143         f=open(docbook_file,'w')
   190 
   144         try:        
   191 
   145 	        f.write(xml_string)
   192 
   146         except:
   193 
   147 	        pass
   194 
   148 
   195 
   149 
   196 
   150 
   197 
   151 
   198 
   152 
   199 
   153 
   200 
   154 
   201 
   155 
   202 
   156 
   203 
   157 
   204 
   158 
   205 
   159 
   206 
   160 
   207 
   161 
   208 
   162 
   209 
   163 
   210 
   164 
       
   165 
       
   166 
       
   167 
       
   168 
       
   169 
       
   170 
       
   171 
       
   172 
       
   173 
       
   174 
       
   175 
       
   176 
       
   177 
       
   178 
       
   179