Files
cobol-java/preprocessor.py

24 lines
840 B
Python

import re
from pathlib import Path
class CopybookPreprocessor:
def __init__(self, search_paths: list[str] | None = None):
self.search_paths = search_paths or ["./copybooks"]
def expand(self, source_text: str) -> str:
pattern = re.compile(
r'^ COPY\s+(\w+(?:-\w+)?)\s*(?:\.|$.|$)',
re.MULTILINE)
return pattern.sub(self._replace_copy, source_text)
def _replace_copy(self, match):
name = match.group(1).strip()
for path in self.search_paths:
for ext in ["", ".cpy", ".cbl", ".copy"]:
p = Path(path) / f"{name}{ext}"
if p.exists():
content = p.read_text()
return f" *> COPY {name}\n{content}\n *> END COPY {name}"
return f" *> COPY {name} NOT FOUND"