package de.kontext_e.jqassistant.plugin.asciidoc.scanner;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.buschmais.jqassistant.core.scanner.api.Scanner;
import com.buschmais.jqassistant.core.scanner.api.Scope;
import com.buschmais.jqassistant.core.store.api.Store;
import com.buschmais.jqassistant.plugin.common.api.scanner.AbstractScannerPlugin;
import com.buschmais.jqassistant.plugin.common.api.scanner.filesystem.FileResource;
import de.kontext_e.jqassistant.plugin.asciidoc.store.descriptor.AsciidocFileDescriptor;
import static java.util.Arrays.asList;
public class AsciidocFileScannerPlugin extends AbstractScannerPlugin<FileResource, AsciidocFileDescriptor> {
private static final Logger LOGGER = LoggerFactory.getLogger(AsciidocFileScannerPlugin.class);
private static final String JQASSISTANT_PLUGIN_ASCIIDOC_SUFFIXES = "jqassistant.plugin.asciidoc.suffixes";
private static List<String> suffixes = asList("asciidoc", "adoc");
@Override
public boolean accepts(final FileResource item, final String path, final Scope scope) throws IOException {
int beginIndex = path.lastIndexOf(".");
if(beginIndex > 0) {
final String suffix = path.substring(beginIndex + 1).toLowerCase();
boolean accepted = suffixes.contains(suffix);
if(accepted) {
LOGGER.info("Asciidoc accepted path "+path);
}
return accepted;
}
return false;
}
@Override
public AsciidocFileDescriptor scan(final FileResource item, final String path, final Scope scope, final Scanner scanner) throws IOException {
final Store store = scanner.getContext().getStore();
final AsciidocFileDescriptor asciidocFileDescriptor = store.create(AsciidocFileDescriptor.class);
asciidocFileDescriptor.setFileName(path);
new AsciidocImporter(item.getFile(), store, 20).importDocument(asciidocFileDescriptor);
return asciidocFileDescriptor;
}
@Override
protected void configure() {
super.configure();
if(getProperties().containsKey(JQASSISTANT_PLUGIN_ASCIIDOC_SUFFIXES)) {
suffixes = new ArrayList<>();
String serializedSuffixes = (String) getProperties().get(JQASSISTANT_PLUGIN_ASCIIDOC_SUFFIXES);
for (String suffix : serializedSuffixes.split(",")) {
suffixes.add(suffix.toLowerCase().trim());
}
LOGGER.info("Asciidoc accepts suffixes "+suffixes);
}
}
}