Source code for kerb.parsing.code
"""Code extraction utilities.
This module provides functions for extracting code blocks from markdown and
other text formats.
"""
import re
from typing import Dict, List, Optional
[docs]
def extract_code_blocks(
text: str, language: Optional[str] = None
) -> List[Dict[str, str]]:
"""Extract code blocks from markdown text.
Args:
text (str): Markdown text containing code blocks
language (str, optional): Filter by language (e.g., 'python', 'json')
Returns:
List[Dict]: List of code blocks with 'language' and 'code' keys
Examples:
>>> extract_code_blocks('```python\\nprint("hello")\\n```')
[{'language': 'python', 'code': 'print("hello")'}]
"""
pattern = r"```(\w*)\n(.*?)```"
matches = re.findall(pattern, text, re.DOTALL)
blocks = []
for lang, code in matches:
if language is None or lang.lower() == language.lower():
blocks.append({"language": lang or "unknown", "code": code.strip()})
return blocks