Commits

Dustin Hatch  committed c1ec9c4

Added simple inifile-to-dictionary parser

  • Participants
  • Parent commits 6cf0099

Comments (0)

Files changed (1)

File src/milla/config.py

+try:
+    import configparser
+except ImportError:
+    import ConfigParser as configparser
+
+def read_config(filename):
+    '''Parse an ini file into a nested dictionary
+
+    :param string filename: Path to the ini file to read
+    :returns: A dictionary whose keys correspond to the section and
+       option, joined with a dot character (.)
+
+    For example, consider the following ini file::
+
+        [xmen]
+        storm = Ororo Monroe
+        cyclops = Scott Summers
+
+        [avengers]
+        hulk = Bruce Banner
+        iron_man = Tony Stark
+
+    The resulting dictionary would look like this::
+
+        {
+            'xmen.storm': 'Ororo Monroe',
+            'xmen.cyclops': 'Scott Summers',
+            'avengers.hulk': 'Bruce Banner',
+            'avengers.iron_man': 'Tony Stark',
+        }
+
+    Thus, the option values for any section can be obtained as follows::
+
+        config['xmen.storm']
+
+    This dictionary can be used to configure an :py:class:`~milla.Application`
+    instance by using the ``update`` method::
+
+        app = milla.Application(router)
+        app.config.update(config)
+    '''
+
+    cparser = configparser.SafeConfigParser()
+    cparser.readfp(open(filename))
+
+    config = {}
+    for section in cparser.sections():
+        for option in cparser.options(section):
+            config['.'.join((section, option))] = cparser.get(section, option)
+    return config