pytex/PyTeX/format/default_macros.py

113 lines
3.4 KiB
Python
Raw Permalink Normal View History

from .macros import *
2022-02-18 10:05:43 +01:00
from .enums import TeXFlavour, Argument, TeXType
def make_simple_macro(name: str, arg):
return SimpleMacro(
name,
MacroReplacement(
'%s',
arg
)
)
2022-02-18 10:05:43 +01:00
def get_default_macros(tex_flavour: TeXFlavour, tex_type: TeXType):
2022-02-09 21:11:46 +01:00
both = [
make_simple_macro('!', FormatterProperty.file_prefix),
make_simple_macro('name', FormatterProperty.name),
2022-02-09 21:11:46 +01:00
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(),
ConfigBeginMacro(),
2022-02-18 10:05:43 +01:00
]
docstrip = [
make_simple_macro('outtype', FormatterProperty.tex_out_type),
MacroCodeBeginMacro(),
2022-02-17 21:39:01 +01:00
MacroCodeEndMacro(),
2022-02-18 00:23:01 +01:00
GuardMacro(),
2022-02-18 10:05:43 +01:00
ImplementationBeginMacro(),
ImplementationEndMacro(),
]
2022-02-09 21:11:46 +01:00
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
)
)
]
2022-02-18 10:05:43 +01:00
macros = both
2022-02-09 21:11:46 +01:00
if tex_flavour == TeXFlavour.LaTeX2e:
2022-02-18 10:05:43 +01:00
macros += tex2
2022-02-09 21:11:46 +01:00
elif tex_flavour == TeXFlavour.LaTeX3:
2022-02-18 10:05:43 +01:00
macros += tex3
2022-02-09 21:11:46 +01:00
else:
raise NotImplementedError
2022-02-18 10:05:43 +01:00
if tex_type == TeXType.TeXDocstrip:
macros += docstrip
return macros