# jazzname.py
# Written by Todd Wareham for CS 2500
"""
Given the name of an annotated textfile ofch each proper name (consisting of a
 first name followed by a last name) is surroundeed by tags "<PN>" and "</PN>"
 as a command-line argument, prints version of file in which each tagged
 name is preceded by a randomly-selected nickname.
"""

import sys
import re
import random


def procName(m):
    nickname = {"H": ["Horrifyin'", "Happy"], 
                "T": ["Terrific", "Truckin'"]}
    if m.group(1)[0] in nickname:
        return random.sample(nickname[m.group(1)[0]], 1)[0] + " " + m.group(1)
    else:
        return "Rockin' " + m.group(1)


    
if len(sys.argv) != 2:
    print "usage: ", sys.argv[0], " name-file"
    sys.exit(1)

f = open(sys.argv[1], "r")
line = f.read()
f.close()

nameP = "([A-Z][a-z]+ [A-Z][a-z]+)"
r = re.compile("<PN>" + nameP + "</PN>")
print (r.sub(procName, line)).rstrip() 
