pikapython/package/configparser/configparser.py

113 lines
3.2 KiB
Python

from PikaStdData import String
class ConfigParser():
content = ''
config_dict = {}
def _parse(self):
self.content = String(self.content).replace('\r', '')
content = String(self.content)
lines = content.split('\n')
for line in lines:
line = String(line)
if line.startwith('#'):
continue
if line.startwith(';'):
continue
if line.startwith('['):
section = String(line.replace('[', ''))
section = section.replace(']', '')
self.config_dict[section] = {}
continue
if line.strip() == '':
continue
stmt = line.split('=')
key = String(stmt[0]).strip()
value = String(_getvalue(stmt)).strip()
section_dict = self.config_dict[section]
section_dict[key] = value
def sections(self):
section_keys = self.config_dict.keys()
sections = []
for section_item in section_keys:
sections.append(section_item)
return sections
def options(self, section):
section_dict = self.config_dict[section]
option_keys = section_dict.keys()
options = []
for option_item in option_keys:
options.append(option_item)
return options
def get(self, section, option):
section_dict = self.config_dict[section]
return section_dict[option]
def set(self, section, option, value):
section_dict = self.config_dict[section]
section_dict[option] = value
# support config[key] = val
def __setitem__(self, __key, __val):
self.config_dict[__key] = __val
# support val = config[key]
def __getitem__(self, __key):
return self.config_dict[__key]
def items(self, section):
section_dict = self.config_dict[section]
section_keys = section_dict.keys()
items = []
for key in section_keys:
val = section_dict[key]
items.append([key, val])
return items
def __str__(self):
content = ''
section_keys = self.config_dict.keys()
for section_item in section_keys:
content += '[' + section_item + ']\n'
section_dict = self.config_dict[section_item]
section_keys = section_dict.keys()
for key in section_keys:
val = section_dict[key]
content += key + ' = ' + val + '\n'
content += '\n'
return content
def write(self, file_name):
print('Error: write() method not implemented')
raise
self.content = self.__str__(self)
print(self.content)
def read_string(self, content):
self.content = content
self._parse()
def read(self, file_name):
print('Error: read() method not implemented')
raise
content = ''
self.content = content
self._parse()
def _getvalue(stmt):
index = 0
val = ''
for item in stmt:
if index > 0:
if val != '':
val += ('=' + item)
else:
val += item
index = index + 1
return val