Friday, April 20, 2012

Igpay Atinlay

def pig_latinize(text):
    '''
    Returns the Pig Latin version of the supplied English text.
    @return (string) Pig Latin
    '''
    import string

    new_text = ''

    for word in text.split():
        punctuation_mark_begin = ''
        punctuation_mark_end   = ''

        if word[-1] in string.punctuation:
            punctuation_mark_end   = word[-1]
            word = word[:-1]

        if word[0]  in string.punctuation:
            punctuation_mark_begin = word[0]
            word = word[1:]

        all_caps   = word == word.upper()
        title_caps = word[0] in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

        word = word.lower()

        new_word = None

        m = len(word)

        if m < 3 or word in ['and', 'the']:
            new_word = word + 'kay'

        else:
            vowel_offsets = [word.find(v) for v in 'aeiouy' if (word.find(v) != -1)]

            m = 0 if (len(vowel_offsets) == 0) else min(vowel_offsets)

            if m == 0:
                new_word = word + 'way'
            else:
                new_word = word[m:] + word[:m] + 'ay'

        if all_caps and (len(new_word) > 1):
            new_word = new_word.upper() 

        elif title_caps:
            new_word = new_word[0].upper() + new_word[1:]

        new_text += punctuation_mark_begin + new_word + punctuation_mark_end + ' '

    return new_text[:-1]


INKAY ONGRESSCAY, ULYJAY 4KAY, 1776WAY Thekay unanimousway Eclarationday ofkay thekay irteenthay unitedway Atesstay ofkay Americaway Enwhay inkay thekay Oursecay ofkay umanhay eventsway itkay ecomesbay ecessarynay orfay oneway eoplepay tokay issolveday thekay oliticalpay andsbay ichwhay avehay onnectedcay emthay ithway anotherway andkay tokay assumeway amongway thekay owerspay ofkay thekay earthway, thekay eparatesay andkay equalway ationstay tokay ichwhay thekay Awslay ofkay Aturenay andkay ofkay Ature'snay Odgay entitleway emthay, akay ecentday espectray tokay thekay opinionsway ofkay ankindmay equiresray atthay eythay ouldshay eclareday thekay ausescay ichwhay impelway emthay tokay thekay eparationsay.

Oodgay enoughway.

No comments:

Post a Comment