25
25
* @author TeamworkGuy2
26
26
* @since 2015-9-19
27
27
*/
28
- public class CodeLanguageOptions <T_KEYWORD , T_LANG extends CodeLanguage , T_AST_UTIL extends AstUtil <? extends CompoundBlock , T_KEYWORD >, T_AST_EXTRACTOR extends AstExtractor <? extends CompoundBlock >> implements CodeLanguage {
28
+ public enum CodeLanguageOptions {
29
+ ;
29
30
30
- public static class CSharp extends CodeLanguageOptions <CsKeyword , CSharp , CsAstUtil , AstExtractor <CsBlock >> {
31
+ /**
32
+ * @author TeamworkGuy2
33
+ * @since 2016-1-16
34
+ * @param <T_KEYWORD> the keyword enum containing this language's keywords
35
+ * @param <T_LANG> this language's {@link CodeLanguage} type
36
+ * @param <T_AST_UTIL> the {@link AstUtil} type for this language
37
+ * @param <T_AST_EXTRACTOR> {@link AstExtractor} type for this language
38
+ */
39
+ public static class CodeLanguageImpl <T_KEYWORD , T_LANG extends CodeLanguage , T_AST_UTIL extends AstUtil <? extends CompoundBlock , T_KEYWORD >, T_AST_EXTRACTOR extends AstExtractor <? extends CompoundBlock >> implements CodeLanguage {
40
+ final String displayName ;
41
+ @ Getter final Function <ParseInput , CodeFileSrc <T_LANG >> parser ;
42
+ @ Getter final List <String > fileExtensions ;
43
+ @ Getter final T_AST_UTIL astUtil ;
44
+ @ Getter final Keyword keyword ;
45
+ @ Getter final T_AST_EXTRACTOR extractor ;
46
+
47
+
48
+ // package-private
49
+ CodeLanguageImpl (String displayName , T_AST_UTIL astUtil , Keyword keyword , Function <ParseInput , CodeFileSrc <T_LANG >> parser , T_AST_EXTRACTOR extractor , String ... fileExtensions ) {
50
+ this .displayName = displayName ;
51
+ this .parser = parser ;
52
+ this .fileExtensions = new ArrayList <>(Arrays .asList (fileExtensions ));
53
+ this .astUtil = astUtil ;
54
+ this .keyword = keyword ;
55
+ this .extractor = extractor ;
56
+ }
57
+
58
+
59
+ @ Override
60
+ public String displayName () {
61
+ return displayName ;
62
+ }
63
+
64
+ }
65
+
66
+
67
+ public static class CSharp extends CodeLanguageImpl <CsKeyword , CSharp , CsAstUtil , AstExtractor <CsBlock >> {
31
68
CSharp (String displayName , CsAstUtil astUtil , Keyword keyword , Function <ParseInput , CodeFileSrc <CSharp >> parser , AstExtractor <CsBlock > extractor , String ... fileExtensions ) {
32
69
super (displayName , astUtil , keyword , parser , extractor , fileExtensions );
33
70
}
34
71
35
72
}
36
73
37
74
38
- public static class Java extends CodeLanguageOptions <JavaKeyword , Java , JavaAstUtil , AstExtractor <JavaBlock >> {
75
+ public static class Java extends CodeLanguageImpl <JavaKeyword , Java , JavaAstUtil , AstExtractor <JavaBlock >> {
39
76
Java (String displayName , JavaAstUtil astUtil , Keyword keyword , Function <ParseInput , CodeFileSrc <Java >> parser , AstExtractor <JavaBlock > extractor , String ... fileExtensions ) {
40
77
super (displayName , astUtil , keyword , parser , extractor , fileExtensions );
41
78
}
@@ -44,10 +81,10 @@ public static class Java extends CodeLanguageOptions<JavaKeyword, Java, JavaAstU
44
81
45
82
46
83
public static final Java JAVA = new Java ("Java" , new JavaAstUtil (), JavaKeyword .check , JavaClassParser ::parse , new JavaBlockParser (), "java" );
47
- public static final CodeLanguageOptions <Object , CodeLanguage , AstUtil <CompoundBlock , Object >, AstExtractor <CompoundBlock >> JAVASCRIPT = new CodeLanguageOptions <>("Javascript" , null , null , null , null , "js" , "ts" );
84
+ public static final CodeLanguageImpl <Object , CodeLanguage , AstUtil <CompoundBlock , Object >, AstExtractor <CompoundBlock >> JAVASCRIPT = new CodeLanguageImpl <>("Javascript" , null , null , null , null , "js" , "ts" );
48
85
public static final CSharp C_SHARP = new CSharp ("C#" , new CsAstUtil (), CsKeyword .check , CsClassParser ::parse , new CsBlockParser (), "cs" );
49
- public static final CodeLanguageOptions <Object , CodeLanguage , AstUtil <CompoundBlock , Object >, AstExtractor <CompoundBlock >> CSS = new CodeLanguageOptions <>("CSS" , null , null , null , null , "css" );
50
- public static final CodeLanguageOptions <Object , CodeLanguage , AstUtil <CompoundBlock , Object >, AstExtractor <CompoundBlock >> XML = new CodeLanguageOptions <>("XML" , null , null , null , null , "html" , "xml" );
86
+ public static final CodeLanguageImpl <Object , CodeLanguage , AstUtil <CompoundBlock , Object >, AstExtractor <CompoundBlock >> CSS = new CodeLanguageImpl <>("CSS" , null , null , null , null , "css" );
87
+ public static final CodeLanguageImpl <Object , CodeLanguage , AstUtil <CompoundBlock , Object >, AstExtractor <CompoundBlock >> XML = new CodeLanguageImpl <>("XML" , null , null , null , null , "html" , "xml" );
51
88
52
89
private static CopyOnWriteArrayList <CodeLanguage > values ;
53
90
@@ -62,31 +99,6 @@ public static class Java extends CodeLanguageOptions<JavaKeyword, Java, JavaAstU
62
99
}
63
100
64
101
65
- final String displayName ;
66
- @ Getter final Function <ParseInput , CodeFileSrc <T_LANG >> parser ;
67
- @ Getter final List <String > fileExtensions ;
68
- @ Getter final T_AST_UTIL astUtil ;
69
- @ Getter final Keyword keyword ;
70
- @ Getter final T_AST_EXTRACTOR extractor ;
71
-
72
-
73
- // package-private
74
- CodeLanguageOptions (String displayName , T_AST_UTIL astUtil , Keyword keyword , Function <ParseInput , CodeFileSrc <T_LANG >> parser , T_AST_EXTRACTOR extractor , String ... fileExtensions ) {
75
- this .displayName = displayName ;
76
- this .parser = parser ;
77
- this .fileExtensions = new ArrayList <>(Arrays .asList (fileExtensions ));
78
- this .astUtil = astUtil ;
79
- this .keyword = keyword ;
80
- this .extractor = extractor ;
81
- }
82
-
83
-
84
- @ Override
85
- public String displayName () {
86
- return displayName ;
87
- }
88
-
89
-
90
102
/**
91
103
* @return a list of all registered languages
92
104
*/
@@ -106,7 +118,7 @@ public static List<CodeLanguage> getLanguages() {
106
118
*/
107
119
public static <_T_BLOCK extends CompoundBlock , _T_KEYWORD , _T_LANG extends CodeLanguage , _T_AST_UTIL extends AstUtil <_T_BLOCK , _T_KEYWORD >, T_AST_EXTRACTOR extends AstExtractor <_T_BLOCK >> CodeLanguage registerCodeLanguage (
108
120
String displayName , _T_AST_UTIL astUtil , Keyword keyword , Function <ParseInput , CodeFileSrc <_T_LANG >> parser , T_AST_EXTRACTOR extractor , String ... fileExtensions ) {
109
- val inst = new CodeLanguageOptions <>(displayName , astUtil , keyword , parser , extractor , fileExtensions );
121
+ val inst = new CodeLanguageImpl <>(displayName , astUtil , keyword , parser , extractor , fileExtensions );
110
122
_registerNewLanguage (inst );
111
123
return inst ;
112
124
}
0 commit comments