#!/usr/bin/python
#
# gathers all Actions in pyMoleCuilder module and tests them with some default
# values.
#
# date: Oct 5, 2011
# author: Gregor Bollerhey

import pyMoleCuilder as mol
import re, os

cmds =  filter(lambda s: s[0] != '_', dir(mol))

# options.dat einlesen

Defaults = {}

with open('options.dat') as f:
    for line in f:
        if len(line) > 0 and line[0] != '#':
            key, value = line.split('\t', 1)
            value = value[1:-2] # quotes entfernen
        
            Defaults[key] = value

# aufrufen

Allparams = []

def ParseParameters(docstring):
    result = []
    params = re.findall(r'\(str\)([-a-zA-Z]*)', docstring)

    for param in params:
        if not param in Allparams:
            Allparams.append(param)
            
            if not param in Defaults:
                print 'Fehlender Defaultwert:', param
        
        # direkt substituieren, oder erst beim aufruf?
        if param in Defaults:
            param = Defaults[param]
        
        result.append(param)

    return result

for cmd in cmds:
    doc = eval('mol.%s.__doc__' % cmd)
    params = ParseParameters(doc)
    
    print '-------- %s mit %s --------' % (cmd, params)
    
    exec('mol.%s(*params)' % cmd)
