Skip to content

Commit 9d136cc

Browse files
committed
docs: build relative path to preview examples
1 parent e84b1bd commit 9d136cc

File tree

2 files changed

+19
-4
lines changed

2 files changed

+19
-4
lines changed

mkdocs.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,7 @@ markdown_extensions:
236236
- md_in_html
237237
- element-docs:
238238
examples_base: !ENV [ EXAMPLES_BASE, 'http://localhost:4200' ]
239+
md_file: !relative
239240
- toc:
240241
permalink: true
241242

projects/element-docs-builder/md_extension_element_docs/extension.py

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import re
22
import xml.etree.ElementTree as etree
33
from abc import abstractmethod
4+
from pathlib import Path
45
from typing import cast
5-
from urllib.parse import urlencode
6+
from urllib.parse import urlencode, urlparse
67

78
from markdown import Extension
89
from markdown.preprocessors import Preprocessor
@@ -96,9 +97,16 @@ def convert_tag(self, line) -> str:
9697
pass
9798

9899
class ElementExamplePreProcessor(ElementHtmlPreProcessor):
99-
def __init__(self, examples_base, *args, **kwargs):
100+
def __init__(self, examples_base, page, *args, **kwargs):
100101
"""Initialize."""
101102
self.examples_base = examples_base
103+
self.page = page
104+
url = urlparse(self.examples_base)
105+
# If no scheme, we assume we need to build a relative path to the examples
106+
if url.scheme == '':
107+
segments = self.page.split('/')
108+
base = Path('/'.join(['..' if segment else '' for segment in segments]))
109+
self.examples_base = str(base / self.examples_base.lstrip('/'))
102110
super().__init__('si-docs-component', *args, **kwargs)
103111

104112
def convert_tag(self, line) -> str:
@@ -132,13 +140,19 @@ class ElementDocsExtension(Extension):
132140
def __init__(self, *args, **kwargs):
133141
"""Initialize."""
134142
self.config = {
135-
'examples_base': ['', 'Base URL for the examples.']
143+
'examples_base': ['', 'Base URL for the examples.'],
144+
'md_file': ['', 'The markdown file being processed.']
136145
}
137146
super().__init__(*args, **kwargs)
138147

139148
def extendMarkdown(self, md):
140149
"""Add Tabbed to Markdown instance."""
141-
md.preprocessors.register(ElementExamplePreProcessor(self.config.get('examples_base')[0], md), 'element_example', 10)
150+
# Extract current page path
151+
current_page = self.config.get('md_file')[0].config._current_page
152+
page = ''
153+
if hasattr(current_page, 'abs_url'):
154+
page = current_page.abs_url
155+
md.preprocessors.register(ElementExamplePreProcessor(self.config.get('examples_base')[0], page, md), 'element_example', 10)
142156
md.treeprocessors.register(ElementTabTreeProcessor(md), 'element_tabs', 10)
143157

144158

0 commit comments

Comments
 (0)