Source code for katapayadi.core

#! /usr/bin/env python
# -*- coding: utf-8 -*-
# Katapayadi
# Copyright 2008 Santhosh Thottingal <santhosh.thottingal@gmail.com>
# http://www.smc.org.in
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU  Lesser General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
# If you find any bugs or have any suggestions email: santhosh.thottingal@gmail.com
# URL: http://www.smc.org.in

from silpa_common import *
import indicsyllabifier

[docs]class Katapayadi: """Katapayadi class. Instantiate to access the methods. """
[docs] def get_number(self, word): """get the number corressponding to the katapayadi word :param word: The katapayadi number system word :type word: str. :returns: returns the corresponding arabic numeral """ word = word.strip() word = word.split(" ")[0] lang_ka_bases = {'hi_IN': 0x0915, 'bn_IN': 0x0995, 'pa_IN': 0x0A15, 'gu_IN': 0x0A95, 'or_IN': 0x0B15, 'ta_IN': 0x0B95, 'te_IN': 0x0C15, 'ka_IN': 0x0C95, 'ml_IN': 0x0D15} syllablizer_handle = indicsyllabifier.getInstance() syllables = syllablizer_handle.syllabify(word) number = "" # Check if the dectected language is in list. If not, display unsupported langusge try: src_lang_code = detect_lang(word)[word] base = lang_ka_bases[src_lang_code] except: return "Unsupported Language" for cluster in syllables: number = (self.__get_number_for_syllable(cluster, base) + number) return int(number)
def __get_number_for_syllable(self, syllable, base): katapayadi = [1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,0,1,2,3,4,5,1,2,0,3,9,0,4,5,6,7,8] length = len(syllable) index = length - 1 while index >= 0: chr = syllable[index] offset = ord(chr) - base if offset >= 0: try: return str(katapayadi[offset]) except: pass index -= 1 return "0"
[docs] def get_swarasthanas(self, raga): """ get the swarasthana of the raga """ swarasthans = ["Sa"] try: number = int(str(raga)) except: number = self. get_number(raga) if number < 99: return "Could not recognize the raga" melakartha_number = number % 100 quotient = (melakartha_number - 1) / 6 remainder = (melakartha_number-1) % 6 quotient = quotient % 6 if quotient == 0: swarasthans.append("Ri1") swarasthans.append("Ga1") if quotient == 1: swarasthans.append("Ri1") swarasthans.append("Ga2") if quotient == 2: swarasthans.append("Ri1") swarasthans.append("Ga3") if quotient == 3: swarasthans.append("Ri2") swarasthans.append("Ga2") if quotient == 4: swarasthans.append("Ri2") swarasthans.append("Ga3") if quotient == 5: swarasthans.append("Ri3") swarasthans.append("Ga3") if melakartha_number <= 36: swarasthans.append("Ma1") if melakartha_number > 36 and melakartha_number <= 72: swarasthans.append("Ma2") swarasthans.append("Pa") if remainder == 0: swarasthans.append("Da1") swarasthans.append("Ni1") if remainder == 1: swarasthans.append("Da1") swarasthans.append("Ni2") if remainder == 2: swarasthans.append("Da1") swarasthans.append("Ni3") if remainder == 3: swarasthans.append("Da2") swarasthans.append("Ni2") if remainder == 4: swarasthans.append("Da2") swarasthans.append("Ni3") if remainder == 5: swarasthans.append("Da3") swarasthans.append("Ni3") swarasthans.append("Sa") return swarasthans
[docs] def get_module_name(self): """ get the module name """ return "Katapayadi Number System"
[docs] def get_info(self): """ get more info on the module """ return "Decodes the numbers from the katapayadi numbering system"
def getInstance(): return Katapayadi()

Related Topics

This Page