Browse Source

Add Kotlin

Dominik Fuchß 4 years ago
parent
commit
adfb459818

+ 16 - 2
jplag.frontend.kotlin/src/main/java/de/jplag/kotlin/Language.java

@@ -4,22 +4,36 @@ import java.io.File;
 
 import de.jplag.ErrorConsumer;
 import de.jplag.TokenList;
+import org.kohsuke.MetaInfServices;
 
 /**
  * This represents the Kotlin language as a language supported by JPlag.
  */
+@MetaInfServices(de.jplag.Language.class)
 public class Language implements de.jplag.Language {
 
     private static final String NAME = "Kotlin Parser";
-    private static final String SHORT_NAME = "Kotlin";
+    private static final String SHORT_NAME = "kotlin";
     private static final int DEFAULT_MIN_TOKEN_MATCH = 8;
     private static final String[] FILE_EXTENSIONS = {".kt"};
     private final KotlinParserAdapter parserAdapter;
 
-    public Language(ErrorConsumer consumer) {
+    /**
+     * Prototype Constructor for {@link MetaInfServices}.
+     */
+    public Language() {
+        this.parserAdapter = null;
+    }
+
+    Language(ErrorConsumer consumer) {
         this.parserAdapter = new KotlinParserAdapter(consumer);
     }
 
+    @Override
+    public de.jplag.Language createInitializedLanguage(ErrorConsumer errorConsumer) {
+        return new Language(errorConsumer);
+    }
+
     @Override
     public String[] suffixes() {
         return FILE_EXTENSIONS;

+ 1 - 1
jplag.frontend.rlang/src/main/java/de/jplag/rlang/Language.java

@@ -14,7 +14,7 @@ import de.jplag.TokenList;
 public class Language implements de.jplag.Language {
 
     private static final String NAME = "R Parser";
-    private static final String SHORT_NAME = "R";
+    private static final String SHORT_NAME = "rlang";
     private static final int DEFAULT_MIN_TOKEN_MATCH = 8;
     private static final String[] FILE_EXTENSION = {".R", ".r"};
     private final RParserAdapter parserAdapter;

+ 1 - 1
jplag/src/test/java/de/jplag/LanguageTest.java

@@ -11,6 +11,6 @@ class LanguageTest {
     @Test
     void testLoading() {
         var languages = LanguageLoader.loadLanguages();
-        Assertions.assertEquals(8, languages.size());
+        Assertions.assertEquals(9, languages.size());
     }
 }

+ 3 - 1
jplag/src/test/java/de/jplag/special/TokenPrinterTest.java

@@ -25,6 +25,8 @@ public class TokenPrinterTest extends TestBase {
     private static final String LANGUAGE_CPP = "cpp";
     private static final String LANGUAGE_R = "rlang";
 
+    private static final String LANGUAGE_KOTLIN = "kotlin";
+
     @Disabled
     @Test
     void printCPPFiles() {
@@ -54,7 +56,7 @@ public class TokenPrinterTest extends TestBase {
     @Disabled("Not a meaningful test, used for designing the token set")
     @Test
     void printKotlinFiles() {
-        printSubmissions(options -> options.setLanguageOption(LanguageOption.KOTLIN));
+        printSubmissions(options -> options.setLanguage(LanguageLoader.loadLanguage(LANGUAGE_KOTLIN).orElseThrow()));
     }
 
     private void printSubmissions(Consumer<JPlagOptions> optionsCustomization) {