2022-02-09 18:02:57 +01:00
|
|
|
from .macros import *
|
2022-02-18 10:05:43 +01:00
|
|
|
from .enums import TeXFlavour, Argument, TeXType
|
2022-02-09 18:02:57 +01:00
|
|
|
|
|
|
|
|
|
|
|
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 = [
|
2022-02-09 18:02:57 +01:00
|
|
|
make_simple_macro('!', FormatterProperty.file_prefix),
|
2022-02-09 19:39:27 +01:00
|
|
|
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),
|
2022-02-09 19:39:27 +01:00
|
|
|
ConfigEndMacro(),
|
2022-02-17 20:46:39 +01:00
|
|
|
ConfigBeginMacro(),
|
2022-02-18 10:05:43 +01:00
|
|
|
]
|
|
|
|
docstrip = [
|
|
|
|
make_simple_macro('outtype', FormatterProperty.tex_out_type),
|
2022-02-17 20:46:39 +01:00
|
|
|
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 18:02:57 +01:00
|
|
|
]
|
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
|