def map_to_object(self, word_data): json_obj_list = [] if not word_data['etymologies']: word_data['etymologies'] = [('', '')] for (current_etymology, next_etymology) in zip_longest(word_data['etymologies'], word_data['etymologies'][1:], fillvalue=('999', '')): data_obj = WordData() data_obj.etymology = current_etymology[1] for pronunciation_index, text, audio_links in word_data['pronunciations']: if (self.count_digits(current_etymology[0]) == self.count_digits(pronunciation_index)) or (current_etymology[0] <= pronunciation_index < next_etymology[0]): data_obj.pronunciations = text data_obj.audio_links = audio_links for definition_index, definition_text, definition_type in word_data['definitions']: if current_etymology[0] <= definition_index < next_etymology[0]: def_obj = Definition() def_obj.text = definition_text def_obj.part_of_speech = definition_type for example_index, examples, _ in word_data['examples']: if example_index.startswith(definition_index): def_obj.example_uses = examples for related_word_index, related_words, relation_type in word_data['related']: if related_word_index.startswith(definition_index): def_obj.related_words.append(RelatedWord(relation_type, related_words)) data_obj.definition_list.append(def_obj) json_obj_list.append(data_obj.to_json()) return json_obj_list
def make_class(etymology_list, definition_list, example_list, related_words_list, pronunciation_list ): """ Takes all the data and makes classes. """ json_obj_list = [] if not etymology_list: etymology_list = [('', '')] for etymology_index, etymology_text in etymology_list: data_obj = WordData() data_obj.etymology = etymology_text for pronunciation_index, pronunciations, audio_links in pronunciation_list: if pronunciation_index.startswith(etymology_index) \ or pronunciation_index.count('.') == etymology_index.count('.'): data_obj.pronunciations = pronunciations data_obj.audio_links = audio_links for definition_index, definition_text, definition_type in definition_list: if definition_index.startswith(etymology_index) \ or definition_index.count('.') == etymology_index.count('.'): def_obj = Definition() def_obj.text = definition_text def_obj.part_of_speech = definition_type for example_index, examples, _ in example_list: if example_index.startswith(definition_index): def_obj.example_uses = examples for related_word_index, related_words, relation_type in related_words_list: if related_word_index.startswith(definition_index) \ or (related_word_index.startswith(etymology_index) \ and related_word_index.count('.') == definition_index.count('.')): words = None try: words = next( item.words for item in def_obj.related_words if item.relationship_type == relation_type) except StopIteration: pass if words is not None: words += related_words break related_word_obj = RelatedWord() related_word_obj.words = related_words related_word_obj.relationship_type = relation_type def_obj.related_words.append(related_word_obj) data_obj.definition_list.append(def_obj) json_obj_list.append(data_obj.to_json()) return json_obj_list
def make_class(etymology_list, definition_list, example_list, related_words_list, pronunciation_list, translation_dict, definition_index_translations ): """ Takes all the data and makes classes. """ #print translation_dict.keys() json_obj_list = [] if not etymology_list: etymology_list = [('', '')] for etymology_index, etymology_text in etymology_list: data_obj = WordData() data_obj.etymology = etymology_text for pronunciation_index, pronunciations, audio_links in pronunciation_list: if pronunciation_index.startswith(etymology_index) \ or pronunciation_index.count('.') == etymology_index.count('.'): data_obj.pronunciations = pronunciations data_obj.audio_links = audio_links for definition_index, definition_text, definition_type in definition_list: #print definition_index, type(definition_text) #index_translations = map_id_word_translations_to_definitions(definition_index, translation_dict, definition_text) #print definition_index, len(definition_index_translations[definition_index]) if definition_index_translations.has_key(definition_index): translations = definition_index_translations[definition_index] data_obj.translations.append(translations) if definition_index.startswith(etymology_index) \ or definition_index.count('.') == etymology_index.count('.'): def_obj = Definition() def_obj.text = definition_text def_obj.part_of_speech = definition_type for example_index, examples, _ in example_list: if example_index.startswith(definition_index): def_obj.example_uses = examples for related_word_index, related_words, relation_type in related_words_list: if related_word_index.startswith(definition_index) \ or (related_word_index.startswith(etymology_index) \ and related_word_index.count('.') == definition_index.count('.')): words = None try: words = next( item.words for item in def_obj.related_words if item.relationship_type == relation_type) except StopIteration: pass if words is not None: words += related_words break related_word_obj = RelatedWord() related_word_obj.words = related_words related_word_obj.relationship_type = relation_type def_obj.related_words.append(related_word_obj) data_obj.definition_list.append(def_obj) json_obj_list.append(data_obj.to_json()) return json_obj_list
def make_class(self, word_data): """ Takes all the data and makes classes. """ json_obj_list = [] if not word_data['etymologies']: word_data['etymologies'] = [('', '')] for etymology_index, etymology_text in word_data['etymologies']: data_obj = WordData() data_obj.etymology = etymology_text for pronunciation_index, text, audio_links in word_data[ 'pronunciations']: if pronunciation_index.startswith(etymology_index) \ or pronunciation_index.count('.') == etymology_index.count('.'): data_obj.pronunciations = text data_obj.audio_links = audio_links for definition_index, definition_text, definition_type in word_data[ 'definitions']: if definition_index.startswith(etymology_index) \ or definition_index.count('.') == etymology_index.count('.'): def_obj = Definition() def_obj.text = definition_text def_obj.part_of_speech = definition_type for example_index, examples, _ in word_data['examples']: if example_index.startswith(definition_index): def_obj.example_uses = examples for related_word_index, related_words, relation_type in word_data[ 'related']: if related_word_index.startswith(definition_index) \ or (related_word_index.startswith(etymology_index) \ and related_word_index.count('.') == definition_index.count('.')): words = None try: words = next( item.words for item in def_obj.related_words if item.relationship_type == relation_type) except StopIteration: pass if words is not None: words += related_words break related_word_obj = RelatedWord() related_word_obj.words = related_words related_word_obj.relationship_type = relation_type def_obj.related_words.append(related_word_obj) data_obj.definition_list.append(def_obj) json_obj_list.append(data_obj.to_json()) return json_obj_list