Ignore:
Timestamp:
03/01/11 21:31:27 (8 years ago)
Author:
aspidites
Message:

Patch by Aspidites

+ settings.py now remembers the mandatory quotes in strings

  • solution is rather sloppy, will investigate something more practical late
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/active/character_customization/game/parpg/settings.py

    r768 r769  
    5858            @type value: int, float, string, boolean, or list 
    5959        """ 
    60  
    6160        value = str(value) 
    62         if (value.startswith("\"") and value.endswith("\"") or 
    63             value.startswith("\'") and value.endswith("\'")): 
    64             # remove quotation marks and evaluate as a string 
    65             value = value[1:-1] 
    66         elif value.startswith('[') and value.endswith(']'): 
     61        if value.startswith('[') and value.endswith(']'): 
    6762            value = [item.strip() for item in value[1:-1].split(',')] 
    6863        elif value.lower() == 'true': 
     
    8176        self.__dict__[option] = value 
    8277 
    83     def __getattr__(self, option): 
    84         """ Retrieve the value of the requested option 
    85             @param option: name of the option whose value is being requested 
    86         """ 
    87         return self.__dict__[option] 
     78    def __getattribute__(self, option): 
     79        # Remove leading and trailing quotes from strings that have them 
     80        return_value = object.__getattribute__(self, option) 
     81        try: 
     82            for key, value in return_value.iteritems(): 
     83                if (hasattr(value, 'split') and  
     84                    value.startswith("\"") and value.endswith("\"")): 
     85                    return_value[key] = value[1:-1] 
     86        except AttributeError: 
     87            pass 
     88 
     89        return return_value 
     90        """ 
     91        try: 
     92            return dict((key, value[1:-1]) for (key, value) in  
     93                        object.__getattribute__(self, option) if 
     94                        value.startswith("\"") and value.endswith("\"")) 
     95        except TypeError: 
     96            return object.__getattribute__(self, option) 
     97        """ 
     98        #return object.__getattribute__(self, option) 
    8899 
    89100    def options(self): 
     
    214225                for option, value in getattr(self,  
    215226                                             section).options().iteritems(): 
    216  
    217227                    if hasattr(value, 'sort'): 
    218228                        value = '[{0}]'.format(', '.join(value)) 
     
    223233                        if option in line: 
    224234                            new_option = False 
    225                             self.settings_file[index] = template 
     235                            if str(value) not in line: 
     236                                self.settings_file[index] = template 
     237 
    226238                            break 
    227239                        else: 
     
    241253        sections.pop(sections.index('paths')) 
    242254        sections.pop(sections.index('filename')) 
     255         
    243256        return sections 
Note: See TracChangeset for help on using the changeset viewer.