def printScenario(scenarioList, scenarioName):
    scenarioName += ':'
    scenarioString = '\\addscenario{{{0}}}'.format(scenarioName)
    scenarioString += '{'


    if type(scenarioList) is str:
        scenarioString += '\n\t\item '
        scenarioString += '{0}'.format(scenarioList)

    elif isinstance(scenarioList, types.NoneType):
        scenarioString += '\n\t\item'
    else:
        for i in range(len(scenarioList)):
            scenarioString += '\n\t\item '
            scenarioString += '{0}'.format(scenarioList[i])

    scenarioString += '\n}'
    return scenarioString.replace('_', '\_')

    #return scenarioString

def printUseCase(yamlUseCase):
    
    number = yamlUseCase['number']
    title = yamlUseCase['title']
    preconditions = yamlUseCase['preconditions']
    postconditions = yamlUseCase['postconditions']
    actor = yamlUseCase['actor']
    steps = yamlUseCase['steps']
    extensions = yamlUseCase['extensions']
    
    print '\\begin{usecase}'
    print '\\addtitle{{{0}}}{{{1}}}'.format(number, title)
    print '\\addfield{{Actor:}}{{{0}}}'.format(actor)

    print printScenario(preconditions, 'Preconditions')
    print printScenario(postconditions, 'Postconditions')
    print printScenario(steps, 'Steps')
    print printScenario(extensions, 'Extensions')

    print '\\end{usecase}'
    print '\\pagebreak'



# Start here
import yaml
import types
import sys

files = ['markovModelUC.yml', 'constantRateConstantUC.yml', 'experimentUC.yml', 'voltageProtocol.yml', 'simulationRunner.yml']
#stream = open('markovModelUC.yml', 'r')
#stream = open(sys.argv[1], 'r')

for f in files: 
    stream = open(f, 'r')
    yamlUseCase = yaml.load(stream)

    ucs = []
    for uc in yamlUseCase:
        ucs.append(uc)

    ucs.sort()
    for uc in ucs:
        printUseCase(yamlUseCase[uc])
        #print yamlUseCase[uc]
