Skip to content

Commit c627de3

Browse files
committed
Add GoSyntaxManager class to manage golang themes
1 parent c93f669 commit c627de3

1 file changed

Lines changed: 124 additions & 0 deletions

File tree

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
package com.amrdeveloper.codeviewlibrary.syntax;
2+
3+
import android.content.Context;
4+
5+
import com.amrdeveloper.codeview.CodeView;
6+
import com.amrdeveloper.codeviewlibrary.R;
7+
8+
import java.util.regex.Pattern;
9+
10+
public class GoSyntaxManager {
11+
12+
//Language Keywords
13+
private static final Pattern PATTERN_KEYWORDS = Pattern.compile("\\b(break|default|func|interface|case|defer|" +
14+
"go|map|struct|chan|else|goto|package|switch|const" +
15+
"|fallthrough|if|range|type|continue|for|import|return|var|" +
16+
"string|true|false|new|nil|byte|bool|int|int8|int16|int32|int64)\\b");
17+
18+
//Brackets and Colons
19+
private static final Pattern PATTERN_BUILTINS = Pattern.compile("[,:;[->]{}()]");
20+
21+
//Data
22+
private static final Pattern PATTERN_NUMBERS = Pattern.compile("\\b(\\d*[.]?\\d+)\\b");
23+
private static final Pattern PATTERN_CHAR = Pattern.compile("'[a-zA-Z]'");
24+
private static final Pattern PATTERN_STRING = Pattern.compile("\".*\"");
25+
private static final Pattern PATTERN_HEX = Pattern.compile("0x[0-9a-fA-F]+");
26+
private static final Pattern PATTERN_TODO_COMMENT = Pattern.compile("//TODO[^\n]*");
27+
private static final Pattern PATTERN_COMMENT = Pattern.compile("//[^\n]*" + "|" + "/\\*(.|\\R)*?\\*/");
28+
private static final Pattern PATTERN_ATTRIBUTE = Pattern.compile("\\.[a-zA-Z0-9_]+");
29+
private static final Pattern PATTERN_OPERATION =Pattern.compile( ":|==|>|<|!=|>=|<=|->|=|>|<|%|-|-=|%=|\\+|\\-|\\-=|\\+=|\\^|\\&|\\|::|\\?|\\*");
30+
31+
public static void applyMonokaiTheme(Context context, CodeView codeView) {
32+
codeView.resetSyntaxPatternList();
33+
//View Background
34+
codeView.setBackgroundColor(codeView.getResources().getColor(R.color.monokia_pro_black));
35+
36+
//Syntax Colors
37+
codeView.addSyntaxPattern(PATTERN_HEX, context.getResources().getColor(R.color.monokia_pro_purple));
38+
codeView.addSyntaxPattern(PATTERN_CHAR, context.getResources().getColor(R.color.monokia_pro_green));
39+
codeView.addSyntaxPattern(PATTERN_STRING, context.getResources().getColor(R.color.monokia_pro_orange));
40+
codeView.addSyntaxPattern(PATTERN_NUMBERS, context.getResources().getColor(R.color.monokia_pro_purple));
41+
codeView.addSyntaxPattern(PATTERN_KEYWORDS, context.getResources().getColor(R.color.monokia_pro_pink));
42+
codeView.addSyntaxPattern(PATTERN_BUILTINS, context.getResources().getColor(R.color.monokia_pro_white));
43+
codeView.addSyntaxPattern(PATTERN_COMMENT, context.getResources().getColor(R.color.monokia_pro_grey));
44+
codeView.addSyntaxPattern(PATTERN_ATTRIBUTE, context.getResources().getColor(R.color.monokia_pro_sky));
45+
codeView.addSyntaxPattern(PATTERN_OPERATION, context.getResources().getColor(R.color.monokia_pro_pink));
46+
//Default Color
47+
codeView.setTextColor( context.getResources().getColor(R.color.monokia_pro_white));
48+
49+
codeView.addSyntaxPattern(PATTERN_TODO_COMMENT, context.getResources().getColor(R.color.gold));
50+
51+
codeView.reHighlightSyntax();
52+
}
53+
54+
public static void applyNoctisWhiteTheme(Context context, CodeView codeView) {
55+
codeView.resetSyntaxPatternList();
56+
//View Background
57+
codeView.setBackgroundColor(codeView.getResources().getColor(R.color.noctis_white));
58+
59+
//Syntax Colors
60+
codeView.addSyntaxPattern(PATTERN_HEX, context.getResources().getColor(R.color.noctis_purple));
61+
codeView.addSyntaxPattern(PATTERN_CHAR, context.getResources().getColor(R.color.noctis_green));
62+
codeView.addSyntaxPattern(PATTERN_STRING, context.getResources().getColor(R.color.noctis_green));
63+
codeView.addSyntaxPattern(PATTERN_NUMBERS, context.getResources().getColor(R.color.noctis_purple));
64+
codeView.addSyntaxPattern(PATTERN_KEYWORDS, context.getResources().getColor(R.color.noctis_pink));
65+
codeView.addSyntaxPattern(PATTERN_BUILTINS, context.getResources().getColor(R.color.noctis_dark_blue));
66+
codeView.addSyntaxPattern(PATTERN_COMMENT, context.getResources().getColor(R.color.noctis_grey));
67+
codeView.addSyntaxPattern(PATTERN_ATTRIBUTE, context.getResources().getColor(R.color.noctis_blue));
68+
codeView.addSyntaxPattern(PATTERN_OPERATION, context.getResources().getColor(R.color.monokia_pro_pink));
69+
70+
//Default Color
71+
codeView.setTextColor( context.getResources().getColor(R.color.noctis_orange));
72+
73+
codeView.addSyntaxPattern(PATTERN_TODO_COMMENT, context.getResources().getColor(R.color.gold));
74+
75+
codeView.reHighlightSyntax();
76+
}
77+
78+
public static void applyFiveColorsDarkTheme(Context context, CodeView codeView) {
79+
codeView.resetSyntaxPatternList();
80+
//View Background
81+
codeView.setBackgroundColor(codeView.getResources().getColor(R.color.five_dark_black));
82+
83+
//Syntax Colors
84+
codeView.addSyntaxPattern(PATTERN_HEX, context.getResources().getColor(R.color.five_dark_purple));
85+
codeView.addSyntaxPattern(PATTERN_CHAR, context.getResources().getColor(R.color.five_dark_yellow));
86+
codeView.addSyntaxPattern(PATTERN_STRING, context.getResources().getColor(R.color.five_dark_yellow));
87+
codeView.addSyntaxPattern(PATTERN_NUMBERS, context.getResources().getColor(R.color.five_dark_purple));
88+
codeView.addSyntaxPattern(PATTERN_KEYWORDS, context.getResources().getColor(R.color.five_dark_purple));
89+
codeView.addSyntaxPattern(PATTERN_BUILTINS, context.getResources().getColor(R.color.five_dark_white));
90+
codeView.addSyntaxPattern(PATTERN_COMMENT, context.getResources().getColor(R.color.five_dark_grey));
91+
codeView.addSyntaxPattern(PATTERN_ATTRIBUTE, context.getResources().getColor(R.color.five_dark_blue));
92+
codeView.addSyntaxPattern(PATTERN_OPERATION, context.getResources().getColor(R.color.five_dark_purple));
93+
//Default Color
94+
codeView.setTextColor( context.getResources().getColor(R.color.five_dark_white));
95+
96+
codeView.addSyntaxPattern(PATTERN_TODO_COMMENT, context.getResources().getColor(R.color.gold));
97+
98+
codeView.reHighlightSyntax();
99+
}
100+
101+
public static void applyOrangeBoxTheme(Context context, CodeView codeView) {
102+
codeView.resetSyntaxPatternList();
103+
//View Background
104+
codeView.setBackgroundColor(codeView.getResources().getColor(R.color.orange_box_black));
105+
106+
//Syntax Colors
107+
codeView.addSyntaxPattern(PATTERN_HEX, context.getResources().getColor(R.color.gold));
108+
codeView.addSyntaxPattern(PATTERN_CHAR, context.getResources().getColor(R.color.orange_box_orange2));
109+
codeView.addSyntaxPattern(PATTERN_STRING, context.getResources().getColor(R.color.orange_box_orange2));
110+
codeView.addSyntaxPattern(PATTERN_NUMBERS, context.getResources().getColor(R.color.five_dark_purple));
111+
codeView.addSyntaxPattern(PATTERN_KEYWORDS, context.getResources().getColor(R.color.orange_box_orange1));
112+
codeView.addSyntaxPattern(PATTERN_BUILTINS, context.getResources().getColor(R.color.orange_box_grey));
113+
codeView.addSyntaxPattern(PATTERN_COMMENT, context.getResources().getColor(R.color.orange_box_dark_grey));
114+
codeView.addSyntaxPattern(PATTERN_ATTRIBUTE, context.getResources().getColor(R.color.orange_box_orange3));
115+
codeView.addSyntaxPattern(PATTERN_OPERATION, context.getResources().getColor(R.color.gold));
116+
//Default Color
117+
codeView.setTextColor(context.getResources().getColor(R.color.five_dark_white));
118+
119+
codeView.addSyntaxPattern(PATTERN_TODO_COMMENT, context.getResources().getColor(R.color.gold));
120+
121+
codeView.reHighlightSyntax();
122+
}
123+
124+
}

0 commit comments

Comments
 (0)