From 3a1ecfe5244aa1b09d094bcb74c29e3c8acd06cb Mon Sep 17 00:00:00 2001 From: JesseBrault0709 <62299747+JesseBrault0709@users.noreply.github.com> Date: Fri, 16 Jun 2023 15:40:01 +0200 Subject: [PATCH] Added a TextProvider with filter. --- .../ssg/text/TextsProviders.groovy | 30 ++++++++++++++----- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/api/src/main/groovy/com/jessebrault/ssg/text/TextsProviders.groovy b/api/src/main/groovy/com/jessebrault/ssg/text/TextsProviders.groovy index d7c01ff..354fb5b 100644 --- a/api/src/main/groovy/com/jessebrault/ssg/text/TextsProviders.groovy +++ b/api/src/main/groovy/com/jessebrault/ssg/text/TextsProviders.groovy @@ -6,23 +6,37 @@ import com.jessebrault.ssg.util.ExtensionUtil import org.slf4j.Logger import org.slf4j.LoggerFactory +import java.util.function.BiPredicate + final class TextsProviders { private static final Logger logger = LoggerFactory.getLogger(TextsProviders) static CollectionProvider from(File textsDir, Collection types) { + from(textsDir, types) { file, relativePath -> true } + } + + static CollectionProvider from( + File textsDir, + Collection textTypes, + BiPredicate filter + ) { CollectionProviders.fromDirectory(textsDir) { file, relativePath -> - def extension = ExtensionUtil.getExtension(relativePath) - if (extension) { - def textType = types.find { it.ids.contains(extension) } - if (!textType) { - logger.warn('there is no TextType for file {}; skipping', file) - return null + if (filter.test(file, relativePath)) { + def extension = ExtensionUtil.getExtension(relativePath) + if (extension) { + def textType = textTypes.find { it.ids.contains(extension) } + if (!textType) { + logger.warn('there is no TextType for file {}; skipping', file) + return null + } else { + return new Text(relativePath, textType, file.getText()) + } } else { - return new Text(relativePath, textType, file.getText()) + logger.debug('there is no extension for file {}; skipping', file) + return null } } else { - logger.debug('there is no extension for file {}; skipping', file) return null } }