#!/usr/bin/env python
# -*- coding: utf-8 -*
import sys, re

s = u'[+aeiouyāēīōūȳäëïöüÿàèìòùỳáéíóúý]'
s_re = re.compile(s)

complex_onsets_only = True

def _pre(line):
    line = line.strip().decode('utf-8').lower()
    if not line or line[0] in s:
        return 
    return line

def onsets(line, complex=False):
    line = _pre(line)
    if not line:
        return
    onset = s_re.split(line)[0]
    if complex and len(onset) < 2:
        return 
    return (onset,)

def codas(line, complex=False):
    line = _pre(line)
    if not line:
        return
    codas = s_re.split(line)[-1]
    if complex and len(codas) < 2:
        return
    return (codas,)

def middles(line, complex=False):
    line = _pre(line)
    if not line:
        return
    pieces = s_re.split(line)
    if len(pieces) < 3:
        return
    pieces = pieces[1:-1]
    if complex:
        return filter(None, [p for p in pieces if len(p) > 1])
    return filter(None, pieces)

def pieces(line, complex=False):
    line = _pre(line)
    if not line:
        return
    pieces = s_re.split(line)
    if not pieces:
        return
    if complex:
        return filter(None, [p for p in pieces if len(p) > 1])
    return filter(None, pieces)

def _help(error=False):
    txt = """phon <OPTION> [ -c | -h ]

Where OPTION is one of "onsets", "codas", "middles", "pieces".

    -c: Only onsets|codas|middles|pieces longer than one character
    -h: Show this help-message and exit
    """
    if error:
        print >>sys.stderr, txt 
        sys.exit(1)
    else:
        print txt
        raise SystemExit

if __name__ == '__main__':
    complex = False
    args = set(sys.argv[1:])

    if not args or len(args) > 2:
        _help(True)

    if u'-h' in args:
        _help()
    if u'-c' in args:
        complex=True
        args.discard(u'-c')
    if len(args) > 1:
        _help()

    action = args.pop()

    actions = {'middles': middles,
            'codas': codas,
            'onsets': onsets,
            'pieces': pieces
            }

    if action not in actions.keys():
        action = 'pieces'

    for word in sys.stdin:
        pieces = actions[action](word, complex)
        if pieces:
            for piece in pieces:
                print piece.encode('utf-8')
