Skip to content
This repository was archived by the owner on Oct 18, 2024. It is now read-only.

Commit adf1a09

Browse files
committed
fix: all languages not available in sample app
1 parent 343eeb8 commit adf1a09

File tree

5 files changed

+42
-23
lines changed

5 files changed

+42
-23
lines changed

.idea/codeStyles/codeStyleConfig.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/build.gradle

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,10 @@ dependencies {
5151

5252
implementation project(path: ':android-tree-sitter')
5353
implementation project(path: ':tree-sitter-java')
54+
implementation project(path: ':tree-sitter-json')
55+
implementation project(path: ':tree-sitter-kotlin')
5456
implementation project(path: ':tree-sitter-python')
57+
implementation project(path: ':tree-sitter-xml')
5558

5659
testImplementation 'junit:junit:4.13.2'
5760
androidTestImplementation 'androidx.test.ext:junit:1.1.3'

app/src/main/java/com/itsaky/androidide/androidtreesitter/MainActivity.java

Lines changed: 38 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -21,69 +21,87 @@
2121
import android.text.Editable;
2222
import android.text.TextWatcher;
2323
import android.util.Log;
24-
24+
import android.widget.ArrayAdapter;
2525
import androidx.annotation.NonNull;
2626
import androidx.annotation.Nullable;
2727
import androidx.appcompat.app.AppCompatActivity;
28-
2928
import com.itsaky.androidide.androidtreesitter.databinding.ActivityMainBinding;
3029
import com.itsaky.androidide.androidtreesitter.databinding.ContentMainBinding;
3130
import com.itsaky.androidide.treesitter.TSLanguage;
3231
import com.itsaky.androidide.treesitter.TSParser;
3332
import com.itsaky.androidide.treesitter.TSTreeCursor;
34-
import com.itsaky.androidide.treesitter.string.UTF16String;
3533
import com.itsaky.androidide.treesitter.java.TSLanguageJava;
34+
import com.itsaky.androidide.treesitter.json.TSLanguageJson;
35+
import com.itsaky.androidide.treesitter.kotlin.TSLanguageKotlin;
3636
import com.itsaky.androidide.treesitter.python.TSLanguagePython;
3737
import com.itsaky.androidide.treesitter.string.UTF16StringFactory;
38-
38+
import com.itsaky.androidide.treesitter.xml.TSLanguageXml;
3939
import java.io.PrintWriter;
4040
import java.io.StringWriter;
41+
import java.util.HashMap;
4142
import java.util.Locale;
43+
import java.util.Map;
44+
import java.util.Objects;
4245

4346
/**
4447
* @author Akash Yadav
4548
*/
4649
public class MainActivity extends AppCompatActivity {
4750

51+
private static final Map<String, TSLanguage> languageMap;
52+
4853
static {
4954
System.loadLibrary("android-tree-sitter");
5055
System.loadLibrary("tree-sitter-java");
56+
System.loadLibrary("tree-sitter-json");
57+
System.loadLibrary("tree-sitter-kotlin");
5158
System.loadLibrary("tree-sitter-python");
59+
System.loadLibrary("tree-sitter-xml");
60+
61+
languageMap = new HashMap<>();
62+
languageMap.put("Java", TSLanguageJava.newInstance());
63+
languageMap.put("JSON", TSLanguageJson.newInstance());
64+
languageMap.put("Kotlin", TSLanguageKotlin.newInstance());
65+
languageMap.put("Python", TSLanguagePython.newInstance());
66+
languageMap.put("XML", TSLanguageXml.newInstance());
5267
}
5368

54-
private final TSLanguage[] langs = {TSLanguageJava.newInstance(), TSLanguagePython.newInstance()};
55-
private ActivityMainBinding binding;
5669
private ContentMainBinding content;
5770

5871
@Override
5972
public void onCreate(@Nullable Bundle savedInstanceState) {
6073
super.onCreate(savedInstanceState);
61-
binding = ActivityMainBinding.inflate(getLayoutInflater());
74+
com.itsaky.androidide.androidtreesitter.databinding.ActivityMainBinding binding = ActivityMainBinding.inflate(
75+
getLayoutInflater());
6276
content = binding.content;
6377

6478
setContentView(binding.getRoot());
6579
setSupportActionBar(binding.toolbar);
6680

81+
content.languageChooser.setAdapter(
82+
new ArrayAdapter<>(this, android.R.layout.simple_list_item_1,
83+
languageMap.keySet().toArray(new String[0])));
84+
6785
// new String(byte[], String) is not supported on Android)
6886
// so we use ByteBuffer to decode the string
6987
// Test working of UTF16String.toString() on Android
7088
final var utf16String = UTF16StringFactory.newString("android-tree-sitter UTF16String");
7189
Log.d("MainActivity", "UTF16Str: " + utf16String);
7290
utf16String.close();
7391

74-
content.code.addTextChangedListener(
75-
new Watcher() {
76-
@Override
77-
public void afterTextChanged(Editable editable) {
78-
afterInputChanged(editable);
79-
}
80-
});
92+
content.code.addTextChangedListener(new Watcher() {
93+
@Override
94+
public void afterTextChanged(Editable editable) {
95+
afterInputChanged(editable);
96+
}
97+
});
8198
}
8299

83100
private void afterInputChanged(Editable editable) {
84101
final var start = System.currentTimeMillis();
85102
try (final var parser = new TSParser()) {
86-
parser.setLanguage(langs[content.languageChooser.getSelectedItemPosition()]);
103+
parser.setLanguage(Objects.requireNonNull(
104+
languageMap.get((String) content.languageChooser.getSelectedItem())));
87105
try (final var tree = parser.parseString(editable.toString())) {
88106
try (final var cursor = tree.getRootNode().walk()) {
89107
final var duration = System.currentTimeMillis() - start;
@@ -134,10 +152,13 @@ private void repeatSpaces(StringBuilder sb, int count) {
134152
}
135153

136154
private abstract static class Watcher implements TextWatcher {
155+
137156
@Override
138-
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {}
157+
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
158+
}
139159

140160
@Override
141-
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {}
161+
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
162+
}
142163
}
143164
}

app/src/main/res/layout/content_main.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
android:layout_width="0dp"
2929
android:layout_height="48dp"
3030
android:layout_marginTop="16dp"
31-
android:entries="@array/languages"
3231
app:layout_constraintEnd_toEndOf="@id/textInputLayout"
3332
app:layout_constraintStart_toStartOf="@id/textInputLayout"
3433
app:layout_constraintTop_toBottomOf="@id/textInputLayout" />
Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,3 @@
11
<resources>
22
<string name="app_name">AndroidTreeSitter</string>
3-
<string-array name="languages">
4-
<item>Java</item>
5-
<item>Python</item>
6-
</string-array>
73
</resources>

0 commit comments

Comments
 (0)