class FileSaverMixin(SaverMixin):
    """Implements API for saving & loading in a File oriented context"""

    def __init__(self, pseudo, directory):
        SaverMixin.__init__(self, pseudo, directory)
    
    # MENU
    def save(self):
        """fill document with information from .profile file"""
        profile_file = open(self.get_id(), 'w')
        profile_file.write("#%s\n"% self.encoding)
        self.config.write(profile_file)
        profile_file.close()
        
    def load(self,):
        """fill document with information from .profile file"""
        # load profile
        if not os.path.exists(self.get_id()):
            print "profile %s does not exists"% self.get_id()
            return False
        else:
            profile_file = open(self.get_id())
            self.encoding = profile_file.readline()[1:]
            self.config = CustomConfigParser(self.encoding)
            self.config.readfp(profile_file)
            profile_file.close()
            return True

    def to_stream(self):
        """returns a file object containing values"""
        file_obj = tempfile.TemporaryFile()
        file_obj.write("#%s\n"% self.encoding)
        self.config.write(file_obj)
        file_obj.seek(0)
        return file_obj
 def test_config_parser(self):
     writer = CustomConfigParser()
     writer.add_section('TEST')
     writer.set('TEST', "Windows:path", "not a valid linux:path!")
     writer.write(open("generated/config.test", "w"))
     # standard reader
     reader = ConfigParser()
     reader.readfp(open("generated/config.test"))
     self.assert_(reader.has_section('TEST'))
     self.assert_(reader.has_option('TEST', "Windows"))
     self.assertEquals(reader.get('TEST', "Windows"), "path = not a valid linux:path!")
     # custom reader
     reader = CustomConfigParser()
     reader.readfp(open("generated/config.test"))
     self.assert_(reader.has_section('TEST'))
     self.assert_(reader.has_option('TEST', "Windows:path"))
     self.assertEquals(reader.get('TEST', "Windows:path"), "not a valid linux:path!")