def test_get_words_with_block(): input_str = u'안녕' word = KoreanWord(input_str, compute_ethym=True) block = word.get_blocks_for_selected_meaning()[0] words = DbUtil().get_words_with_block(block) assert len(words) > 0 assert input_str in words.word.values
class Columns(GridLayout): def __init__(self, text, **kwargs): super(Columns, self).__init__(size_hint_x=1, rows=2) self.current_block = 0 self.carousel = Carousel(direction='right', size_hint_x=1, size_hint_y=1) self.carousel.bind(index=self.update_title) self.title_label = Label(font_name=FONT, markup=True, font_size=30, size_hint_y=0.1) self.update_content(text) def update_title(self, *kwargs): if len(kwargs) > 0: self.current_block = kwargs[1] or 0 title = emphasize_part(self.word.string, idx=self.current_block) etymology_str = (' ({})'.format( emphasize_part(self.word.etymology, idx=self.current_block)) if self.word.etymology else '') title += etymology_str self.title_label.text = title def analyze(self, text): self.word = Word(text, compute_etymology=True) self.blocks = self.word.get_blocks_for_selected_meaning() def update_content(self, text): self.clear_widgets() self.carousel.clear_widgets() self.analyze(text) self.update_title() for block in self.blocks: words = DbUtil().get_words_with_block(block, exclude=self.word) self.carousel.add_widget(BlockColumn(block, words)) self.add_widget(self.title_label) self.add_widget(self.carousel)
def test_compute_suffix(self, word, expected): assert expected == KoreanWord(word).suffix
def test_init_incorrect_etymology(self): with pytest.raises(ValueError): KoreanWord(u'안녕', etymology=u'安寧安寧')
def test_init(self, string, etymology, meaning, compute_etymology): KoreanWord(string, etymology, meaning, compute_etymology)
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) blocks = word.get_blocks_for_selected_meaning() for block in blocks: words = DbUtil().get_words_with_block(block, exclude=word) UI.render_block(block, words) else: from asian_word_analyzer.empty_word import EmptyWord UI.render_main(EmptyWord()) # Desert UI.render_bottom()
def analyze(self, text): self.word = Word(text, compute_etymology=True) self.blocks = self.word.get_blocks_for_selected_meaning()
def test_get_words_with_block(self, input_str, exclude, input_str_expected): word = KoreanWord(input_str, compute_etymology=True) block = word.get_blocks_for_selected_meaning()[0] words = DbUtil().get_words_with_block(block, exclude=exclude) assert len(words) > 0 assert input_str_expected == (input_str in [word[0] for word in words])
def test_render_block(self): words = [KoreanWord(string=u'남대문', etymology=u'南大門', meaning=u'(건축물) Namdaemun, the (Great) South Gate (of Seoul)')] ui.render_block(self.block(), words)
def korean_word(): return KoreanWord(u'남대문', u'南大門', u'(건축물) Namdaemun, the (Great) South Gate (of Seoul)')