Source code for rmdawn.rmdusk
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import re
from pathlib import Path
from rmdawn.extract import extract_after, extract_between
[docs]def rmdusk(in_file: str) -> None:
"""Extract YAML, code, and markdown files from an R markdown file.
:param in_file: The name of the input R markdown file.
"""
rmd_path = Path(in_file)
rmd_text = rmd_path.read_text()
Path(rmd_path.with_suffix(".yml")).write_text(
extract_between(rmd_text, start="^---\n", end="\n---\n")
)
code_and_text = re.sub(
r"```{(.*?)}",
r"```#+ \1",
extract_after(rmd_text, "\n---\n"),
flags=re.DOTALL
).split("```")
for n, string in enumerate(code_and_text):
if string:
if string.startswith("#+ python"):
Path(rmd_path.stem + f"_{n}.py").write_text(string.strip())
if string.startswith("#+ r"):
Path(rmd_path.stem + f"_{n}.R").write_text(string.strip())
else:
Path(rmd_path.stem + f"_{n}.md").write_text(string.strip())