Hi,
There was a issue on options that aggregate any other ones, like -A for my previous post
In my view the easiest way to solve it is by storing the options in a tuple.
Here is the snippet
run_options = []
try:
opts, args = getopt.gnu_getopt(sys.argv[1:-1], 'AbeEnstTv', ['show-all', 'number-nonblank', 'show-ends', 'number', 'show-blank', 'squeeze-blank' 'show-tabs', 'show-nonprinting', 'help', 'version'])
except getopt.GetoptError:
print("Something went wrong")
sys.exit(2)
for opt, arg in opts:
if opt in ('-A','--show-all'):
run_options.append('E')
run_options.append('T')
elif opt in ('-b', '--number-nonblank'):
run_options.append('b')
elif opt in ('-n', '--number'):
run_options.append('n')
elif opt in ('-E', '--show-ends'):
run_options.append('E')
elif opt in ('-s', '--squeeze-blank'):
run_options.append('s')
elif opt in ('-T', '--show-tabs'):
run_options.append('T')
final_run_options = tuple(run_options)
for element in final_run_options:
if element == 'b':
content_list = number_nonempty_lines(content_list)
elif element == 'n':
content_list = number_all_lines(content_list)
elif element == 'E':
content_list = display_endline(content_list)
elif element == 's':
content_list = squeeze_blanks(content_list)
elif element == 'T':
content_list = show_tabs(content_list)
So basically, you store the actual cases in a list which you convert to a tuple to eliminate duplicates. Once you have the final case, you parse it and change the actual content option by option.
I didn’t have the time to test it but there is no big reason why it should’t work.
Cheers