You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							88 lines
						
					
					
						
							2.5 KiB
						
					
					
				
			
		
		
	
	
							88 lines
						
					
					
						
							2.5 KiB
						
					
					
				| # $Id: writer_aux.py 7808 2015-02-27 17:03:32Z milde $ | |
| # Author: Lea Wiemann <LeWiemann@gmail.com> | |
| # Copyright: This module has been placed in the public domain. | |
|  | |
| """ | |
| Auxiliary transforms mainly to be used by Writer components. | |
|  | |
| This module is called "writer_aux" because otherwise there would be | |
| conflicting imports like this one:: | |
|  | |
|     from docutils import writers | |
|     from docutils.transforms import writers | |
| """ | |
|  | |
| __docformat__ = 'reStructuredText' | |
|  | |
| from docutils import nodes, utils, languages | |
| from docutils.transforms import Transform | |
|  | |
|  | |
| class Compound(Transform): | |
|  | |
|     """ | |
|     Flatten all compound paragraphs.  For example, transform :: | |
|  | |
|         <compound> | |
|             <paragraph> | |
|             <literal_block> | |
|             <paragraph> | |
|  | |
|     into :: | |
|  | |
|         <paragraph> | |
|         <literal_block classes="continued"> | |
|         <paragraph classes="continued"> | |
|     """ | |
|  | |
|     default_priority = 910 | |
|  | |
|     def apply(self): | |
|         for compound in self.document.traverse(nodes.compound): | |
|             first_child = True | |
|             for child in compound: | |
|                 if first_child: | |
|                     if not isinstance(child, nodes.Invisible): | |
|                         first_child = False | |
|                 else: | |
|                     child['classes'].append('continued') | |
|             # Substitute children for compound. | |
|             compound.replace_self(compound[:]) | |
|  | |
|  | |
| class Admonitions(Transform): | |
|  | |
|     """ | |
|     Transform specific admonitions, like this: | |
|  | |
|         <note> | |
|             <paragraph> | |
|                  Note contents ... | |
|  | |
|     into generic admonitions, like this:: | |
|  | |
|         <admonition classes="note"> | |
|             <title> | |
|                 Note | |
|             <paragraph> | |
|                 Note contents ... | |
|  | |
|     The admonition title is localized. | |
|     """ | |
|  | |
|     default_priority = 920 | |
|  | |
|     def apply(self): | |
|         language = languages.get_language(self.document.settings.language_code, | |
|                                           self.document.reporter) | |
|         for node in self.document.traverse(nodes.Admonition): | |
|             node_name = node.__class__.__name__ | |
|             # Set class, so that we know what node this admonition came from. | |
|             node['classes'].append(node_name) | |
|             if not isinstance(node, nodes.admonition): | |
|                 # Specific admonition.  Transform into a generic admonition. | |
|                 admonition = nodes.admonition(node.rawsource, *node.children, | |
|                                               **node.attributes) | |
|                 title = nodes.title('', language.labels[node_name]) | |
|                 admonition.insert(0, title) | |
|                 node.replace_self(admonition)
 | |
| 
 |