mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 03:44:55 +00:00 
			
		
		
		
	replacement for @DATE@ from a TeX file containing a \date{...} mark
(such as texinputs/boilerplate.tex).
This will be used to re-write the html/index.html.in file instead of
a combination of grep, date, and sed -- this is more portable to non-Unix
platforms.
This solves part of the problem reported in SF patch #429611, but does
not use the suggested patch.
		
	
			
		
			
				
	
	
		
			55 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
"""Simple script to replace @DATE@ and friends with real information.
 | 
						|
 | 
						|
Usage:  rewrite.py boilerplate.tex [VAR=value] ... <template >output
 | 
						|
"""
 | 
						|
 | 
						|
import string
 | 
						|
import sys
 | 
						|
import time
 | 
						|
 | 
						|
 | 
						|
def get_info(fp):
 | 
						|
    s = fp.read()
 | 
						|
 | 
						|
    d = {}
 | 
						|
    start = string.find(s, r"\date{")
 | 
						|
    if start >= 0:
 | 
						|
        end = string.find(s, "}", start)
 | 
						|
        date = s[start+6:end]
 | 
						|
        if date == r"\today":
 | 
						|
            date = time.strftime("%B %d, %Y", time.localtime(time.time()))
 | 
						|
        d["DATE"] = date
 | 
						|
    return d
 | 
						|
    
 | 
						|
 | 
						|
def main():
 | 
						|
    s = sys.stdin.read()
 | 
						|
    if "@" in s:
 | 
						|
        # yes, we actully need to load the replacement values
 | 
						|
        d = get_info(open(sys.argv[1]))
 | 
						|
        for arg in sys.argv[2:]:
 | 
						|
            name, value = string.split(arg, "=", 1)
 | 
						|
            d[name] = value
 | 
						|
        start = 0
 | 
						|
        while 1:
 | 
						|
            start = string.find(s, "@", start)
 | 
						|
            if start < 0:
 | 
						|
                break
 | 
						|
            end = string.find(s, "@", start+1)
 | 
						|
            name = s[start+1:end]
 | 
						|
            if name:
 | 
						|
                value = d.get(name)
 | 
						|
                if value is None:
 | 
						|
                    start = end + 1
 | 
						|
                else:
 | 
						|
                    s = s[:start] + value + s[end+1:]
 | 
						|
                    start = start + len(value)
 | 
						|
            else:
 | 
						|
                # "@@" --> "@"
 | 
						|
                s = s[:start] + s[end:]
 | 
						|
                start = end
 | 
						|
    sys.stdout.write(s)
 | 
						|
 | 
						|
 | 
						|
if __name__ == "__main__":
 | 
						|
    main()
 |