0001"""
0002Parses default-php.ini for variables, and gives metadata.
0003
0004Not really used in any interesting way currently.
0005"""
0006import os
0007
0008php_ini_location = os.path.join(os.path.dirname(__file__),
0009                                'default-php.ini')
0010
0011f = open(php_ini_location)
0012
0013class Option(object):
0014
0015    def __init__(self, name, section, default, description):
0016        self.name = name
0017        self.default = default
0018        self.description = description
0019        self.section = section
0020
0021options = []
0022options_by_name = {}
0023
0024show_ignored = False
0025
0026def read_data():
0027    last_description = []
0028    last_section = None
0029    for line in f:
0030        line = line.strip()
0031        if not line:
0032            if show_ignored and last_description:
0033                print 'ignoring description:'
0034                print '\n'.join(['  '+l for l in last_description])
0035            last_description = []
0036            continue
0037        if line.startswith('['):
0038            line = line[1:]
0039            if line.endswith(']'):
0040                line = line[:-1]
0041            line = line.strip()
0042            last_section = line
0043            last_description = []
0044            continue
0045        if line.startswith(';'):
0046            line = line.strip('; ')
0047            if last_description or line:
0048                last_description.append(line)
0049            continue
0050        name, value = line.split('=', 1)
0051        name = name.strip()
0052        value = value.strip()
0053        op = Option(name, last_section, value, '\n'.join(last_description))
0054        last_description = []
0055        options.append(op)
0056        options_by_name[op.name] = op
0057
0058if __name__ == '__main__':
0059    import sys
0060    last_section = None
0061    if '-v' in sys.argv[1:]:
0062        show_ignored = True
0063    read_data()
0064
0065    for op in options:
0066        if last_section != op.section:
0067            print '\n\n[%s]\n' % op.section
0068            last_section = op.section
0069        print '%s (default: %s)' % (op.name, op.default or 'none')
0070        if op.description:
0071            print '\n'.join(
0072                ['  '+l for l in op.description.splitlines()])
0073            print
0074
0075else:
0076    read_data()