Ejemplo n.º 1
0
    def get_words_with_block(self, block, exclude=None) -> [tuple]:
        """
        This functions returns a list of Korean words which also contains blocks
        with the same etymology.
    
        When the etymology is not available, an empty list is returned. This
        typically happens when the input block is a suffix.
        """
        if block.etymology:
            query = """SELECT word, etymology, meaning FROM `Korean` 
                       WHERE etymology LIKE '%{}%'
                       AND length(word) = length(etymology)
                       """.format(block.etymology)
            if exclude:
                query += """ AND word != '{}'""".format(exclude)
            self.cursor.execute(query)
            results = self.cursor.fetchall()
            words = [r for r in results if detect_language(r[1]) is not 'korean']

        else:
            words = []
    
        return words
Ejemplo n.º 2
0

#cgitb.enable()

#UI.render_empty()

# Entree
UI.render_top()


# Main
form = cgi.FieldStorage()
if 'word' in form.keys():
    input_str = form["word"].value
    try:    
        language = detect_language(_u(input_str))
    except ValueError:
        language = None
        UI.render_error('Language not supported')
        

    if language == 'korean':
        from asian_word_analyzer.korean.db import DbUtil
        from asian_word_analyzer.korean.word import KoreanWord as Word
    elif language == 'thai':
        from asian_word_analyzer.thai.word import get_words_with_block
        from asian_word_analyzer.thai.word import ThaiWord as Word

    if 'Word' in locals():
        word = Word(input_str, compute_ethym=True)
        UI.render_main(word)
Ejemplo n.º 3
0
def test_detect_language_failure(word):
    assert 'unknown' == detect_language(word, raise_if_unknown=False)

    
Ejemplo n.º 4
0
def test_detect_language_unknown(word):
    with pytest.raises(ValueError):
        detect_language(word, raise_if_unknown=True)
Ejemplo n.º 5
0
def test_detect_language(word, expected):
    assert expected == detect_language(word)
Ejemplo n.º 6
0
def test_detect_language_failure(word):
    assert 'unknown' == detect_language(word, raise_if_unknown=False)

    
Ejemplo n.º 7
0
def test_detect_language_unknown(word):
    with pytest.raises(ValueError):
        detect_language(word, raise_if_unknown=True)
Ejemplo n.º 8
0
def test_detect_language(word, expected):
    assert expected == detect_language(word)
Ejemplo n.º 9
0
def get_word_and_db_util_classes(language):
    if language == 'korean':
        return KoreanDbUtil, KoreanWord
    elif language == 'thai':
        return ThaiDbUtil, ThaiWord


# Entree
UI.render_top()

# Main
form = cgi.FieldStorage()
if 'word' in form.keys():
    input_str = form["word"].value
    try:
        language = detect_language(_u(input_str))
    except ValueError:
        UI.render_error('Language not supported')

    if 'language' in locals():
        DbUtil, Word = get_word_and_db_util_classes(language)
        word = Word(input_str, compute_etymology=True)
        UI.render_main(word)
        blocks = word.get_blocks_for_selected_meaning()
        for block in blocks:
            word_tuples = DbUtil().get_words_with_block(block, exclude=word)
            words = [
                Word(string=r[0], etymology=r[1], meaning=r[2])
                for r in word_tuples
            ]
            UI.render_block(block, words)