diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index e98aa84..3f8ae0d 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.5.0 + rev: v4.6.0 hooks: - id: check-toml - id: check-yaml @@ -29,7 +29,7 @@ repos: hooks: - id: slotscheck language: system - exclude: ^(?!pandoc_numbering.py) + exclude: ^(?!pandoc_numbering/.*.py) - repo: https://github.com/dosisod/refurb rev: v2.0.0 @@ -46,13 +46,13 @@ repos: hooks: - id: ruff language: system - exclude: ^(?!pandoc_numbering.py) + exclude: ^(?!pandoc_numbering/.*.py) - repo: https://github.com/psf/black rev: 24.3.0 hooks: - id: black-jupyter - args: [--config=pyproject.toml, pandoc_numbering.py, tests] + args: [--config=pyproject.toml, pandoc_numbering, tests] - repo: https://github.com/PyCQA/doc8/ rev: v1.1.1 @@ -65,19 +65,19 @@ repos: hooks: - id: mypy language: system - exclude: ^(?!pandoc_numbering.py) + exclude: ^(?!pandoc_numbering/.*.py) - repo: https://github.com/pycqa/flake8 rev: 7.0.0 hooks: - id: flake8 language: system - exclude: ^(?!pandoc_numbering.py) + exclude: ^(?!pandoc_numbering/.*.py) - repo: https://github.com/pre-commit/mirrors-pylint rev: v3.0.0a5 hooks: - id: pylint language: system - exclude: ^(?!pandoc_numbering.py) + exclude: ^(?!pandoc_numbering/.*.py) diff --git a/pandoc_numbering.py b/pandoc_numbering/_main.py similarity index 88% rename from pandoc_numbering.py rename to pandoc_numbering/_main.py index dc4d9a3..5fe84a4 100644 --- a/pandoc_numbering.py +++ b/pandoc_numbering/_main.py @@ -1135,9 +1135,9 @@ def meta_listing(category, definition, defined): ) -def meta_format_text(category, definition, defined): +def meta_format(category, definition, defined, tag): """ - Compute format text for a category. + Compute format text for a category and a tag. Arguments --------- @@ -1147,37 +1147,24 @@ def meta_format_text(category, definition, defined): The definition defined The defined parameter + tag + The tag parameter """ - if "format-text-classic" in definition: - if isinstance(definition["format-text-classic"], MetaInlines): - defined[category]["format-text-classic"] = definition[ - "format-text-classic" - ].content + if tag in definition: + if isinstance(definition[tag], MetaInlines): # Detach from original parent - defined[category]["format-text-classic"].parent = None + defined[category][tag] = definition[tag].content + defined[category][tag].parent = None else: debug( - "[WARNING] pandoc-numbering: " - "format-text-classic is not correct for category " + category - ) - - if "format-text-title" in definition: - if isinstance(definition["format-text-title"], MetaInlines): - defined[category]["format-text-title"] = definition[ - "format-text-title" - ].content - # Detach from original parent - defined[category]["format-text-title"].parent = None - else: - debug( - "[WARNING] pandoc-numbering: " - "format-text-title is not correct for category " + category + f"[WARNING] pandoc-numbering: " + f"{tag} is not correct for category {category}" ) -def meta_format_link(category, definition, defined): +def meta_format_text(category, definition, defined): """ - Compute format link for a category. + Compute format text for a category. Arguments --------- @@ -1188,36 +1175,13 @@ def meta_format_link(category, definition, defined): defined The defined parameter """ - if "format-link-classic" in definition: - if isinstance(definition["format-link-classic"], MetaInlines): - defined[category]["format-link-classic"] = definition[ - "format-link-classic" - ].content - # Detach from original parent - defined[category]["format-link-classic"].parent = None - else: - debug( - "[WARNING] pandoc-numbering: " - "format-link-classic is not correct for category " + category - ) - - if "format-link-title" in definition: - if isinstance(definition["format-link-title"], MetaInlines): - defined[category]["format-link-title"] = definition[ - "format-link-title" - ].content - # Detach from original parent - defined[category]["format-link-title"].parent = None - else: - debug( - "[WARNING] pandoc-numbering: " - "format-link-title is not correct for category " + category - ) + meta_format(category, definition, defined, "format-text-classic") + meta_format(category, definition, defined, "format-text-title") -def meta_format_caption(category, definition, defined): +def meta_format_link(category, definition, defined): """ - Compute format caption for a category. + Compute format link for a category. Arguments --------- @@ -1228,27 +1192,8 @@ def meta_format_caption(category, definition, defined): defined The defined parameter """ - if "format-caption-classic" in definition: - if isinstance(definition["format-caption-classic"], MetaInlines): - defined[category]["format-caption-classic"] = stringify( - definition["format-caption-classic"] - ) - else: - debug( - "[WARNING] pandoc-numbering: " - "format-caption-classic is not correct for category " + category - ) - - if "format-caption-title" in definition: - if isinstance(definition["format-caption-title"], MetaInlines): - defined[category]["format-caption-title"] = stringify( - definition["format-caption-title"] - ) - else: - debug( - "[WARNING] pandoc-numbering: " - "format-caption-title is not correct for category " + category - ) + meta_format(category, definition, defined, "format-link-classic") + meta_format(category, definition, defined, "format-link-title") def meta_format_entry(category, definition, defined): @@ -1264,34 +1209,35 @@ def meta_format_entry(category, definition, defined): defined The defined parameter """ - if "format-entry-classic" in definition: - if isinstance(definition["format-entry-classic"], MetaInlines): - defined[category]["format-entry-classic"] = definition[ - "format-entry-classic" - ].content - # Detach from original parent - defined[category]["format-entry-classic"].parent = None - else: - debug( - "[WARNING] pandoc-numbering: " - "format-entry-classic is not correct for category " + category - ) + meta_format(category, definition, defined, "format-entry-classic") + meta_format(category, definition, defined, "format-entry-title") - if "format-entry-title" in definition: - if isinstance(definition["format-entry-title"], MetaInlines): - defined[category]["format-entry-title"] = definition[ - "format-entry-title" - ].content - # Detach from original parent - defined[category]["format-entry-title"].parent = None - else: - debug( - "[WARNING] pandoc-numbering: " - "format-entry-title is not correct for category " + category - ) +def meta_format_caption(category, definition, defined): + """ + Compute format caption for a category. -def meta_entry_tab(category, definition, defined): + Arguments + --------- + category + The category + definition + The definition + defined + The defined parameter + """ + for tag in ("format-caption-classic", "format-caption-title"): + if tag in definition: + if isinstance(definition[tag], MetaInlines): + defined[category][tag] = stringify(definition[tag]) + else: + debug( + f"[WARNING] pandoc-numbering: " + f"{tag} is not correct for category {category}" + ) + + +def meta_entry(category, definition, defined, tag): """ Compute entry tab for a category. @@ -1303,38 +1249,56 @@ def meta_entry_tab(category, definition, defined): The definition defined The defined parameter + tag + The tag parameter """ - if "entry-tab" in definition: - if isinstance(definition["entry-tab"], MetaString): - value = definition["entry-tab"].text + if tag in definition: + if isinstance(definition[tag], MetaString): + value = definition[tag].text elif ( - isinstance(definition["entry-tab"], MetaInlines) - and len(definition["entry-tab"].content) == 1 + isinstance(definition[tag], MetaInlines) + and len(definition[tag].content) == 1 ): - value = definition["entry-tab"].content[0].text + value = definition[tag].content[0].text else: debug( - "[WARNING] pandoc-numbering: entry-tab is not correct for category " - + category + f"[WARNING] pandoc-numbering: " + f"{tag} is not correct for category {category}" ) return - # Get the tab + # Get the element try: - tab = float(value) - if tab > 0: - defined[category]["entry-tab"] = tab + element = float(value) + if element > 0: + defined[category][tag] = element else: debug( - "[WARNING] pandoc-numbering: " - "entry-tab must be positive for category " + category + f"[WARNING] pandoc-numbering: " + f"{tag} must be positive for category {category}" ) except ValueError: debug( - "[WARNING] pandoc-numbering: entry-tab is not correct for category " - + category + f"[WARNING] pandoc-numbering: " + f"{tag} is not correct for category {category}" ) +def meta_entry_tab(category, definition, defined): + """ + Compute entry tab for a category. + + Arguments + --------- + category + The category + definition + The definition + defined + The defined parameter + """ + meta_entry(category, definition, defined, "entry-tab") + + def meta_entry_space(category, definition, defined): """ Compute entry space for a category. @@ -1348,35 +1312,7 @@ def meta_entry_space(category, definition, defined): defined The defined parameter """ - if "entry-space" in definition: - if isinstance(definition["entry-space"], MetaString): - value = definition["entry-space"].text - elif ( - isinstance(definition["entry-space"], MetaInlines) - and len(definition["entry-space"].content) == 1 - ): - value = definition["entry-space"].content[0].text - else: - debug( - "[WARNING] pandoc-numbering: entry-space is not correct for category " - + category - ) - return - # Get the space - try: - space = float(value) - if space > 0: - defined[category]["entry-space"] = space - else: - debug( - "[WARNING] pandoc-numbering: " - "entry-space must be positive for category " + category - ) - except ValueError: - debug( - "[WARNING] pandoc-numbering: entry-space is not correct for category " - + category - ) + meta_entry(category, definition, defined, "entry-space") def meta_levels(category, definition, defined): diff --git a/pyproject.toml b/pyproject.toml index 18e0d49..bf6ae4a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -34,7 +34,7 @@ homepage = "https://github.com/chdemko/pandoc-numbering" keywords = ["pandoc", "filters", "numbering"] license = "BSD-3-Clause" name = "pandoc-numbering" -packages = [{include = "pandoc_numbering.py"}] +packages = [{include = "pandoc_numbering/"}] readme = "README.md" version = "0.0.0.0" diff --git a/tox.ini b/tox.ini index e68fb64..0a1585b 100644 --- a/tox.ini +++ b/tox.ini @@ -22,14 +22,14 @@ commands_pre = poetry env use {envpython} poetry install commands = - poetry run slotscheck pandoc_numbering.py - poetry run refurb pandoc_numbering.py + poetry run slotscheck pandoc_numbering + poetry run refurb pandoc_numbering poetry run teyit --show-stats --fail-on-change tests/ - poetry run ruff pandoc_numbering.py - poetry run black --check --diff pandoc_numbering.py tests + poetry run ruff pandoc_numbering + poetry run black --check --diff pandoc_numbering tests poetry run doc8 -q docs - poetry run mypy pandoc_numbering.py - poetry run flake8 pandoc_numbering.py + poetry run mypy pandoc_numbering + poetry run flake8 pandoc_numbering commands_post = poetry env use system @@ -39,7 +39,7 @@ commands_pre = poetry env use {envpython} poetry install commands = - poetry run pylint pandoc_numbering.py + poetry run pylint pandoc_numbering commands_post = poetry env use system