def assertValidNavigation(self, navigation: MkDocsNavigation, *, assert_previous_next: bool = True, assert_parent: bool = True): pages = _get_by_type(navigation, Page) if assert_previous_next: bookended = [None] + pages + [None] zipped = zip(bookended[:-2], bookended[1:-1], bookended[2:]) for page0, page1, page2 in zipped: self.assertEqual( page1.previous_page, page0, 'Incorrect previous_page reference in {}'.format(page1)) self.assertEqual( page1.next_page, page2, 'Incorrect next_page reference in {}'.format(page1)) if assert_parent: sections = _get_by_type(navigation, Section) for section in sections: for child in section.children: self.assertEqual( child.parent, section, 'Incorrect parent reference in {}'.format(child)) self.assertEqual(navigation.pages, pages)
def test_get_by_type_nested_sections(self): nav_cfg = [{'Section 1': [{'Section 2': [{'Page': 'page.md'}]}]}] cfg = load_config(nav=nav_cfg, site_url='http://example.com/') files = Files([ File('page.md', cfg['docs_dir'], cfg['site_dir'], cfg['use_directory_urls']) ]) site_navigation = get_navigation(files, cfg) self.assertEqual(len(_get_by_type(site_navigation, Section)), 2)
def to_mkdocs(self) -> MkDocsNavigation: pages = _get_by_type(self.items, Page) _add_previous_and_next_links(pages) _add_parent_links(self.items) from datetime import datetime date_time = datetime.today() diff_day_list = [] page_list = [] for page in pages: self._get_meta(page) if 'time' in page.meta: page_time = page.meta['time'] year = int(page_time[0:4]) month = int(page_time[4:6]) day = int(page_time[6:8]) page_datetime = datetime(year, month, day) time_delta = date_time - page_datetime total_seconds = time_delta.total_seconds() total_days = total_seconds / 3600 / 24 else: total_days = 999999 diff_day_list.append(total_days) import numpy as np argsorted = np.argsort(diff_day_list) for index in argsorted: if pages[index].is_homepage: page_list.insert(0, pages[index]) else: page_list.append(pages[index]) if diff_day_list[index] < self.maximum_days_ahead: if len(page_list) <= self.maximum_file_homepage: pages[index].shown_in_homepage = True continue pages[index].shown_in_homepage = False # _add_previous_and_next_links(page_list) print('Finishing daytime processing') return MkDocsNavigation(self.items, page_list)
def createNavigation(items: List[NavigationItem]) -> MkDocsNavigation: pages = _get_by_type(items, Page) _add_previous_and_next_links(pages) _add_parent_links(items) return MkDocsNavigation(items, pages)
def to_mkdocs(self) -> MkDocsNavigation: pages = _get_by_type(self.items, Page) _add_previous_and_next_links(pages) _add_parent_links(self.items) return MkDocsNavigation(self.items, pages)