mirror of https://github.com/rusefi/rusefi.git
progress towards compact enum syntax
This commit is contained in:
parent
2132cec3fc
commit
56d5d77300
|
@ -2,11 +2,14 @@ package com.rusefi;
|
|||
|
||||
import com.rusefi.enum_reader.Value;
|
||||
import com.rusefi.util.SystemOut;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.yaml.snakeyaml.Yaml;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.*;
|
||||
|
||||
import static com.rusefi.output.JavaSensorsConsumer.quote;
|
||||
|
||||
public class PinoutLogic {
|
||||
private static final String CONFIG_BOARDS = "config/boards/";
|
||||
private static final String CONNECTORS = "/connectors";
|
||||
|
@ -59,31 +62,42 @@ public class PinoutLogic {
|
|||
String pinType = namePinType.getPinType();
|
||||
String nothingName = namePinType.getNothingName();
|
||||
EnumsReader.EnumState enumList = state.enumsReader.getEnums().get(pinType);
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (int i = 0; i < kv.getValue().size(); i++) {
|
||||
if (sb.length() > 0)
|
||||
sb.append(",");
|
||||
String key = "";
|
||||
for (Map.Entry<String, Value> entry : enumList.entrySet()) {
|
||||
if (entry.getValue().getIntValue() == i) {
|
||||
key = entry.getKey();
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (key.equals(nothingName)) {
|
||||
sb.append("\"NONE\"");
|
||||
} else if (kv.getValue().get(i) == null) {
|
||||
sb.append("\"INVALID\"");
|
||||
} else {
|
||||
sb.append("\"" + kv.getValue().get(i) + "\"");
|
||||
}
|
||||
}
|
||||
String sb = enumToOptionsList(nothingName, enumList, kv.getValue());
|
||||
if (sb.length() > 0) {
|
||||
registry.register(outputEnumName, sb.toString());
|
||||
registry.register(outputEnumName, sb);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static String enumToOptionsList(String nothingName, EnumsReader.EnumState enumList, ArrayList<String> values) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (int i = 0; i < values.size(); i++) {
|
||||
if (sb.length() > 0)
|
||||
sb.append(",");
|
||||
String key = findKey(enumList, i);
|
||||
if (key.equals(nothingName)) {
|
||||
sb.append("\"NONE\"");
|
||||
} else if (values.get(i) == null) {
|
||||
sb.append(quote("INVALID"));
|
||||
} else {
|
||||
sb.append("\"" + values.get(i) + "\"");
|
||||
}
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
private static String findKey(EnumsReader.EnumState enumList, int i) {
|
||||
String key = "";
|
||||
for (Map.Entry<String, Value> entry : enumList.entrySet()) {
|
||||
if (entry.getValue().getIntValue() == i) {
|
||||
key = entry.getKey();
|
||||
break;
|
||||
}
|
||||
}
|
||||
return key;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private void readMetaInfo(File yamlFile) throws IOException {
|
||||
Yaml yaml = new Yaml();
|
||||
|
@ -174,10 +188,6 @@ public class PinoutLogic {
|
|||
}
|
||||
}
|
||||
|
||||
private String quote(String value) {
|
||||
return "\"" + value + "\"";
|
||||
}
|
||||
|
||||
public List<String> getInputFiles() {
|
||||
List<String> result = new ArrayList<>();
|
||||
for (File yamlFile : boardYamlFiles) {
|
||||
|
|
|
@ -72,7 +72,7 @@ public class ConfigFieldParserTest {
|
|||
ReaderState state = new ReaderState();
|
||||
|
||||
BaseCHeaderConsumer consumer = new BaseCHeaderConsumer();
|
||||
state.readBufferedReader(test, (consumer));
|
||||
state.readBufferedReader(test, consumer);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
package com.rusefi.test;
|
||||
|
||||
import com.rusefi.EnumsReader;
|
||||
import com.rusefi.PinoutLogic;
|
||||
import com.rusefi.enum_reader.Value;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Map;
|
||||
import java.util.TreeMap;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
public class PinoutLogicTest {
|
||||
@Test
|
||||
public void testEnumToTs() {
|
||||
Map<String, Value> currentValues = new TreeMap<>();
|
||||
currentValues.put("KEY", new Value(null, "3"));
|
||||
currentValues.put("KEY4", new Value("NO", "4"));
|
||||
EnumsReader.EnumState enumState = new EnumsReader.EnumState(currentValues, "pins", true);
|
||||
|
||||
ArrayList<String> list = new ArrayList<>(Arrays.asList("1", "NO", null, null, null, null, null, "10"));
|
||||
|
||||
String result = PinoutLogic.enumToOptionsList("NO", enumState, list);
|
||||
assertEquals("\"1\",\"NO\",\"INVALID\",\"INVALID\",\"INVALID\",\"INVALID\",\"INVALID\",\"10\"", result);
|
||||
|
||||
}
|
||||
}
|
|
@ -2,12 +2,20 @@ package com.rusefi;
|
|||
|
||||
import com.devexperts.logging.Logging;
|
||||
import com.rusefi.enum_reader.Value;
|
||||
import com.rusefi.util.SystemOut;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.*;
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.Reader;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.TreeMap;
|
||||
import java.util.TreeSet;
|
||||
|
||||
import static com.devexperts.logging.Logging.getLogging;
|
||||
|
||||
|
@ -130,7 +138,7 @@ public class EnumsReader {
|
|||
}
|
||||
|
||||
public static class EnumState {
|
||||
public Map<String, Value> values;
|
||||
public final Map<String, Value> values;
|
||||
public final String enumName;
|
||||
public final boolean isEnumClass;
|
||||
|
||||
|
|
Loading…
Reference in New Issue