mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 05:31:20 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			63 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
| #! /usr/bin/env python
 | |
| #  -*- Python -*-
 | |
| 
 | |
| import fileinput
 | |
| import getopt
 | |
| import glob
 | |
| import os
 | |
| import re
 | |
| import sys
 | |
| 
 | |
| 
 | |
| declare_rx = re.compile(
 | |
|     r"\\declaremodule(?:\[[a-zA-Z0-9]*\]*)?{[a-zA-Z_0-9]+}{([a-zA-Z_0-9]+)}")
 | |
| 
 | |
| module_rx = re.compile(r"\\module{([a-zA-Z_0-9]+)}")
 | |
| 
 | |
| def main():
 | |
|     try:
 | |
|         just_list = 0
 | |
|         print_lineno = 0
 | |
|         opts, args = getopt.getopt(sys.argv[1:], "ln", ["list", "number"])
 | |
|         for opt, arg in opts:
 | |
|             if opt in ("-l", "--list"):
 | |
|                 just_list = 1
 | |
|             elif opt in ("-n", "--number"):
 | |
|                 print_lineno = 1
 | |
|         files = args
 | |
|         if not files:
 | |
|             files = glob.glob("*.tex")
 | |
|             files.sort()
 | |
|         modulename = None
 | |
|         for line in fileinput.input(files):
 | |
|             if line[:9] == r"\section{":
 | |
|                 modulename = None
 | |
|                 continue
 | |
|             if line[:16] == r"\modulesynopsys{":
 | |
|                 continue
 | |
|             m = declare_rx.match(line)
 | |
|             if m:
 | |
|                 modulename = m.group(1)
 | |
|                 continue
 | |
|             if not modulename:
 | |
|                 continue
 | |
|             m = module_rx.search(line)
 | |
|             if m:
 | |
|                 name = m.group(1)
 | |
|                 if name != modulename:
 | |
|                     filename = fileinput.filename()
 | |
|                     if just_list:
 | |
|                         print filename
 | |
|                         fileinput.nextfile()
 | |
|                         modulename = None
 | |
|                     elif print_lineno:
 | |
|                         print "%s(%d):%s" \
 | |
|                               % (filename, fileinput.filelineno(), line[:-1])
 | |
|                     else:
 | |
|                         print "%s:%s" % (filename, line[:-1])
 | |
|     except KeyboardInterrupt:
 | |
|         sys.exit(1)
 | |
| 
 | |
| 
 | |
| if __name__ == "__main__":
 | |
|     main()
 | 
