Esempio n. 1
0
    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)
Esempio n. 2
0
 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)
Esempio n. 3
0
    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)
Esempio n. 5
0
 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)