2023-05-15 01:52:02 +01:00
|
|
|
import sys
|
2023-05-19 22:28:26 +01:00
|
|
|
import re
|
2023-05-15 01:52:02 +01:00
|
|
|
|
|
|
|
|
|
|
|
def main():
|
|
|
|
name = sys.argv[1]
|
|
|
|
file_name = f"../../../../src/{name}.rs"
|
|
|
|
with open(file_name) as f:
|
|
|
|
in_code_block = False
|
2023-05-19 00:58:48 +01:00
|
|
|
doc_comment_started = False
|
2023-05-15 01:52:02 +01:00
|
|
|
for line in f.readlines():
|
|
|
|
if line.startswith("///"):
|
2023-05-19 00:58:48 +01:00
|
|
|
doc_comment_started = True
|
2023-05-15 01:52:02 +01:00
|
|
|
line = line.strip().replace("/// ", "").replace("///", "")
|
|
|
|
if "```" in line:
|
|
|
|
if not in_code_block:
|
|
|
|
line = line.replace("```", "```rust,ignore")
|
|
|
|
in_code_block = not in_code_block
|
|
|
|
|
2023-05-19 20:43:03 +01:00
|
|
|
line = process_line(line, name)
|
|
|
|
|
2023-05-15 01:52:02 +01:00
|
|
|
print(line)
|
2023-05-19 00:58:48 +01:00
|
|
|
elif doc_comment_started:
|
|
|
|
return
|
2023-05-15 01:52:02 +01:00
|
|
|
|
|
|
|
|
2023-05-19 22:28:26 +01:00
|
|
|
interal_doc_link_pattern = re.compile(r"\[`([^]]+)\`](?!\()")
|
|
|
|
|
|
|
|
|
2023-05-19 20:43:03 +01:00
|
|
|
def process_line(line, name):
|
|
|
|
stripped = line.strip()
|
|
|
|
result = line
|
|
|
|
|
|
|
|
if stripped.startswith("[Link to Demo](https://"):
|
|
|
|
example_link = stripped.replace("[Link to Demo](", "").replace(")", "")
|
|
|
|
result = f'''<div class="demo-container">
|
|
|
|
<a class="demo-source" href="{example_link}/src/main.rs" target="_blank">source</a>
|
|
|
|
<iframe class="demo" src="{name}/demo/index.html" width="100%" frameborder="0">
|
|
|
|
</iframe>
|
|
|
|
</div>'''
|
2023-05-19 22:28:26 +01:00
|
|
|
|
|
|
|
else:
|
|
|
|
result = re.sub(interal_doc_link_pattern,
|
|
|
|
r"[`\1`](https://docs.rs/leptos-use/latest/leptos_use/fn.\1.html)",
|
|
|
|
line)
|
|
|
|
|
2023-05-19 20:43:03 +01:00
|
|
|
return result
|
|
|
|
|
|
|
|
|
2023-05-15 01:52:02 +01:00
|
|
|
if __name__ == '__main__':
|
|
|
|
main()
|