#!/usr/bin/env python
import argparse

from purdy.cmd import filename_arg, general_args, rtf_args
from purdy.content import Code, Listing
from purdy.scribe import print_rtf, range_set_to_list

# =============================================================================

DESCRIPTION = """This command prints colourized RTF version of a file,
parsing the file based on a limited number of pygments lexers. 'prat' is part
of the 'purdy' library. A list of supported lexers is available in the help.
If no lexer is specified the library attempts to determine which lexer to user
automatically.
"""

# =============================================================================
# Main
# =============================================================================

parser = argparse.ArgumentParser(description=DESCRIPTION)
filename_arg(parser)
general_args(parser)
rtf_args(parser)

def main():
    ### Execute ###
    args = parser.parse_args()

    code = Code(lexer_name=args.lexer, filename=args.filename)
    listing = Listing(code, starting_line_number=args.num)

    if args.highlight:
        for num in range_set_to_list(args.highlight):
            listing.set_highlight(True, num, num)

    bg = None
    if args.background:
        bg = args.background

    listing.set_display('rtf')
    print_rtf(listing, bg)

if __name__ == '__main__':
    main()
