mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 15:11:34 +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()
 |