import sys, collections
from cppy.cp_util import *

class WordFrequenciesModel:
    """ 模型：数据 """
    def __init__(self, path_to_file):
        self.update(path_to_file)

    def update(self, path_to_file):
        try:            
            self.freqs = collections.Counter( extract_file_words(path_to_file) )
        except IOError:
            print("File not found")
            self.freqs = {}


class WordFrequenciesView:
    """ 视图：数据展现 """
    def __init__(self, model):
        self._model = model

    def render(self):
        sorted_freqs = sort_dict(self._model.freqs) 
        print_word_freqs(sorted_freqs)


class WordFrequencyController:
    """ 控制：操作逻辑 """
    def __init__(self, model, view):
        self._model, self._view = model, view
        view.render()

    def run(self):
        while True:  
            print("Enter the file path (or 'q' to quit): ", file=sys.stderr, flush=True)  
            filename = sys.stdin.readline().strip()  
            if filename.lower() == 'q':  break  
            self._model.update(filename)  
            self._view.render()                  


m = WordFrequenciesModel( testfilepath )
v = WordFrequenciesView(m)
c = WordFrequencyController(m, v)
c.run()