lots of default macros
This commit is contained in:
parent
a50c4935be
commit
f1dbc45f9c
6 changed files with 110 additions and 23 deletions
|
@ -11,6 +11,7 @@ from .git_version_info import GitVersionInfo
|
||||||
from .default_macros import get_default_macros
|
from .default_macros import get_default_macros
|
||||||
from .enums import TeXType
|
from .enums import TeXType
|
||||||
|
|
||||||
|
|
||||||
def formatter_from_file_extension(
|
def formatter_from_file_extension(
|
||||||
input_file: Path,
|
input_file: Path,
|
||||||
config: Optional[FormattingConfig] = None,
|
config: Optional[FormattingConfig] = None,
|
||||||
|
@ -47,7 +48,7 @@ def formatter_from_file_extension(
|
||||||
allow_infile_config=allow_infile_config
|
allow_infile_config=allow_infile_config
|
||||||
)
|
)
|
||||||
if default_macros:
|
if default_macros:
|
||||||
formatter.macros = get_default_macros()
|
formatter.macros = get_default_macros(formatter.config.tex_flavour)
|
||||||
return formatter
|
return formatter
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
from .macros import *
|
from .macros import *
|
||||||
|
from .enums import TeXFlavour, Argument
|
||||||
|
|
||||||
|
|
||||||
def make_simple_macro(name: str, arg):
|
def make_simple_macro(name: str, arg):
|
||||||
|
@ -11,10 +12,88 @@ def make_simple_macro(name: str, arg):
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def get_default_macros():
|
def get_default_macros(tex_flavour: TeXFlavour):
|
||||||
return [
|
both = [
|
||||||
make_simple_macro('!', FormatterProperty.file_prefix),
|
make_simple_macro('!', FormatterProperty.file_prefix),
|
||||||
make_simple_macro('name', FormatterProperty.name),
|
make_simple_macro('name', FormatterProperty.name),
|
||||||
|
make_simple_macro('author', FormatterProperty.author),
|
||||||
|
make_simple_macro('date', FormatterProperty.date),
|
||||||
|
make_simple_macro('year', FormatterProperty.year),
|
||||||
|
make_simple_macro('shortauthor', FormatterProperty.shortauthor),
|
||||||
|
make_simple_macro('version', FormatterProperty.version),
|
||||||
|
make_simple_macro('filename', FormatterProperty.file_name),
|
||||||
|
make_simple_macro('prefix', FormatterProperty.file_prefix),
|
||||||
|
make_simple_macro('repoversion', FormatterProperty.repo_version),
|
||||||
|
make_simple_macro('repobranch', FormatterProperty.repo_branch),
|
||||||
|
make_simple_macro('repocommit', FormatterProperty.repo_commit),
|
||||||
|
make_simple_macro('repodirty', FormatterProperty.repo_dirty),
|
||||||
|
make_simple_macro('sourcename', FormatterProperty.source_file_name),
|
||||||
ConfigEndMacro(),
|
ConfigEndMacro(),
|
||||||
ConfigBeginMacro()
|
ConfigBeginMacro()
|
||||||
]
|
]
|
||||||
|
tex2 = [
|
||||||
|
ArgumentMacro(
|
||||||
|
'newif',
|
||||||
|
2,
|
||||||
|
MacroReplacement(
|
||||||
|
r'\newif\if%s@%s\%s@%s%s',
|
||||||
|
FormatterProperty.file_prefix,
|
||||||
|
Argument.one,
|
||||||
|
FormatterProperty.file_prefix,
|
||||||
|
Argument.one,
|
||||||
|
Argument.two
|
||||||
|
)
|
||||||
|
),
|
||||||
|
ArgumentMacro(
|
||||||
|
'setif',
|
||||||
|
2,
|
||||||
|
MacroReplacement(
|
||||||
|
r'\%s@%s%s',
|
||||||
|
FormatterProperty.file_prefix,
|
||||||
|
Argument.one,
|
||||||
|
Argument.two
|
||||||
|
)
|
||||||
|
),
|
||||||
|
ArgumentMacro(
|
||||||
|
'if',
|
||||||
|
1,
|
||||||
|
MacroReplacement(
|
||||||
|
r'\if%s@%s',
|
||||||
|
FormatterProperty.file_prefix,
|
||||||
|
Argument.one
|
||||||
|
)
|
||||||
|
),
|
||||||
|
ArgumentMacro(
|
||||||
|
'header',
|
||||||
|
1,
|
||||||
|
MacroReplacement(
|
||||||
|
r'\Provides%s{%s}[%s - %s (%s)]',
|
||||||
|
FormatterProperty.Tex_type,
|
||||||
|
FormatterProperty.name,
|
||||||
|
FormatterProperty.date,
|
||||||
|
Argument.one,
|
||||||
|
FormatterProperty.version
|
||||||
|
)
|
||||||
|
)
|
||||||
|
]
|
||||||
|
|
||||||
|
tex3 = [
|
||||||
|
ArgumentMacro(
|
||||||
|
'header',
|
||||||
|
1,
|
||||||
|
MacroReplacement(
|
||||||
|
'\\ProvidesExpl%s { %s } { %s } { %s }\n { %s }',
|
||||||
|
FormatterProperty.Tex_type,
|
||||||
|
FormatterProperty.name,
|
||||||
|
FormatterProperty.date,
|
||||||
|
FormatterProperty.version,
|
||||||
|
FormatterProperty.description
|
||||||
|
)
|
||||||
|
)
|
||||||
|
]
|
||||||
|
if tex_flavour == TeXFlavour.LaTeX2e:
|
||||||
|
return tex2 + both
|
||||||
|
elif tex_flavour == TeXFlavour.LaTeX3:
|
||||||
|
return tex3 + both
|
||||||
|
else:
|
||||||
|
raise NotImplementedError
|
||||||
|
|
|
@ -110,6 +110,7 @@ class FormatterProperty(MacroReplacementAtomIF, Enum):
|
||||||
pytex_commit = 'pytex_commit'
|
pytex_commit = 'pytex_commit'
|
||||||
pytex_dirty = 'pytex_dirty'
|
pytex_dirty = 'pytex_dirty'
|
||||||
tex_type = 'tex_type'
|
tex_type = 'tex_type'
|
||||||
|
Tex_type= 'Tex_type'
|
||||||
tex_flavour = 'latex_flavour'
|
tex_flavour = 'latex_flavour'
|
||||||
description = 'description'
|
description = 'description'
|
||||||
|
|
||||||
|
|
|
@ -134,6 +134,10 @@ class FormattingConfig(Config):
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@property
|
||||||
|
def has_description(self) -> bool:
|
||||||
|
return self._description is not None
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def naming_scheme(self) -> NamingScheme:
|
def naming_scheme(self) -> NamingScheme:
|
||||||
if self._naming_scheme is None:
|
if self._naming_scheme is None:
|
||||||
|
|
|
@ -153,7 +153,8 @@ class PyTeXFormatter(FormatterIF, ABC):
|
||||||
FormatterProperty.tex_type.value: self.config.tex_type.value,
|
FormatterProperty.tex_type.value: self.config.tex_type.value,
|
||||||
FormatterProperty.tex_flavour.value: self.config.tex_flavour.value,
|
FormatterProperty.tex_flavour.value: self.config.tex_flavour.value,
|
||||||
FormatterProperty.file_prefix.value: self.file_prefix,
|
FormatterProperty.file_prefix.value: self.file_prefix,
|
||||||
FormatterProperty.description.value: self.config.description
|
FormatterProperty.description.value: self.config.description,
|
||||||
|
FormatterProperty.Tex_type.value: self.config.tex_type.value.capitalize()
|
||||||
}
|
}
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
|
|
@ -37,24 +37,25 @@ class SimpleTeXFormatter(TexFormatter):
|
||||||
return line.rstrip()
|
return line.rstrip()
|
||||||
|
|
||||||
def format_post_header(self) -> None:
|
def format_post_header(self) -> None:
|
||||||
if self.config.tex_flavour == TeXFlavour.LaTeX2e:
|
if self.config.has_description:
|
||||||
self._shipout_line(
|
if self.config.tex_flavour == TeXFlavour.LaTeX2e:
|
||||||
r'\Provides%s{%s}[%s - %s]'
|
self._shipout_line(
|
||||||
% (
|
r'\Provides%s{%s}[%s - %s]'
|
||||||
self.config.tex_type.value.capitalize(),
|
% (
|
||||||
self.name,
|
self.config.tex_type.value.capitalize(),
|
||||||
self.attribute_dict[FormatterProperty.date.value],
|
self.name,
|
||||||
self.attribute_dict[FormatterProperty.description.value]
|
self.attribute_dict[FormatterProperty.date.value],
|
||||||
|
self.attribute_dict[FormatterProperty.description.value]
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)
|
else:
|
||||||
else:
|
self._shipout_line(
|
||||||
self._shipout_line(
|
'\\ProvidesExpl%s { %s } { %s } { %s }\n { %s }'
|
||||||
'\\ProvidesExpl%s { %s } { %s } { %s }\n { %s }'
|
% (
|
||||||
% (
|
self.config.tex_type.value.capitalize(),
|
||||||
self.config.tex_type.value.capitalize(),
|
self.name,
|
||||||
self.name,
|
self.attribute_dict[FormatterProperty.date.value],
|
||||||
self.attribute_dict[FormatterProperty.date.value],
|
self.config.version,
|
||||||
self.config.version,
|
self.config.description
|
||||||
self.config.description
|
)
|
||||||
)
|
)
|
||||||
)
|
|
||||||
|
|
Loading…
Reference in a new issue