#!/usr/bin/env python
#
# Copyright John Reid 2012
#

"""
Code that takes STEME options and creates a restructured text document to describe them.
"""


import stempy


def normalize_string(s):
    """Make a string lower case and replace spaces and '_' with '-'
    """
    return s.lower().replace(' ', '-').replace('_', '-')


def default_string(option):
    if None != option.default:
        return '*(default=%s)*' % option.default
    else:
        return ''


def handle_option_group(group, group_name=None):
    if group.option_list:
        if None == group_name:
            group_name = group.title
        print '\n\n\n.. _option-group-%s:\n' % normalize_string(group_name)
        print '%s\n%s\n' % (group_name, '-' * len(group_name))
        print '\n%s\n' % group.description
        for option in group.option_list:
            if option.dest:
                option_name = option.dest.strip('_').replace('_', '-')
                print '\n.. _option-%s:\n' % normalize_string(option_name)
                print '``--%s`` %s: %s' % (option_name, default_string(option), option.help)
        print


parser = stempy.OptionParser()
stempy.add_options(parser)


print """
STEME Options
=============
"""


#handle_option_group(parser, group_name="Options")
for group in parser.option_groups:
    if 'Internal' == group.title:
        continue
    handle_option_group(group)
