#!/usr/bin/env python
#-*- coding: UTF-8 -*-
#
# Aufgabe 2: Morsecode, str2morse
# Author: Matthias Rebel, 731220

# Ä,Ü,Ö,ß wurden als unicode string verwendet, da die interne Repräsentation \xce\... Probleme verusachte
morsedict = {'A':'· —','B':'— · · ·','C':'— · — ·','D':'— · ·','E':'·','F':'· · — ·','G':'— — ·',
    'H':'· · · ·','I':'· ·','J':'· — — —','K':'— · —','L':'· — · ·','M':'— —','N':'— ·','O':'— — —',
    'P':'· — — ·','Q':'— — · —','R':'· — ·','S':'· · ·','T':'—','U':'· · —','V':'· · · —','W':'· — —',
    'X':'— · · —','Y':'— · — —','Z':'— — · ·',u'Ä':'· − · −',u'Ö':'− − − ·',u'Ü':'· · − −',u'ß':'· · · − − · ·',
    'CH':'− − − −','.':'· − · − · −',',':'− − · · − −',';':'− · − · − ·','?':'· · − − · ·','-':'− · · · · −',' ':' / '}


def translate_str2morse(string):
    """ 
        Der EingabeString wird mit der methode upper() in Großbuchstaben umgewandelt und anschließend
        mit dem morsedict (nach http://de.wikipedia.org/wiki/Morsecode) in den entsprechenden String 
        aus Morsecode übersetzt. """

    string = string.replace('CH','  CH  ').upper()
    morse = ''

    for x in range(len(string)):
        morse += morsedict[string[x]]

    # / / CH / / wird nachträglich 'übersetzt' / wenn weitere Multibuchstabenfolgen im morsedict verwendet würden,
    # wäre eine andere Herangehensweise der Vorverarbeitung des Strings zu erwägen
    ch = '− − − −'
    return morse.replace("/  / — · — ·· · · · /  /",ch)

string = u"CH ich CH du ß ÄÖÜ , öüä ; etwas zu Essen? CH"
print translate_str2morse(string)