"""A speech filter where the user thinks they're a duck.

Copyright 2000 Cabochon Technologies, Inc.
"""

from java.lang import String, StringBuffer
from java.util import StringTokenizer
from wyvern.common.util import Strings
from wyvern.lib.classes.filters import SpeechFilter

class duck_filter(SpeechFilter):

    def applyFilter(self, text):

        # allow them to escape it
        if String.startsWith(text, 'Quack quack quack '):
            return text

        if String.startsWith(text, 'quack quack quack '):
            return text

        # some time down the road, I'd like to enhance the
        # filter to leave in punctuation, so it looks like:
        # "Quack quack quack, quack.  QUACK!  Quack quack quack."

        st = StringTokenizer(text)
        count = st.countTokens()
        if count == 1:
            return "Quack"
        elif count == 2:
            return "Quack quack."
        else:
            quacks = Strings.create('quack ', count-2)
            return 'Quack ' + quacks + 'quack.'


    # print out filter name in Python
    def __repr__(self):
        return "duck speech filter"

    # print out filter name in Java
    def toString(self):
        return self.__repr__()