[pp:metadata] implement format strings for 'directory' (#5728)

This commit is contained in:
Mike Fährmann
2024-07-06 01:01:54 +02:00
parent 8f3f061daf
commit da9916c01f
3 changed files with 33 additions and 3 deletions

View File

@@ -56,7 +56,13 @@ class MetadataPP(PostProcessor):
ext = "json"
directory = options.get("directory")
if directory:
if isinstance(directory, list):
self._directory = self._directory_format
self._directory_formatters = [
formatter.parse(dirfmt, util.NONE).format_map
for dirfmt in directory
]
elif directory:
self._directory = self._directory_custom
sep = os.sep + (os.altsep or "")
self._metadir = util.expand_path(directory).rstrip(sep) + os.sep
@@ -147,6 +153,16 @@ class MetadataPP(PostProcessor):
def _directory_custom(self, pathfmt):
return os.path.join(pathfmt.realdirectory, self._metadir)
def _directory_format(self, pathfmt):
formatters = pathfmt.directory_formatters
try:
pathfmt.directory_formatters = self._directory_formatters
segments = pathfmt.build_directory(pathfmt.kwdict)
directory = pathfmt.clean_path(os.sep.join(segments) + os.sep)
return os.path.join(pathfmt.realdirectory, directory)
finally:
pathfmt.directory_formatters = formatters
def _filename(self, pathfmt):
return (pathfmt.filename or "metadata") + "." + self.extension