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
Beispiel #2
0
 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 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
Beispiel #4
0
    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