def generate_text_object(obj, db, q, config): philo_id = list(obj.philo_id) while philo_id[-1] == 0: philo_id.pop() text_object = {"query": dict([i for i in q]), "philo_id": ' '.join([str(i) for i in philo_id])} text_object['prev'] = ' '.join(obj.prev.split()[:7][:philo_slices[obj.philo_type]]) text_object['next'] = ' '.join(obj.next.split()[:7][:philo_slices[obj.philo_type]]) metadata_fields = {} for metadata in db.locals['metadata_fields']: if db.locals['metadata_types'][metadata] == "doc": metadata_fields[metadata] = obj[metadata] text_object['metadata_fields'] = metadata_fields citation_hrefs = citation_links(db, config, obj) citation = biblio_citation(obj, citation_hrefs) text_object['citation'] = citation text = get_text_obj(obj, config, q, db.locals['word_regex']) text_object['text'] = text return text_object
def generate_text_object(obj, db, q, config, note=False): philo_id = list(obj.philo_id) while philo_id[-1] == 0: philo_id.pop() text_object = {"query": dict([i for i in q]), "philo_id": ' '.join([str(i) for i in philo_id])} text_object['prev'] = neighboring_object_id(db, obj.prev) text_object['next'] = neighboring_object_id(db, obj.next) metadata_fields = {} for metadata in db.locals['metadata_fields']: if db.locals['metadata_types'][metadata] == "doc": metadata_fields[metadata] = obj[metadata] text_object['metadata_fields'] = metadata_fields citation_hrefs = citation_links(db, config, obj) citation = biblio_citation(obj, citation_hrefs) text_object['citation'] = citation text, imgs = get_text_obj(obj, config, q, db.locals['word_regex'], note=note) text_object['text'] = text text_object['imgs'] = imgs return text_object
def generate_toc_object(obj, db, q, config): """This function fetches all philo_ids for div elements within a doc""" toms_object = nav_query(obj, db) text_hierarchy = [] for i in toms_object: if i['philo_name'] == '__philo_virtual' and i["philo_type"] != "div1": continue elif i['word_count'] == 0: continue else: philo_id = i['philo_id'] philo_type = i['philo_type'] display_name = "" if i['philo_name'] == "front": display_name = "Front Matter" elif i['philo_name'] == "note": continue else: display_name = i['head'] if display_name: display_name = display_name.strip() if not display_name: if i["type"] and i["n"]: display_name = i['type'] + " " + i["n"] else: display_name = i["head"] or i['type'] or i['philo_name'] or i['philo_type'] if display_name == "__philo_virtual": display_name = i['philo_type'] display_name = display_name[0].upper() + display_name[1:] link = f.make_absolute_object_link(config, philo_id.split()[:philo_slices[philo_type]]) philo_id = ' '.join(philo_id.split()[:philo_slices[philo_type]]) toc_element = {"philo_id": philo_id, "philo_type": philo_type, "label": display_name, "href": link} text_hierarchy.append(toc_element) metadata_fields = {} for metadata in db.locals['metadata_fields']: if db.locals['metadata_types'][metadata] == "doc": metadata_fields[metadata] = obj[metadata] citation_hrefs = citation_links(db, config, obj) citation = biblio_citation(obj, citation_hrefs) toc_object = {"query": dict([i for i in q]), "philo_id": obj.philo_id, "toc": text_hierarchy, "metadata_fields": metadata_fields, "citation": citation} return toc_object