Module margo_parser.api.utils.get_preamble_source
Expand source code
from ..classes.MargoBlock import MargoBlock
import re
class MargoCommentPrefixes:
PYTHON = "# ::"
def get_markdown_preamble_source(cell_source: str) -> str:
matches = re.match(r"\s*```margo(?P<preamble>[\s\S]+)```", cell_source)
if not matches:
return ""
return matches["preamble"]
def get_preamble_source(
cell_source: str, prefix=MargoCommentPrefixes.PYTHON, cell_type="code"
) -> str:
"""
Get the Margo preamble source using the default Python Margo note prefix "# :: "
"""
ret = []
if cell_type == "markdown":
lines = get_markdown_preamble_source(cell_source).split("\n")
else:
lines = cell_source.split("\n")
for line in lines:
trim_line = line.lstrip()
if trim_line.startswith(prefix):
ret.append(trim_line.lstrip()[len(prefix) :])
elif trim_line.startswith("#"):
# Ignore comments
continue
elif len(trim_line.strip()) < 1:
# Ignore empty lines
continue
else:
# Stop at the first non-comment, non-empty line
break
return "\n".join(ret)
Functions
def get_markdown_preamble_source(cell_source: str) ‑> str
-
Expand source code
def get_markdown_preamble_source(cell_source: str) -> str: matches = re.match(r"\s*```margo(?P<preamble>[\s\S]+)```", cell_source) if not matches: return "" return matches["preamble"]
def get_preamble_source(cell_source: str, prefix='# ::', cell_type='code') ‑> str
-
Get the Margo preamble source using the default Python Margo note prefix "# :: "
Expand source code
def get_preamble_source( cell_source: str, prefix=MargoCommentPrefixes.PYTHON, cell_type="code" ) -> str: """ Get the Margo preamble source using the default Python Margo note prefix "# :: " """ ret = [] if cell_type == "markdown": lines = get_markdown_preamble_source(cell_source).split("\n") else: lines = cell_source.split("\n") for line in lines: trim_line = line.lstrip() if trim_line.startswith(prefix): ret.append(trim_line.lstrip()[len(prefix) :]) elif trim_line.startswith("#"): # Ignore comments continue elif len(trim_line.strip()) < 1: # Ignore empty lines continue else: # Stop at the first non-comment, non-empty line break return "\n".join(ret)
Classes
class MargoCommentPrefixes
-
Expand source code
class MargoCommentPrefixes: PYTHON = "# ::"
Class variables
var PYTHON