| t | class morse: | t | class morse: | 
            |  |  |  |  | 
            |  | def __init__(self, s=''): |  | def __init__(self, s=''): | 
            |  | if not s or ' ' in s: |  | if not s or ' ' in s: | 
            |  | self.sep = ',' |  | self.sep = ',' | 
            |  | self.end = '.' |  | self.end = '.' | 
            |  | s = s.split(' ') |  | s = s.split(' ') | 
            |  | else: |  | else: | 
            |  | self.sep = ' ' |  | self.sep = ' ' | 
            |  | self.end = '' |  | self.end = '' | 
            |  | n = len(s) |  | n = len(s) | 
            |  | if n == 2: |  | if n == 2: | 
            |  | self.dot = s[0] |  | self.dot = s[0] | 
            |  | self.end_dot = s[0] |  | self.end_dot = s[0] | 
            |  | self.dash = s[1] |  | self.dash = s[1] | 
            |  | elif n == 3: |  | elif n == 3: | 
            |  | (self.dot, self.end_dot, self.dash) = s |  | (self.dot, self.end_dot, self.dash) = s | 
            |  | elif n == 4: |  | elif n == 4: | 
            |  | (self.dot, self.end_dot, self.dash, self.end) = s |  | (self.dot, self.end_dot, self.dash, self.end) = s | 
            |  | else: |  | else: | 
            |  | self.dot = 'di' |  | self.dot = 'di' | 
            |  | self.end_dot = 'dit' |  | self.end_dot = 'dit' | 
            |  | self.dash = 'dah' |  | self.dash = 'dah' | 
            |  | self.prev = None |  | self.prev = None | 
            |  | self.buff = self.end |  | self.buff = self.end | 
            |  |  |  |  | 
            |  | def __neg__(self): |  | def __neg__(self): | 
            |  | if self.sep != ' ': |  | if self.sep != ' ': | 
            |  | self.buff = ' ' + self.dash + self.buff |  | self.buff = ' ' + self.dash + self.buff | 
            |  | else: |  | else: | 
            |  | self.buff = self.dash + self.buff |  | self.buff = self.dash + self.buff | 
            |  | self.prev = '-' |  | self.prev = '-' | 
            |  | return self |  | return self | 
            |  |  |  |  | 
            |  | def __pos__(self): |  | def __pos__(self): | 
            |  | tmp = self.dot |  | tmp = self.dot | 
            |  | if self.prev == '~' or not self.prev: |  | if self.prev == '~' or not self.prev: | 
            |  | tmp = self.end_dot |  | tmp = self.end_dot | 
            |  | if self.sep != ' ': |  | if self.sep != ' ': | 
            |  | tmp = ' ' + tmp |  | tmp = ' ' + tmp | 
            |  | self.buff = tmp + self.buff |  | self.buff = tmp + self.buff | 
            |  | self.prev = '+' |  | self.prev = '+' | 
            |  | return self |  | return self | 
            |  |  |  |  | 
            |  | def __invert__(self): |  | def __invert__(self): | 
            |  | self.buff = self.sep + self.buff |  | self.buff = self.sep + self.buff | 
            |  | self.prev = '~' |  | self.prev = '~' | 
            |  | return self |  | return self | 
            |  |  |  |  | 
            |  | def __str__(self): |  | def __str__(self): | 
            |  | return self.buff.strip() |  | return self.buff.strip() |