oprypin / mkdocs-literate-nav

MkDocs plugin to specify the navigation in Markdown instead of YAML
https://oprypin.github.io/mkdocs-literate-nav
MIT License
73 stars 8 forks source link

_markdown_config['extensions'] == None bug #18

Closed ChrisDaunt1984 closed 1 year ago

ChrisDaunt1984 commented 1 year ago

Hi

I have encountered the following bug when running a minimal setup on version 0.6.0

  File "...\site-packages\mkdocs_literate_nav\parser.py", line 59, in markdown_to_nav
    extensions=[ext, *self._markdown_config.get("extensions", ())],
TypeError: Value after * must be an iterable, not NoneType

it seems self._markdown_extensions are getting set to the following when looking through the debugger

{'extensions': None, 'extension_configs': {}, 'tab_length': 4}

so when extesions == None, the following code will cause the error above

  def markdown_to_nav(self, roots: tuple[str, ...] = (".",)) -> Nav:
      root = roots[0]
      ext = _MarkdownExtension()
      dir_nav = self.get_nav_for_dir(root)
      if dir_nav:
          nav_file_name, md = dir_nav
          markdown_config = dict(
              self._markdown_config,
              extensions=[ext, *self._markdown_config.get("extensions", ())],
          )

the following seems to resolve this bug in the case where there are no markdown extension

    def markdown_to_nav(self, roots: tuple[str, ...] = (".",)) -> Nav:
        root = roots[0]
        ext = _MarkdownExtension()
        dir_nav = self.get_nav_for_dir(root)
        extensions = self._markdown_config.get("extensions", ()) or ()
        if dir_nav:
            nav_file_name, md = dir_nav
            markdown_config = dict(
                self._markdown_config,
                extensions=[ext, *extensions],
            )