
fgh90.comment-parser_2.11.0.1.0.source-code.CommentParser Maven / Gradle / Ivy
The newest version!
package io.github.qwefgh90.commentparser;
import io.github.qwefgh90.commentparser.Extractor;
import io.github.qwefgh90.commentparser.Extractor.ExtractResult;
import java.net.URI;
import java.util.Optional;
import java.util.stream.Collectors;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.io.InputStream;
import scala.Option;
import scala.collection.JavaConverters;
import scala.runtime.AbstractFunction1;
/**
* CommentParser provides static methods for extracting comments.
*
Supported languages are JAVA, PY, C, CPP, C_HEADER, CPP_HEADER, SCALA, RUBY, GO, JS, HTML, BAT, SH, XML, TEXT, MD.
*
None is provided for unsupported languages.
*/
public class CommentParser{
/**
* CommentResult contains each comment in resource.
* If a uri is not provided as parameter, a uri is a location of a temporary file.
*/
public static class CommentResult{
public final int startOffset;
public final String comment;
public final URI uri;
public CommentResult(int startOffset, String comment, URI uri){
this.startOffset = startOffset;
this.comment = comment;
this.uri = uri;
}
}
/**
* Extract comments from a stream with a resource name. Default charset is utf-8.
* @param is a source stream
* @param resourceName a name about a resource name
* @return a list of CommentResult
*/
public static Optional> extractComments(InputStream is, String resourceName){
return extractComments(is, resourceName, StandardCharsets.UTF_8);
}
/**
* Extract comments from a stream with a resource name.
* @param is a source stream
* @param resourceName a name of a resource
* @param charset a charset of a resource
* @return a list of CommentResult
*/
public static Optional> extractComments(InputStream is, String resourceName, Charset charset) {
Option> scalaReturn = Extractor.extractCommentsByStream(is, resourceName, charset);
return Optional.ofNullable(scalaReturn.map(func1).getOrElse(null));
}
/**
* Extract comments from a uri with a resource name.
* @param uri a source uri
* @param resourceName a name of a resource
* @return a list of CommentResult
*/
public static Optional> extractComments(URI uri, String resourceName) {
return extractComments(uri, resourceName, StandardCharsets.UTF_8);
}
/**
* Extract comments from a uri with a resource name. Default charset is utf-8.
* @param uri a source uri
* @param resourceName a name of a resource
* @param charset a charset of a resource
* @return a list of CommentResult
*/
public static Optional> extractComments(URI uri, String resourceName, Charset charset) {
//StandardCharsets.UTF_8
Option> scalaReturn = Extractor.extractComments(uri, resourceName, charset);
return Optional.ofNullable(scalaReturn.map(func1).getOrElse(null));
}
private static final AbstractFunction1, java.util.List> func1 = new AbstractFunction1, java.util.List>(){
@Override
public java.util.List apply(scala.collection.immutable.List list) {
java.util.List javaList = JavaConverters.seqAsJavaListConverter(list).asJava();
return javaList.stream().map((ExtractResult result) -> {
return new CommentResult(result.startOffset(), result.comment(), result.uri());
}).collect(Collectors.toList());
}
};
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy