mkdocs-include-markdown-plugin 7.1.7__tar.gz → 7.1.8__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (16) hide show
  1. {mkdocs_include_markdown_plugin-7.1.7 → mkdocs_include_markdown_plugin-7.1.8}/PKG-INFO +1 -1
  2. {mkdocs_include_markdown_plugin-7.1.7 → mkdocs_include_markdown_plugin-7.1.8}/pyproject.toml +1 -1
  3. {mkdocs_include_markdown_plugin-7.1.7 → mkdocs_include_markdown_plugin-7.1.8}/src/mkdocs_include_markdown_plugin/event.py +12 -38
  4. mkdocs_include_markdown_plugin-7.1.8/src/mkdocs_include_markdown_plugin/placeholders.py +37 -0
  5. {mkdocs_include_markdown_plugin-7.1.7 → mkdocs_include_markdown_plugin-7.1.8}/.gitignore +0 -0
  6. {mkdocs_include_markdown_plugin-7.1.7 → mkdocs_include_markdown_plugin-7.1.8}/LICENSE +0 -0
  7. {mkdocs_include_markdown_plugin-7.1.7 → mkdocs_include_markdown_plugin-7.1.8}/README.md +0 -0
  8. {mkdocs_include_markdown_plugin-7.1.7 → mkdocs_include_markdown_plugin-7.1.8}/src/mkdocs_include_markdown_plugin/__init__.py +0 -0
  9. {mkdocs_include_markdown_plugin-7.1.7 → mkdocs_include_markdown_plugin-7.1.8}/src/mkdocs_include_markdown_plugin/cache.py +0 -0
  10. {mkdocs_include_markdown_plugin-7.1.7 → mkdocs_include_markdown_plugin-7.1.8}/src/mkdocs_include_markdown_plugin/config.py +0 -0
  11. {mkdocs_include_markdown_plugin-7.1.7 → mkdocs_include_markdown_plugin-7.1.8}/src/mkdocs_include_markdown_plugin/directive.py +0 -0
  12. {mkdocs_include_markdown_plugin-7.1.7 → mkdocs_include_markdown_plugin-7.1.8}/src/mkdocs_include_markdown_plugin/files_watcher.py +0 -0
  13. {mkdocs_include_markdown_plugin-7.1.7 → mkdocs_include_markdown_plugin-7.1.8}/src/mkdocs_include_markdown_plugin/logger.py +0 -0
  14. {mkdocs_include_markdown_plugin-7.1.7 → mkdocs_include_markdown_plugin-7.1.8}/src/mkdocs_include_markdown_plugin/plugin.py +0 -0
  15. {mkdocs_include_markdown_plugin-7.1.7 → mkdocs_include_markdown_plugin-7.1.8}/src/mkdocs_include_markdown_plugin/process.py +0 -0
  16. {mkdocs_include_markdown_plugin-7.1.7 → mkdocs_include_markdown_plugin-7.1.8}/src/mkdocs_include_markdown_plugin/py.typed +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mkdocs-include-markdown-plugin
3
- Version: 7.1.7
3
+ Version: 7.1.8
4
4
  Summary: Mkdocs Markdown includer plugin.
5
5
  Project-URL: Source, https://github.com/mondeja/mkdocs-include-markdown-plugin
6
6
  Project-URL: Documentation, https://github.com/mondeja/mkdocs-include-markdown-plugin#documentation
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "mkdocs-include-markdown-plugin"
3
- version = "7.1.7"
3
+ version = "7.1.8"
4
4
  description = "Mkdocs Markdown includer plugin."
5
5
  readme = "README.md"
6
6
  license = "Apache-2.0"
@@ -28,10 +28,15 @@ from mkdocs_include_markdown_plugin.directive import (
28
28
  )
29
29
  from mkdocs_include_markdown_plugin.files_watcher import FilesWatcher
30
30
  from mkdocs_include_markdown_plugin.logger import logger
31
+ from mkdocs_include_markdown_plugin.placeholders import (
32
+ escape_placeholders,
33
+ save_placeholder,
34
+ unescape_placeholders,
35
+ )
31
36
 
32
37
 
33
38
  if TYPE_CHECKING: # pragma: no cover
34
- from typing import Literal, TypedDict
39
+ from typing import TypedDict
35
40
 
36
41
  from mkdocs.structure.pages import Page
37
42
 
@@ -46,23 +51,6 @@ if TYPE_CHECKING: # pragma: no cover
46
51
  )
47
52
 
48
53
 
49
- # Placeholders (taken from Python-Markdown)
50
- STX = '\u0002'
51
- ''' "Start of Text" marker for placeholder templates. '''
52
- ETX = '\u0003'
53
- ''' "End of Text" marker for placeholder templates. '''
54
- INLINE_PLACEHOLDER_PREFIX = f'{STX}klzzwxh:'
55
-
56
-
57
- def build_placeholder(
58
- num: int,
59
- directive: Literal['include', 'include-markdown'],
60
- ) -> str:
61
- """Return a placeholder."""
62
- directive_prefix = 'im' if directive == 'include-markdown' else 'i'
63
- return f'{INLINE_PLACEHOLDER_PREFIX}{directive_prefix}{num}{ETX}'
64
-
65
-
66
54
  @dataclass
67
55
  class Settings: # noqa: D101
68
56
  exclude: list[str] | None
@@ -98,8 +86,8 @@ def get_file_content( # noqa: PLR0913, PLR0915
98
86
  else:
99
87
  settings_ignore_paths = []
100
88
 
101
- new_found_include_contents: list[tuple[str, str]] = []
102
- new_found_include_markdown_contents: list[tuple[str, str]] = []
89
+ markdown = escape_placeholders(markdown)
90
+ placeholders_contents: list[tuple[str, str]] = []
103
91
 
104
92
  def found_include_tag( # noqa: PLR0912, PLR0915
105
93
  match: re.Match[str],
@@ -311,11 +299,7 @@ def get_file_content( # noqa: PLR0913, PLR0915
311
299
  f' {readable_files_to_include}',
312
300
  )
313
301
 
314
- nonlocal new_found_include_contents
315
- include_index = len(new_found_include_contents)
316
- placeholder = build_placeholder(include_index, 'include')
317
- new_found_include_contents.append((placeholder, text_to_include))
318
- return placeholder
302
+ return save_placeholder(placeholders_contents, text_to_include)
319
303
 
320
304
  def found_include_markdown_tag( # noqa: PLR0912, PLR0915
321
305
  match: re.Match[str],
@@ -607,15 +591,7 @@ def get_file_content( # noqa: PLR0913, PLR0915
607
591
  f' {readable_files_to_include}',
608
592
  )
609
593
 
610
- nonlocal new_found_include_markdown_contents
611
- markdown_include_index = len(new_found_include_markdown_contents)
612
- placeholder = build_placeholder(
613
- markdown_include_index, 'include-markdown',
614
- )
615
- new_found_include_markdown_contents.append(
616
- (placeholder, text_to_include),
617
- )
618
- return placeholder
594
+ return save_placeholder(placeholders_contents, text_to_include)
619
595
 
620
596
  # Replace contents by placeholders
621
597
  markdown = tags['include-markdown'].sub(
@@ -628,11 +604,9 @@ def get_file_content( # noqa: PLR0913, PLR0915
628
604
  )
629
605
 
630
606
  # Replace placeholders by contents
631
- for placeholder, text in new_found_include_contents:
632
- markdown = markdown.replace(placeholder, text, 1)
633
- for placeholder, text in new_found_include_markdown_contents:
607
+ for placeholder, text in placeholders_contents:
634
608
  markdown = markdown.replace(placeholder, text, 1)
635
- return markdown
609
+ return unescape_placeholders(markdown)
636
610
 
637
611
 
638
612
  def on_page_markdown(
@@ -0,0 +1,37 @@
1
+ """Module for placeholders processing."""
2
+
3
+ # Placeholders (taken from Python-Markdown)
4
+ from __future__ import annotations
5
+
6
+
7
+ STX = '\u0002'
8
+ ''' "Start of Text" marker for placeholder templates. '''
9
+ ETX = '\u0003'
10
+ ''' "End of Text" marker for placeholder templates. '''
11
+ INLINE_PLACEHOLDER_PREFIX = f'{STX}klzzwxh:'
12
+
13
+
14
+ def build_placeholder(num: int) -> str:
15
+ """Return a placeholder."""
16
+ return f'{INLINE_PLACEHOLDER_PREFIX}{num}{ETX}'
17
+
18
+
19
+ def escape_placeholders(text: str) -> str:
20
+ """Escape placeholders in the given text."""
21
+ return text.replace(STX, f'\\{STX}').replace(ETX, f'\\{ETX}')
22
+
23
+
24
+ def unescape_placeholders(text: str) -> str:
25
+ """Unescape placeholders in the given text."""
26
+ return text.replace(f'\\{STX}', STX).replace(f'\\{ETX}', ETX)
27
+
28
+
29
+ def save_placeholder(
30
+ placeholders_contents: list[tuple[str, str]],
31
+ text_to_include: str,
32
+ ) -> str:
33
+ """Save the included text and return the placeholder."""
34
+ inclusion_index = len(placeholders_contents)
35
+ placeholder = build_placeholder(inclusion_index)
36
+ placeholders_contents.append((placeholder, text_to_include))
37
+ return placeholder