예제 #1
0
 def kotusGradClass(self, word, grad_type):
     if not grad_type in ["av1", "av2", "av3", "av4", "av5", "av6"]:
         return u""
     word = self.removeSuffix(word)
     if len(word) == 0: return u""
     if voikkoutils.is_consonant(
             word[-1]) and not voikkoutils.is_consonant(word[-2]):
         if word[-4:-2] == u'ng': return u'G'
         if word[-4:-2] == u'mm': return u'H'
         if word[-4:-2] == u'nn': return u'J'
         if word[-4:-2] == u'll': return u'I'
         if word[-4:-2] == u'rr': return u'K'
         if word[-3] == u'd': return u'F'
         if word[-3] == u't': return u'C'
         if word[-3] == u'k': return u'A'
         if word[-3] == u'p': return u'B'
         if word[-3] == u'v': return u'E'
     if grad_type == u'av1':
         if word[-3:-1] == u'tt': return u'C'
         if word[-3:-1] == u'kk': return u'A'
         if word[-3:-1] == u'pp': return u'B'
         if word[-3:-1] == u'mp': return u'H'
         if word[-2] == u'p' and not voikkoutils.is_consonant(word[-1]):
             return u'E'
         if word[-3:-1] == u'nt': return u'J'
         if word[-3:-1] == u'lt': return u'I'
         if word[-3:-1] == u'rt': return u'K'
         if word[-2] == u't': return u'F'
         if word[-3:-1] == u'nk': return u'G'
         if word[-3:] == u'uku': return u'M'
         if word[-3:] == u'yky': return u'M'
     if grad_type == u'av2':
         if word[-4:-2] == u'ng': return u'G'
         if word[-4:-2] == u'mm': return u'H'
         if word[-4:-2] == u'nn': return u'J'
         if word[-4:-2] == u'll': return u'I'
         if word[-4:-2] == u'rr': return u'K'
         if word[-3] == u'd': return u'F'
         if word[-3] == u't': return u'C'
         if word[-3] == u'k': return u'A'
         if word[-3] == u'p': return u'B'
         if word[-3] == u'b': return u'O'  # Unofficial, not in Kotus
         if word[-3] == u'g': return u'P'  # Unofficial, not in Kotus
         if word[-3] == u'v': return u'E'
     if grad_type == u'av3':  # k -> j
         if word[-2] == u'k': return u'L'
     if grad_type == u'av4':  # j -> k
         if word[-2] == u'j': return u'L'
         if word[-3] == u'j': return u'L'
     if grad_type == u'av5':  # k -> -
         if word[-2] == u'k': return u'D'
     if grad_type == u'av6':  # - -> k
         return u'D'
     return u''
예제 #2
0
	def kotusGradClass(self, word, grad_type):
		if not grad_type in ["av1", "av2", "av3", "av4", "av5", "av6"]:
			return u""
		word = self.removeSuffix(word)
		if len(word) == 0: return u""
		if voikkoutils.is_consonant(word[-1]) and not voikkoutils.is_consonant(word[-2]):
			if word[-4:-2] == u'ng': return u'G'
			if word[-4:-2] == u'mm': return u'H'
			if word[-4:-2] == u'nn': return u'J'
			if word[-4:-2] == u'll': return u'I'
			if word[-4:-2] == u'rr': return u'K'
			if word[-3] == u'd': return u'F'
			if word[-3] == u't': return u'C'
			if word[-3] == u'k': return u'A'
			if word[-3] == u'p': return u'B'
			if word[-3] == u'v': return u'E'
		if grad_type == u'av1':
			if word[-3:-1] == u'tt': return u'C'
			if word[-3:-1] == u'kk': return u'A'
			if word[-3:-1] == u'pp': return u'B'
			if word[-3:-1] == u'mp': return u'H'
			if word[-2] == u'p' and not voikkoutils.is_consonant(word[-1]):
				return u'E'
			if word[-3:-1] == u'nt': return u'J'
			if word[-3:-1] == u'lt': return u'I'
			if word[-3:-1] == u'rt': return u'K'
			if word[-2] == u't': return u'F'
			if word[-3:-1] == u'nk': return u'G'
			if word[-3:] == u'uku': return u'M'
			if word[-3:] == u'yky': return u'M'
		if grad_type == u'av2':
			if word[-4:-2] == u'ng': return u'G'
			if word[-4:-2] == u'mm': return u'H'
			if word[-4:-2] == u'nn': return u'J'
			if word[-4:-2] == u'll': return u'I'
			if word[-4:-2] == u'rr': return u'K'
			if word[-3] == u'd': return u'F'
			if word[-3] == u't': return u'C'
			if word[-3] == u'k': return u'A'
			if word[-3] == u'p': return u'B'
			if word[-3] == u'b': return u'O' # Unofficial, not in Kotus
			if word[-3] == u'g': return u'P' # Unofficial, not in Kotus
			if word[-3] == u'v': return u'E'
		if grad_type == u'av3': # k -> j
			if word[-2] == u'k': return u'L'
		if grad_type == u'av4': # j -> k
			if word[-2] == u'j': return u'L'
			if word[-3] == u'j': return u'L'
		if grad_type == u'av5': # k -> -
			if word[-2] == u'k': return u'D'
		if grad_type == u'av6': # - -> k
			return u'D'
		return u''
예제 #3
0
def __apply_gradation(word, grad_type):
	if grad_type == u'-':
		return (word, word)
	
	if voikkoutils.is_consonant(word[-1]) and not voikkoutils.is_consonant(word[-2]) and len(word) >= 3:
		if word[-4:-2] == u'ng':
			return (word[:-4]+u'nk'+word[-2:], word)
		# uvu/yvy->uku/yky not possible?
		if word[-4:-2] == u'mm':
			return (word[:-4]+u'mp'+word[-2:], word)
		if word[-4:-2] == u'nn':
			return (word[:-4]+u'nt'+word[-2:], word)
		if word[-4:-2] == u'll':
			return (word[:-4]+u'lt'+word[-2:], word)
		if word[-4:-2] == u'rr':
			return (word[:-4]+u'rt'+word[-2:], word)
		if word[-3] == u'd':
			return (word[:-3]+u't'+word[-2:], word)
		if word[-3] in u'tkp':
			return (word[:-2]+word[-3:], word)
		if word[-3] == u'v':
			return (word[:-3]+u'p'+word[-2:], word)
	
	if grad_type == u'av1' and len(word) >= 3:
		if word[-3:-1] in (u'tt',u'kk',u'pp'):
			return (word, word[:-2]+word[-1])
		if word[-3:-1] == u'mp':
			return (word, word[:-3]+u'mm'+word[-1])
		if word[-2] == u'p' and not voikkoutils.is_consonant(word[-1]):
			return (word, word[:-2]+u'v'+word[-1])
		if word[-3:-1] == u'nt':
			return (word, word[:-3]+u'nn'+word[-1])
		if word[-3:-1] == u'lt':
			return (word, word[:-3]+u'll'+word[-1])
		if word[-3:-1] == u'rt':
			return (word, word[:-3]+u'rr'+word[-1])
		if word[-2] == u't':
			return (word, word[:-2]+u'd'+word[-1])
		if word[-3:-1] == u'nk':
			return (word, word[:-3]+u'ng'+word[-1])
		if word[-3:] == u'uku':
			return (word, word[:-3]+u'uvu')
		if word[-3:] == u'yky':
			return (word, word[:-3]+u'yvy')
	if grad_type == u'av2' and len(word) >= 2:
		if word[-3:-1] == u'ng':
			return (word[:-3]+u'nk'+word[-1], word)
		# uvu/yvy->uku/yky not possible?
		if word[-3:-1] == u'mm':
			return (word[:-3]+u'mp'+word[-1], word)
		if word[-3:-1] == u'nn':
			return (word[:-3]+u'nt'+word[-1], word)
		if word[-3:-1] == u'll':
			return (word[:-3]+u'lt'+word[-1], word)
		if word[-3:-1] == u'rr':
			return (word[:-3]+u'rt'+word[-1], word)
		if word[-2] == u'd':
			return (word[:-2]+u't'+word[-1], word)
		if word[-2] in u'tkpbg':
			return (word[:-1]+word[-2:], word)
		if word[-2] == u'v':
			return (word[:-2]+u'p'+word[-1], word)
	if grad_type == u'av3' and len(word) >= 3: # k -> j
		if word[-2] == u'k':
			if voikkoutils.is_consonant(word[-3]):
				return (word, word[:-2]+u'j'+word[-1])
			else:
				return (word, word[:-3]+u'j'+word[-1])
	if grad_type == u'av4' and len(word) >= 3: # j -> k
		if word[-2] == u'j':
			return (word[:-2]+u'k'+word[-1], word)
		if word[-3] == u'j':
			return (word[:-3]+u'k'+word[-2]+word[-1], word)
	if grad_type == u'av5' and len(word) >= 2: # k -> -
		if word[-2] == u'k':
			return (word, word[:-2]+u'$'+word[-1])
	if grad_type == u'av6' and len(word) >= 1: # - -> k
		if voikkoutils.is_consonant(word[-1]): # FIXME: hack
			return (word[:-2]+u'k'+word[-2:], word)
		else:
			return (word[:-1]+u'k'+word[-1], word)
	return None
예제 #4
0
def __apply_gradation(word, grad_type):
    if grad_type == u'-':
        return (word, word)

    if voikkoutils.is_consonant(word[-1]) and not voikkoutils.is_consonant(
            word[-2]) and len(word) >= 3:
        if word[-4:-2] == u'ng':
            return (word[:-4] + u'nk' + word[-2:], word)
        # uvu/yvy->uku/yky not possible?
        if word[-4:-2] == u'mm':
            return (word[:-4] + u'mp' + word[-2:], word)
        if word[-4:-2] == u'nn':
            return (word[:-4] + u'nt' + word[-2:], word)
        if word[-4:-2] == u'll':
            return (word[:-4] + u'lt' + word[-2:], word)
        if word[-4:-2] == u'rr':
            return (word[:-4] + u'rt' + word[-2:], word)
        if word[-3] == u'd':
            return (word[:-3] + u't' + word[-2:], word)
        if word[-3] in u'tkp':
            return (word[:-2] + word[-3:], word)
        if word[-3] == u'v':
            return (word[:-3] + u'p' + word[-2:], word)

    if grad_type == u'av1' and len(word) >= 3:
        if word[-3:-1] in (u'tt', u'kk', u'pp'):
            return (word, word[:-2] + word[-1])
        if word[-3:-1] == u'mp':
            return (word, word[:-3] + u'mm' + word[-1])
        if word[-2] == u'p' and not voikkoutils.is_consonant(word[-1]):
            return (word, word[:-2] + u'v' + word[-1])
        if word[-3:-1] == u'nt':
            return (word, word[:-3] + u'nn' + word[-1])
        if word[-3:-1] == u'lt':
            return (word, word[:-3] + u'll' + word[-1])
        if word[-3:-1] == u'rt':
            return (word, word[:-3] + u'rr' + word[-1])
        if word[-2] == u't':
            return (word, word[:-2] + u'd' + word[-1])
        if word[-3:-1] == u'nk':
            return (word, word[:-3] + u'ng' + word[-1])
        if word[-3:] == u'uku':
            return (word, word[:-3] + u'uvu')
        if word[-3:] == u'yky':
            return (word, word[:-3] + u'yvy')
    if grad_type == u'av2' and len(word) >= 2:
        if word[-3:-1] == u'ng':
            return (word[:-3] + u'nk' + word[-1], word)
        # uvu/yvy->uku/yky not possible?
        if word[-3:-1] == u'mm':
            return (word[:-3] + u'mp' + word[-1], word)
        if word[-3:-1] == u'nn':
            return (word[:-3] + u'nt' + word[-1], word)
        if word[-3:-1] == u'll':
            return (word[:-3] + u'lt' + word[-1], word)
        if word[-3:-1] == u'rr':
            return (word[:-3] + u'rt' + word[-1], word)
        if word[-2] == u'd':
            return (word[:-2] + u't' + word[-1], word)
        if word[-2] in u'tkpbg':
            return (word[:-1] + word[-2:], word)
        if word[-2] == u'v':
            return (word[:-2] + u'p' + word[-1], word)
    if grad_type == u'av3' and len(word) >= 3:  # k -> j
        if word[-2] == u'k':
            if voikkoutils.is_consonant(word[-3]):
                return (word, word[:-2] + u'j' + word[-1])
            else:
                return (word, word[:-3] + u'j' + word[-1])
    if grad_type == u'av4' and len(word) >= 3:  # j -> k
        if word[-2] == u'j':
            return (word[:-2] + u'k' + word[-1], word)
        if word[-3] == u'j':
            return (word[:-3] + u'k' + word[-2] + word[-1], word)
    if grad_type == u'av5' and len(word) >= 2:  # k -> -
        if word[-2] == u'k':
            return (word, word[:-2] + u'$' + word[-1])
    if grad_type == u'av6' and len(word) >= 1:  # - -> k
        if voikkoutils.is_consonant(word[-1]):  # FIXME: hack
            return (word[:-2] + u'k' + word[-2:], word)
        else:
            return (word[:-1] + u'k' + word[-1], word)
    return None