def remove(sheet, default="yes"): """Ask a yes/no/quit sheet via raw_input() and return their answer. "sheet" is a string that is presented to the user. "default" is the presumed answer if the user just hits <Enter>. It must be "yes" (the default), "no", "quit" or None (meaning an answer is required of the user). The "answer" return value is one of "yes", "no" or "quit". """ if not exists(sheet): die('\033[1;31mNo\033[0m cheatsheet found for \033[1;31m' + sheet + '\033[0m') sheet = sheets.get()[sheet] valid = {"yes":"yes", "y":"yes", "ye":"yes", "no":"no", "n":"no", "quit":"quit", "qui":"quit", "qu":"quit", "q":"quit"} if default == None: prompt = " [y/n/q] " elif default == "yes": prompt = " [Y/n/q] " elif default == "no": prompt = " [y/N/q] " elif default == "quit": prompt = " [y/n/Q] " else: raise ValueError("invalid default answer: '%s'" % default) while 1: sys.stdout.write(sheet + prompt) choice = input().lower() if default is not None and choice == '': print("Delete\033[1;31m %s \033[0mfile " % sheet) os.remove(sheet) return default elif choice in valid.keys(): print("Delete\033[1;31m %s \033[0mfile " % sheet) os.remove(sheet) return valid[choice] else: sys.stdout.write("Please respond with 'yes', 'no' or 'quit'.\n")
def path(sheet): """ Returns a sheet's filesystem path """ return sheets.get()[sheet]
def is_writable(sheet): """ Predicate that returns true if the sheet is writeable """ return sheet in sheets.get() and os.access(path(sheet), os.W_OK)
def exists_in_default_path(sheet): """ Predicate that returns true if the sheet exists in default_path""" default_path_sheet = os.path.join(sheets.default_path(), sheet) return sheet in sheets.get() and os.access(default_path_sheet, os.R_OK)
def exists(sheet): """ Predicate that returns true if the sheet exists """ return sheet in sheets.get() and os.access(path(sheet), os.R_OK)