diff --git a/PyTeX/build/pytex_file/pytex_file.py b/PyTeX/build/pytex_file/pytex_file.py index 40a016d..110b848 100644 --- a/PyTeX/build/pytex_file/pytex_file.py +++ b/PyTeX/build/pytex_file/pytex_file.py @@ -1,28 +1,40 @@ -from typing import Optional, List +from typing import Optional, List, Dict, Tuple from PyTeX.build.build_info import BasicBuildInfo from PyTeX.config import BasicFormattingConfig, GlobalPyTeXConfig -from PyTeX.paths import RelativePath from .enums import PyTeXFileType +from PyTeX.formatting.formatter import Formatter +from ...paths import RelativePath class PyTeXSourceFile: def __init__(self): self._pytex_file_type: PyTeXFileType = None self._relative_path: RelativePath = None + self._formatter: Formatter = None self._build_info: Optional[BasicBuildInfo] = None @property - def relative_path(self) -> RelativePath: + def relative_path(self): return self._relative_path @property def pytex_file_type(self) -> PyTeXFileType: return self._pytex_file_type - def format(self) -> None: - pass - @property - def provided_files(self) -> List[RelativePath]: - pass + def output_files(self) -> List[RelativePath]: + files = self._formatter.output_files + files = [ + self._relative_path.with_name(filename) + for filename in files + ] + return files + + def format(self) -> Optional[List[Tuple[RelativePath, Dict]]]: + configs = self._formatter.format(GlobalPyTeXConfig.target_root()) + configs = [ + (self._relative_path.with_name(filename), config) + for [filename, config] in configs + ] + return configs diff --git a/PyTeX/config/global_config.py b/PyTeX/config/global_config.py index 0c0c29e..327a5fa 100644 --- a/PyTeX/config/global_config.py +++ b/PyTeX/config/global_config.py @@ -2,6 +2,8 @@ from pathlib import Path, PurePath from typing import Optional from .formatting_config import BasicFormattingConfig +from ..paths import PyTeXRootDirType + class GlobalPyTeXConfig: _source_root: Optional[Path] = None @@ -18,6 +20,8 @@ class GlobalPyTeXConfig: _allow_dirty: bool = False + _build_target: PyTeXRootDirType = None + @classmethod def init( cls, @@ -51,4 +55,17 @@ class GlobalPyTeXConfig: @classmethod def wrapper_dir(cls) -> PurePath: - return cls._wrapper_dir + raise NotImplementedError + + @classmethod + def build_mode(cls) -> PyTeXRootDirType: + return cls._build_target + + @classmethod + def target_root(cls) -> Path: + return { + PyTeXRootDirType.BUILD: cls.build_root(), + PyTeXRootDirType.DOC: cls.doc_root(), + PyTeXRootDirType.TEX_SOURCE: cls.tex_root(), + PyTeXRootDirType.PYTEX_SOURCE: cls.source_root() + }[cls._build_target]