mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 18:55:19 +00:00 
			
		
		
		
	Pyflake is a python (2) source checker. This patch fixes various (mostly trivial) errors and warnings it reports. Change-Id: Ia35c5ac61751b927814cf693994c632c412386ea
		
			
				
	
	
		
			107 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| #! /usr/bin/env python
 | |
| # vin: sw=3 et:
 | |
| '''
 | |
| Copyright (C) 2012, Digium, Inc.
 | |
| Matt Jordan <mjordan@digium.com>
 | |
| 
 | |
| This program is free software, distributed under the terms of
 | |
| the GNU General Public License Version 2.
 | |
| '''
 | |
| 
 | |
| import sys
 | |
| import optparse
 | |
| 
 | |
| from xml.dom.minidom import parse
 | |
| 
 | |
| 
 | |
| def merge_parameter_information(managerEvent):
 | |
|     ''' Merge the parameter information across all managerEventInstances
 | |
|     within a managerEvent node '''
 | |
| 
 | |
|     def __swap_parameter_documentation(one, two):
 | |
|         # See who has the better documentation and use it
 | |
|         if (one.hasChildNodes() and not two.hasChildNodes()):
 | |
|             two.parentNode.replaceChild(one.cloneNode(True), two)
 | |
|         elif (two.hasChildNodes() and not one.hasChildNodes()):
 | |
|             one.parentNode.replaceChild(two.cloneNode(True), one)
 | |
| 
 | |
|     def __merge_parameter(param, other_instances):
 | |
|         # Compare the parameter to every other instance's set of parameters
 | |
|         for other in other_instances:
 | |
|             other_parameters = other.getElementsByTagName("parameter")
 | |
|             match = [p for p in other_parameters
 | |
|                      if p.getAttribute('name') == param.getAttribute('name')]
 | |
|             if (match):
 | |
|                 # See who has the better documentation and use it
 | |
|                 __swap_parameter_documentation(param, match[0])
 | |
| 
 | |
|     instances = managerEvent.getElementsByTagName("managerEventInstance")
 | |
|     merged = []
 | |
|     for instance in instances:
 | |
|         others = [i for i in instances if i != instance]
 | |
|         parameters = instance.getElementsByTagName("parameter")
 | |
|         for parameter in parameters:
 | |
|             if parameter not in merged:
 | |
|                 merged.append(parameter)
 | |
|                 __merge_parameter(parameter, others)
 | |
| 
 | |
| 
 | |
| def collapse_event_pair(managerEventOne, managerEventTwo):
 | |
|     # Move all children of managerEventTwo to managerEventOne
 | |
|     for node in managerEventTwo.childNodes:
 | |
|         managerEventOne.appendChild(node.cloneNode(True))
 | |
| 
 | |
|     return managerEventOne
 | |
| 
 | |
| 
 | |
| def collapse_manager_events(rootNode, managerEvents):
 | |
|     events = {}
 | |
|     for managerEvent in managerEvents:
 | |
|         if (managerEvent.parentNode.nodeName == 'list-elements'
 | |
|             or managerEvent.parentNode.nodeName == 'responses'):
 | |
|             continue
 | |
|         managerEvent.parentNode.removeChild(managerEvent)
 | |
|         attr = managerEvent.getAttribute('name')
 | |
|         if attr in events:
 | |
|             # match, collapse the two managerEvents
 | |
|             events[attr] = collapse_event_pair(events[attr], managerEvent)
 | |
|         else:
 | |
|             events[attr] = managerEvent
 | |
| 
 | |
|     # Combine parameter information and re-add the manager Events
 | |
|     for k, event in events.items():
 | |
|         merge_parameter_information(event)
 | |
|         rootNode.appendChild(event)
 | |
|     return
 | |
| 
 | |
| 
 | |
| def main(argv=None):
 | |
| 
 | |
|     if argv is None:
 | |
|         argv = sys.argv
 | |
| 
 | |
|     parser = optparse.OptionParser()
 | |
|     parser.add_option('-i', '--input', dest='input_file',
 | |
|                       default='doc/core-full-en_US.xml',
 | |
|                       help='The XML file to process')
 | |
|     parser.add_option('-o', '--output', dest='output_file',
 | |
|                       default='doc/core-en_US.xml',
 | |
|                       help='The XML file to create')
 | |
|     (options, args) = parser.parse_args(argv)
 | |
| 
 | |
|     dom = parse(options.input_file)
 | |
| 
 | |
|     datasource = open(options.output_file, 'w')
 | |
|     docs = dom.getElementsByTagName("docs")[0]
 | |
|     managerEvents = dom.getElementsByTagName("managerEvent")
 | |
|     if (managerEvents):
 | |
|         collapse_manager_events(docs, managerEvents)
 | |
| 
 | |
|     dom.writexml(datasource)
 | |
|     datasource.close()
 | |
| 
 | |
|     return 0
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|     sys.exit(main() or 0)
 |