add to generic text. dump formatting config to json
This commit is contained in:
parent
cfc6be9cd6
commit
d1ed1718c4
3 changed files with 135 additions and 20 deletions
|
@ -4,3 +4,31 @@ PYTEX_CONFIG_FILE_EXTENSION = '.conf'
|
|||
DICTIONARY_KEY_COLUMN_NAME = 'key'
|
||||
DICTIONARY_NAMING_PATTERN = 'translator-{dict_name}-dictionary-{language}.dict'
|
||||
FORMATTER_PREFIX = '!'
|
||||
|
||||
YAML_INFO = 'info'
|
||||
YAML_NAMING_SCHEME = 'name'
|
||||
YAML_LICENSE = 'license'
|
||||
YAML_INCLUDE_LICENSE = 'include'
|
||||
YAML_DESCRIPTION = 'description'
|
||||
YAML_EXTRA = 'extra'
|
||||
YAML_HEADER = 'header'
|
||||
YAML_INCLUDE_EXTRA_HEADER = 'include'
|
||||
YAML_INCLUDE_BUILD_TIME = 'time'
|
||||
YAML_INCLUDE_VERSION = 'version'
|
||||
YAML_INCLUDE_INFO_TEXT = 'text'
|
||||
YAML_INCLUDE_TIME = 'time'
|
||||
YAML_AUTHOR = 'author'
|
||||
YAML_VERSION = 'version'
|
||||
YAML_PATH = 'path'
|
||||
YAML_INCLUDE_DRV = 'drv'
|
||||
YAML_INCLUDE_INS = 'ins'
|
||||
YAML_DOCSTRIP_GUARDS = 'guards'
|
||||
YAML_DEPENDENCIES = 'dependencies'
|
||||
YAML_DOC_DEPENDENCIES = 'doc'
|
||||
YAML_TEX_DEPENDENCIES = 'tex'
|
||||
YAML_TEX_FLAVOUR = 'flavour'
|
||||
YAML_TEX_TYPE = 'type'
|
||||
YAML_TEXT = 'text'
|
||||
YAML_REPO = 'repo'
|
||||
YAML_PYTEX = 'pytex'
|
||||
YAML_DOCSTRIP = 'docstrip'
|
|
@ -6,6 +6,8 @@ from .enums import NamingScheme
|
|||
from .generic_text import GenericText
|
||||
from .formatterif import Config
|
||||
from .git_version_info import GitVersionInfo
|
||||
from .constants import *
|
||||
from .enums import TeXType, TeXFlavour
|
||||
|
||||
|
||||
class VersionInfo:
|
||||
|
@ -35,12 +37,12 @@ class FormattingConfig(Config):
|
|||
self._description: Optional[str] = None
|
||||
|
||||
self._include_extra_header: Optional[bool] = None
|
||||
self._include_build_time: Optional[bool] = None
|
||||
self._include_pytex_version: Optional[bool] = None
|
||||
self._include_pytex_info_text: Optional[bool] = None
|
||||
self._include_repo_version: Optional[bool] = None
|
||||
self._include_repo_info_text: Optional[bool] = None
|
||||
self._include_time: Optional[bool] = None
|
||||
self._include_license: Optional[bool] = None
|
||||
|
||||
self._extra_header: Optional[GenericText] = None
|
||||
self._author: Optional[str] = None
|
||||
|
@ -55,6 +57,12 @@ class FormattingConfig(Config):
|
|||
self._doc_dependencies: Optional[List[str]] = None
|
||||
self._tex_dependencies: Optional[List[str]] = None
|
||||
|
||||
self._tex_type: Optional[TeXType] = None
|
||||
self._tex_flavour: Optional[TeXFlavour] = None
|
||||
|
||||
def set_from_json(self, content: Dict):
|
||||
pass
|
||||
|
||||
@classmethod
|
||||
def from_yaml(cls, content: Path):
|
||||
with open(content, 'r') as config:
|
||||
|
@ -66,11 +74,60 @@ class FormattingConfig(Config):
|
|||
if isinstance(content, Path):
|
||||
with open(content, 'r') as config:
|
||||
content: Dict = json.load(config)
|
||||
|
||||
config = FormattingConfig()
|
||||
config.set_from_json(content)
|
||||
return config
|
||||
|
||||
def to_yaml(self) -> str:
|
||||
pass
|
||||
|
||||
def to_json(self) -> Dict:
|
||||
return {
|
||||
YAML_INFO: {
|
||||
YAML_AUTHOR: self._author,
|
||||
YAML_NAMING_SCHEME: self._naming_scheme,
|
||||
YAML_TEX_FLAVOUR: self._tex_flavour,
|
||||
YAML_TEX_TYPE: self._tex_type,
|
||||
YAML_VERSION: self._version
|
||||
},
|
||||
YAML_HEADER: {
|
||||
YAML_EXTRA: {
|
||||
YAML_INCLUDE_EXTRA_HEADER: self._include_extra_header,
|
||||
YAML_PATH: self._extra_header.path,
|
||||
YAML_TEXT: self._extra_header.real_text
|
||||
},
|
||||
YAML_REPO: {
|
||||
YAML_INCLUDE_INFO_TEXT: self._include_repo_info_text,
|
||||
YAML_INCLUDE_VERSION: self._include_repo_version,
|
||||
YAML_PATH: self._repo_info_text.path,
|
||||
YAML_TEXT: self._repo_info_text.real_text
|
||||
},
|
||||
YAML_PYTEX: {
|
||||
YAML_INCLUDE_INFO_TEXT: self._include_pytex_info_text,
|
||||
YAML_INCLUDE_VERSION: self._include_pytex_version,
|
||||
YAML_PATH: self._pytex_info_text.path,
|
||||
YAML_TEXT: self._pytex_info_text.real_text
|
||||
},
|
||||
YAML_INCLUDE_TIME: self._include_time,
|
||||
YAML_LICENSE: {
|
||||
YAML_INCLUDE_LICENSE: self._include_license,
|
||||
YAML_PATH: self._license.path,
|
||||
YAML_TEXT: self._license.real_text
|
||||
},
|
||||
YAML_DESCRIPTION: self._description
|
||||
},
|
||||
YAML_DOCSTRIP: {
|
||||
YAML_INCLUDE_DRV: self._include_drv,
|
||||
YAML_INCLUDE_INS: self._include_ins,
|
||||
YAML_DOCSTRIP_GUARDS: self._docstrip_guards
|
||||
},
|
||||
YAML_DEPENDENCIES: {
|
||||
YAML_DOC_DEPENDENCIES: self._doc_dependencies,
|
||||
YAML_TEX_DEPENDENCIES: self._tex_dependencies
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@property
|
||||
def naming_scheme(self) -> NamingScheme:
|
||||
if self._naming_scheme is None:
|
||||
|
@ -85,7 +142,7 @@ class FormattingConfig(Config):
|
|||
@property
|
||||
def license(self) -> GenericText:
|
||||
if self._license is None:
|
||||
return GenericText([])
|
||||
return GenericText()
|
||||
else:
|
||||
return self._license
|
||||
|
||||
|
@ -162,7 +219,7 @@ class FormattingConfig(Config):
|
|||
@property
|
||||
def extra_header(self) -> GenericText:
|
||||
if self._extra_header is None:
|
||||
return GenericText([])
|
||||
return GenericText()
|
||||
else:
|
||||
return self._extra_header
|
||||
|
||||
|
@ -195,7 +252,7 @@ class FormattingConfig(Config):
|
|||
@property
|
||||
def pytex_info_text(self) -> GenericText:
|
||||
if self._pytex_info_text is None:
|
||||
return GenericText([])
|
||||
return GenericText()
|
||||
else:
|
||||
return self._pytex_info_text
|
||||
|
||||
|
@ -206,7 +263,7 @@ class FormattingConfig(Config):
|
|||
@property
|
||||
def repo_info_text(self) -> GenericText:
|
||||
if self._repo_info_text is None:
|
||||
return GenericText([])
|
||||
return GenericText()
|
||||
else:
|
||||
return self._repo_info_text
|
||||
|
||||
|
|
|
@ -4,16 +4,23 @@ from ..logger import logger
|
|||
|
||||
|
||||
class GenericText:
|
||||
def __init__(self, content: Union[List[str], Path]):
|
||||
def __init__(self, content: Optional[Union[List[str], Path]] = None):
|
||||
if isinstance(content, List):
|
||||
self._content: Optional[List[str]] = content
|
||||
self._path = None
|
||||
else:
|
||||
self._initialized = True
|
||||
if isinstance(content, Path):
|
||||
self._content: Optional[List[str]] = None
|
||||
self._path = content
|
||||
self._initialized = True
|
||||
else:
|
||||
self._content = None
|
||||
self._path = None
|
||||
self._initialized = False
|
||||
|
||||
@property
|
||||
def text(self) -> List[str]:
|
||||
if self._initialized:
|
||||
if self._content is None:
|
||||
try:
|
||||
with open(self._path, 'r') as file:
|
||||
|
@ -23,22 +30,31 @@ class GenericText:
|
|||
except:
|
||||
raise NotImplementedError
|
||||
return self._content
|
||||
else:
|
||||
return []
|
||||
|
||||
@text.setter
|
||||
def text(self, content: Union[List[str], Path]) -> None:
|
||||
def text(self, content: Union[List[str], Path, None]) -> None:
|
||||
if isinstance(content, List):
|
||||
self._content = content
|
||||
self._path = None
|
||||
else:
|
||||
self._initialized = True
|
||||
elif isinstance(content, Path):
|
||||
self._content = None
|
||||
self._path = content
|
||||
self._initialized = True
|
||||
else:
|
||||
self._content = None
|
||||
self._path = None
|
||||
self._initialized = False
|
||||
|
||||
@property
|
||||
def path(self) -> Optional[Path]:
|
||||
return self._path
|
||||
|
||||
def format(self, **kwargs) -> str:
|
||||
lines = []
|
||||
for line in self._content:
|
||||
for line in self.text:
|
||||
try:
|
||||
line = '% ' + line.format(**kwargs).rjust(77) + '%'
|
||||
if len(line) > 80:
|
||||
|
@ -49,7 +65,21 @@ class GenericText:
|
|||
raise NotImplementedError
|
||||
return '\n'.join(lines)
|
||||
|
||||
def has_value(self) -> bool:
|
||||
return self._initialized
|
||||
|
||||
@property
|
||||
def real_text(self) -> Optional[List[str]]:
|
||||
if self.has_value():
|
||||
return self._content
|
||||
else:
|
||||
return None
|
||||
|
||||
def __add__(self, other):
|
||||
if not self.has_value():
|
||||
return other
|
||||
if not other.has_value():
|
||||
return self
|
||||
if isinstance(other, GenericText):
|
||||
return GenericText(self.text + other.text)
|
||||
else:
|
||||
|
|
Loading…
Reference in a new issue