Skip to content

Commit f7fba4e

Browse files
committed
Refactor
1 parent de4f7d5 commit f7fba4e

File tree

3 files changed

+44
-38
lines changed

3 files changed

+44
-38
lines changed

src/mkdocs_include_markdown_plugin/event.py

Lines changed: 5 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,11 @@
2828
)
2929
from mkdocs_include_markdown_plugin.files_watcher import FilesWatcher
3030
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+
)
3136

3237

3338
if TYPE_CHECKING: # pragma: no cover
@@ -46,40 +51,6 @@
4651
)
4752

4853

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(num: int) -> str:
58-
"""Return a placeholder."""
59-
return f'{INLINE_PLACEHOLDER_PREFIX}{num}{ETX}'
60-
61-
62-
def escape_placeholders(text: str) -> str:
63-
"""Escape placeholders in the given text."""
64-
return text.replace(STX, f'\\{STX}').replace(ETX, f'\\{ETX}')
65-
66-
67-
def unescape_placeholders(text: str) -> str:
68-
"""Unescape placeholders in the given text."""
69-
return text.replace(f'\\{STX}', STX).replace(f'\\{ETX}', ETX)
70-
71-
72-
def save_placeholder(
73-
placeholders_contents: list[tuple[str, str]],
74-
text_to_include: str,
75-
) -> str:
76-
"""Save the included text and return the placeholder."""
77-
inclusion_index = len(placeholders_contents)
78-
placeholder = build_placeholder(inclusion_index)
79-
placeholders_contents.append((placeholder, text_to_include))
80-
return placeholder
81-
82-
8354
@dataclass
8455
class Settings: # noqa: D101
8556
exclude: list[str] | None
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

tests/test_unit/test_include_markdown.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,8 @@
22

33
import pytest
44

5-
from mkdocs_include_markdown_plugin.event import (
6-
build_placeholder,
7-
on_page_markdown,
8-
)
5+
from mkdocs_include_markdown_plugin.event import on_page_markdown
6+
from mkdocs_include_markdown_plugin.placeholders import build_placeholder
97

108

119
@pytest.mark.parametrize(

0 commit comments

Comments
 (0)