JPP: Removed lingua path slugs from dial tone book for smaller size

This commit is contained in:
Willem Cazander 2026-01-29 11:33:28 +01:00
parent 7dd4e80a2a
commit c34b7694c5
7 changed files with 83 additions and 56 deletions

View file

@ -62,7 +62,7 @@ public class ModelDialLingua implements KodeGenModel {
@Override
public String generatorModelHash() {
return "5";
return "6";
}
@Override
@ -70,6 +70,13 @@ public class ModelDialLingua implements KodeGenModel {
// Load and convert lingua
List<String> linguaEntries = loadLinguaEntries();
List<NetherSlugNamed> netherSlugs = convertLinguaEntries(linguaEntries);
List<NetherSlugNamed> netherSlugsRM = new ArrayList<>();
for (int i = 0; i < netherSlugs.size(); i++) {
if (i < netherSlugs.size() - 1 && netherSlugs.get(i).linguaName().equals(netherSlugs.get(i+1).linguaName())) {
netherSlugsRM.add(netherSlugs.get(i));
} // cleans all the parent slugs of a language, this makes the jar file about 6 MB smaller
}
netherSlugs.removeAll(netherSlugsRM);
System.out.println("Lingua entries: " + linguaEntries.size() + " converted: " + netherSlugs.size());
// add top root entry for defaults of all other languages
@ -92,13 +99,16 @@ public class ModelDialLingua implements KodeGenModel {
Map<String, Map<String, List<NetherSlugNamed>>> splitSlugs = new HashMap<>();
for (NetherSlugNamed slug : netherSlugs) {
int split6Package = slug.view().bl0w() >> 3; // 64 package with 8 files (is 1000+ classes per package folder)
String subPackage = "" + writer.buildPackageInuktitutDots(split6Package, 6);
String subPackage = "" + writer.buildInuktitutBinary(split6Package, 6);
StringBuilder fileName = new StringBuilder();
fileName.append(""); // use full prefix dot id for unique class names over all nether sub packages
fileName.append(writer.buildPackageInuktitutDots(slug.view().ag1(), 3));
fileName.append(writer.buildPackageInuktitutDots(slug.view().ag2(), 3));
fileName.append(writer.buildPackageInuktitutDots(slug.view().ag3(), 3));
fileName.append(writer.buildPackageInuktitutDots(slug.view().bl0w(), 9));
fileName.append(writer.buildInuktitutBinary(slug.view().ag1(), 3));
fileName.append("");
fileName.append(writer.buildInuktitutBinary(slug.view().ag2(), 3));
fileName.append("");
fileName.append(writer.buildInuktitutBinary(slug.view().ag3(), 3));
fileName.append(subPackage);
fileName.append(writer.buildInuktitutBinary(slug.view().bl0w() & 0b111, 3));
String filePackage = fileName.toString();
Map<String, List<NetherSlugNamed>> map = splitSlugs.get(subPackage);
if (map == null) {
@ -154,13 +164,16 @@ public class ModelDialLingua implements KodeGenModel {
humanKlassPart = humanKlassPart.replaceAll(" ", "");
// N2L prints LR and read and renders RL
String slugName = "" + slug.view().toNúmero2Lingua() + "" + humanKlassPart;
// old lingua classes are below 400 bytes current 1900+, this line below removes about 80-100 bytes per class.
//String slugName = "" + slug.linguaKey().replaceAll("\\-", "").replaceAll("\\+", "");
// TODO: check class byte code of structure to see if structural changes can drop the total size
buf.append("\t/// ");
buf.append(slug.linguaKey);
buf.append("\n");
buf.append("\t");
buf.append("non-sealed interface ");
buf.append("\tnon-sealed interface ");
buf.append(slugName);
buf.append(" extends ");
buf.append("\n");
buf.append("\t\t\textends ");
buf.append(javaName);
buf.append(", ");
List<Class<?>> tones = slug.view().toNetherTones(0);
@ -173,7 +186,8 @@ public class ModelDialLingua implements KodeGenModel {
buf.append(", ");
}
}
buf.append(" {}\n");
buf.append(" {\n");
buf.append("\t}\n");
}
buf.append("}\n");
}