#!/usr/bin/env python
"""
Escapes a file into a form suitable for use with tool tests using re_match or re_match_multiline (when -m/--multiline option is used)

usage: re_escape_output.py [options] input_file [output_file]
    -m: Use Multiline Matching
"""

import optparse
import re


def __main__():
    parser = optparse.OptionParser()
    parser.add_option(
        "-m", "--multiline", action="store_true", dest="multiline", default=False, help="Use Multiline Matching"
    )
    options, args = parser.parse_args()
    input = open(args[0], "rb")
    if len(args) > 1:
        output = open(args[1], "wb")
    else:
        if options.multiline:
            suffix = "re_match_multiline"
        else:
            suffix = "re_match"
        output = open(f"{args[0]}.{suffix}", "wb")
    if options.multiline:
        lines = [re.escape(input.read())]
    else:
        lines = ["{}\n".format(re.escape(line.rstrip("\n\r"))) for line in input]
    output.writelines(lines)
    output.close()


if __name__ == "__main__":
    __main__()
