Separate 'mkdocs_include_markdown_plugin' from project (#475)

This commit is contained in:
Álvaro Mondéjar
2020-12-06 16:55:04 +01:00
committed by GitHub
parent 49077c2a36
commit eae34832ec
6 changed files with 3 additions and 102 deletions
+1 -1
View File
@@ -3,7 +3,7 @@ title: Home
---
{%
includemarkdown "../README.md"
include-markdown "../README.md"
start="<!--intro-start-->"
end="<!--intro-end-->"
%}
@@ -1,84 +0,0 @@
import cgi
import re
from pathlib import Path
import mkdocs
INCLUDE_TAG_REGEX = re.compile(
r'''
{% # opening tag
\s*
include # directive name
\s+
"(?P<filename>[^"]+)" # "filename"
\s*
%} # closing tag
''',
flags=re.VERBOSE,
)
INCLUDEMARKDOWN_TAG_REGEX = re.compile(
r'''
{% # opening tag
\s*
includemarkdown # directive name
\s+
"(?P<filename>[^"]+)" # "filename"
(?:\s+start="(?P<start>[^"]+)")? # optional start expression
(?:\s+end="(?P<end>[^"]+)")? # optional end expression
\s*
%} # closing tag
''',
flags=re.VERBOSE,
)
class ImportMarkdownPlugin(mkdocs.plugins.BasePlugin):
def on_page_markdown(self, markdown, page, **kwargs):
page_src_path = page.file.abs_src_path
def found_include_tag(match):
filename = match.group('filename')
file_path_abs = Path(page_src_path).parent / filename
if not file_path_abs.exists():
raise ValueError('file not found', filename)
text_to_include = file_path_abs.read_text(encoding='utf8')
# Allow good practice of having a final newline in the file
if text_to_include.endswith('\n'):
text_to_include = text_to_include[:-1]
return text_to_include
def found_includemarkdown_tag(match):
filename = match.group('filename')
start = match.group('start')
end = match.group('end')
file_path_abs = Path(page_src_path).parent / filename
if not file_path_abs.exists():
raise ValueError('file not found', filename)
text_to_include = file_path_abs.read_text(encoding='utf8')
if start:
_, _, text_to_include = text_to_include.partition(start)
if end:
text_to_include, _, _ = text_to_include.partition(end)
return (
'<!-- BEGIN INCLUDE %s %s %s -->\n' % (
filename, cgi.escape(start or ''), cgi.escape(end or '')
)
+ text_to_include
+ '\n<!-- END INCLUDE -->'
)
markdown = re.sub(INCLUDE_TAG_REGEX, found_include_tag, markdown)
markdown = re.sub(INCLUDEMARKDOWN_TAG_REGEX, found_includemarkdown_tag, markdown)
return markdown
@@ -1,15 +0,0 @@
from setuptools import setup
setup(
name='mkdocs_include_markdown_plugin',
version='1.0',
author='Joe Rickerby',
license='Apache 2',
packages=['mkdocs_include_markdown_plugin'],
entry_points={
'mkdocs.plugins': [
'importmarkdown = mkdocs_include_markdown_plugin.plugin:ImportMarkdownPlugin',
]
},
zip_safe=False
)
+1 -1
View File
@@ -32,4 +32,4 @@ markdown_extensions:
repo_url_shortener: True
plugins:
- importmarkdown
- include-markdown
+1 -1
View File
@@ -1,7 +1,7 @@
-e .
-e ./docs/mkdocs_include_markdown_plugin
pytest
mkdocs==1.0.4
mkdocs-include-markdown-plugin==1.0.0
pymdown-extensions
pip-tools
requests