Skip to content

Commit 0b6de73

Browse files
committed
json part 1
1 parent 76ca930 commit 0b6de73

File tree

1 file changed

+78
-23
lines changed

1 file changed

+78
-23
lines changed

src/main/java/org/omegaconfig/impl/formats/JSONFormat.java

Lines changed: 78 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -5,33 +5,22 @@
55
import org.omegaconfig.api.formats.IFormatWriter;
66
import org.omegaconfig.api.formats.IFormatCodec;
77

8-
import java.io.IOException;
8+
import java.io.*;
99
import java.nio.file.Files;
1010
import java.nio.file.Path;
11-
import java.util.HashMap;
12-
import java.util.LinkedHashSet;
13-
import java.util.Map;
14-
import java.util.Set;
11+
import java.util.*;
1512

1613
public class JSONFormat implements IFormatCodec {
17-
public JSONFormat() {
14+
private static final char JSON_OBJECT_START = '{';
15+
private static final char JSON_OBJECT_END = '}';
16+
private static final char JSON_CONTINUE = ',';
17+
private static final char JSON_STRING_LINE = '"';
18+
private static final char JSON_ENTRY_SPLIT = ':';
19+
private static final char JSON_ESCAPED = '\\';
1820

19-
}
20-
21-
@Override
22-
public String id() {
23-
return OmegaConfig.FORMAT_JSON;
24-
}
25-
26-
@Override
27-
public String extension() {
28-
return "." + id();
29-
}
30-
31-
@Override
32-
public String mimeType() {
33-
return "application/json";
34-
}
21+
@Override public String id() { return OmegaConfig.FORMAT_JSON; }
22+
@Override public String extension() { return "." + id(); }
23+
@Override public String mimeType() { return "application/json"; }
3524

3625
@Override
3726
public IFormatReader createReader(Path filePath) throws IOException {
@@ -43,7 +32,73 @@ public IFormatWriter createWritter(Path filePath) throws IOException {
4332
return null;
4433
}
4534

46-
private static class CharSpect {
35+
private static class NewFormatReader implements IFormatReader {
36+
private final LinkedHashMap<String, String> values = new LinkedHashMap<>();
37+
38+
39+
public NewFormatReader(Path path) throws IOException {
40+
// READ JSON STRING
41+
var in = new FileInputStream(path.toFile());
42+
char[] data = new String(in.readAllBytes()).toCharArray();
43+
in.close();
44+
45+
char expected = JSON_OBJECT_START;
46+
boolean escaped = false;
47+
boolean keyCapture = false;
48+
boolean valueCapture = false;
49+
final LinkedHashSet<String> group = new LinkedHashSet<>();
50+
StringBuilder key = new StringBuilder();
51+
StringBuilder value =new StringBuilder();
52+
53+
for (int i = 0; i < data.length; i++) {
54+
char c = data[i];
55+
56+
if (c != expected) {
57+
throw new IllegalArgumentException("Expected char " + expected + " but received " + c);
58+
}
59+
60+
switch (c) {
61+
case JSON_OBJECT_START -> {
62+
if (!key.isEmpty()) {
63+
group.add(key.toString());
64+
key = new StringBuilder();
65+
}
66+
expected = JSON_STRING_LINE;
67+
}
68+
69+
case JSON_STRING_LINE -> {
70+
if (keyCapture) {
71+
key.append(c);
72+
}
73+
if (valueCapture) {
74+
value.append(c);
75+
}
76+
}
77+
}
78+
}
79+
80+
81+
}
82+
83+
@Override
84+
public String read(String fieldName) {
85+
return "";
86+
}
87+
88+
@Override
89+
public void push(String group) {
90+
91+
}
92+
93+
@Override
94+
public void pop() {
95+
96+
}
97+
98+
@Override
99+
public void close() throws IOException {
100+
101+
}
47102
}
48103

49104
private static class FormatReader implements IFormatReader {

0 commit comments

Comments
 (0)