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 } }