mirror of
https://github.com/mkdocs/mkdocs.git
synced 2026-03-27 09:58:31 +07:00
Cache the value of documentation_pages
This commit is contained in:
@@ -38,6 +38,7 @@ class Files:
|
||||
def __init__(self, files: List[File]) -> None:
|
||||
self._files = files
|
||||
self._src_uris: Optional[Dict[str, File]] = None
|
||||
self._documentation_pages: Optional[Sequence[File]] = None
|
||||
|
||||
def __iter__(self) -> Iterator[File]:
|
||||
"""Iterate over the files within."""
|
||||
@@ -70,12 +71,12 @@ class Files:
|
||||
|
||||
def append(self, file: File) -> None:
|
||||
"""Append file to Files collection."""
|
||||
self._src_uris = None
|
||||
self._src_uris = self._documentation_pages = None
|
||||
self._files.append(file)
|
||||
|
||||
def remove(self, file: File) -> None:
|
||||
"""Remove file from Files collection."""
|
||||
self._src_uris = None
|
||||
self._src_uris = self._documentation_pages = None
|
||||
self._files.remove(file)
|
||||
|
||||
def copy_static_files(self, dirty: bool = False) -> None:
|
||||
@@ -86,7 +87,9 @@ class Files:
|
||||
|
||||
def documentation_pages(self) -> Sequence[File]:
|
||||
"""Return iterable of all Markdown page file objects."""
|
||||
return [file for file in self if file.is_documentation_page()]
|
||||
if self._documentation_pages is None:
|
||||
self._documentation_pages = [file for file in self if file.is_documentation_page()]
|
||||
return self._documentation_pages
|
||||
|
||||
def static_pages(self) -> Sequence[File]:
|
||||
"""Return iterable of all static page file objects."""
|
||||
|
||||
@@ -380,13 +380,14 @@ class TestFiles(PathAssertionMixin, unittest.TestCase):
|
||||
self.assertEqual(files.get_file_from_path('foo/bar.jpg'), fs[3])
|
||||
self.assertEqual(files.get_file_from_path('missing.jpg'), None)
|
||||
self.assertTrue(fs[2].src_uri in files.src_uris)
|
||||
self.assertTrue(fs[2].src_uri in files.src_uris)
|
||||
extra_file = File('extra.md', '/path/to/docs', '/path/to/site', use_directory_urls=True)
|
||||
self.assertFalse(extra_file.src_uri in files.src_uris)
|
||||
files.append(extra_file)
|
||||
self.assertEqual(len(files), 7)
|
||||
self.assertTrue(extra_file.src_uri in files.src_uris)
|
||||
self.assertEqual(files.documentation_pages(), [fs[0], fs[1], extra_file])
|
||||
files.remove(fs[1])
|
||||
self.assertEqual(files.documentation_pages(), [fs[0], extra_file])
|
||||
|
||||
@tempdir(
|
||||
files=[
|
||||
|
||||
Reference in New Issue
Block a user