Added a TextProvider with filter.

This commit is contained in:
JesseBrault0709 2023-06-16 15:40:01 +02:00
parent c7ba01380e
commit 3a1ecfe524

View File

@ -6,23 +6,37 @@ import com.jessebrault.ssg.util.ExtensionUtil
import org.slf4j.Logger import org.slf4j.Logger
import org.slf4j.LoggerFactory import org.slf4j.LoggerFactory
import java.util.function.BiPredicate
final class TextsProviders { final class TextsProviders {
private static final Logger logger = LoggerFactory.getLogger(TextsProviders) private static final Logger logger = LoggerFactory.getLogger(TextsProviders)
static CollectionProvider<Text> from(File textsDir, Collection<TextType> types) { static CollectionProvider<Text> from(File textsDir, Collection<TextType> types) {
from(textsDir, types) { file, relativePath -> true }
}
static CollectionProvider<Text> from(
File textsDir,
Collection<TextType> textTypes,
BiPredicate<File, String> filter
) {
CollectionProviders.fromDirectory(textsDir) { file, relativePath -> CollectionProviders.fromDirectory(textsDir) { file, relativePath ->
def extension = ExtensionUtil.getExtension(relativePath) if (filter.test(file, relativePath)) {
if (extension) { def extension = ExtensionUtil.getExtension(relativePath)
def textType = types.find { it.ids.contains(extension) } if (extension) {
if (!textType) { def textType = textTypes.find { it.ids.contains(extension) }
logger.warn('there is no TextType for file {}; skipping', file) if (!textType) {
return null logger.warn('there is no TextType for file {}; skipping', file)
return null
} else {
return new Text(relativePath, textType, file.getText())
}
} else { } else {
return new Text(relativePath, textType, file.getText()) logger.debug('there is no extension for file {}; skipping', file)
return null
} }
} else { } else {
logger.debug('there is no extension for file {}; skipping', file)
return null return null
} }
} }