mirror of
https://github.com/outbackdingo/UltraGrid.git
synced 2026-03-20 19:40:14 +00:00
88 lines
2.4 KiB
Python
Executable File
88 lines
2.4 KiB
Python
Executable File
#!/usr/bin/python3
|
|
import re, sys
|
|
|
|
MODE_ON = "on"
|
|
MODE_OFF = "off"
|
|
|
|
def usage(arg):
|
|
print("Usage: "+arg+" on|off pattern")
|
|
print("\tcomment out code between following markers:")
|
|
print("####################")
|
|
print("# > pattern (optional note)")
|
|
print("####################")
|
|
print("code to comment out")
|
|
print("####################")
|
|
print("# < pattern (optional note)")
|
|
print("####################")
|
|
|
|
def checkArgs(argv):
|
|
if (len(argv) != 3):
|
|
print("Error, expected two arguments, yet", len(argv)-1, "given")
|
|
return False
|
|
|
|
if (argv[1] != MODE_ON and argv[1] != MODE_OFF):
|
|
print("Mode must be either 'on' or 'off'")
|
|
return False
|
|
|
|
return True
|
|
|
|
def comment_line(line, mode):
|
|
expr_skip = re.compile("^#{2,}$")
|
|
|
|
# rpmspec commenting
|
|
expr_spec_on = re.compile("^\s*%.*")
|
|
expr_spec_off = re.compile("^#\s*%%.*")
|
|
|
|
if (expr_skip.match(line)):
|
|
print(line, end="")
|
|
elif(mode == MODE_ON):
|
|
if (expr_spec_on.match(line)):
|
|
line = line.replace("%", "%%")
|
|
print("#"+line, end="")
|
|
elif(mode == MODE_OFF and len(line) > 1 and line[0] == "#"):
|
|
if (expr_spec_off.match(line)):
|
|
line = line.replace("%%", "%")
|
|
print(line[1:], end="")
|
|
else:
|
|
print(line, end="")
|
|
|
|
|
|
def main(argv):
|
|
if (not checkArgs(argv)):
|
|
usage(argv[0])
|
|
sys.exit(-1)
|
|
|
|
mode = argv[1]
|
|
pattern = argv[2]
|
|
|
|
expr_on = re.compile("^# > "+pattern+"( .*)?$")
|
|
expr_off = re.compile("^# < "+pattern+"( .*)?$")
|
|
|
|
commentingMode = False
|
|
|
|
lineIdx = 0
|
|
for line in sys.stdin:
|
|
if (expr_on.match(line)):
|
|
if (commentingMode):
|
|
print("Error on line", lineIdx, ": unexpected comment marker start while in commenting mode")
|
|
sys.exit(-2)
|
|
commentingMode = not commentingMode
|
|
print(line, end="")
|
|
elif (expr_off.match(line)):
|
|
if (not commentingMode):
|
|
print("Error on line", lineIdx, ": unexpected comment marker end while outside commenting mode")
|
|
sys.exit(-2)
|
|
commentingMode = not commentingMode
|
|
print(line, end="")
|
|
elif (commentingMode):
|
|
comment_line(line, mode)
|
|
else:
|
|
print(line, end="")
|
|
lineIdx += 1
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main(sys.argv)
|