JPP: Removed lingua path slugs from dial tone book for smaller size
This commit is contained in:
parent
7dd4e80a2a
commit
c34b7694c5
7 changed files with 83 additions and 56 deletions
|
|
@ -38,11 +38,11 @@ import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAu
|
|||
@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
|
||||
public class BabelTest {
|
||||
// ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.xxx
|
||||
// ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ(8 times 2^6+2^6+2^6+2^9+2^6+2^6+2^6+2^6+2^6+2^6+2^9 = 12800 interface + mutex + etc)
|
||||
// ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᔆᒼᣗᑊᣖᐪ (2^6+2^6+2^6+2^9+2^6+2^6+2^6+2^6+2^6+2^6+2^9 = x interface + mutex + etc)
|
||||
// ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᒼᑋᐤᣗᑊᐣ // implement as group marker interface to readout relative distance to marker root
|
||||
// ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᒄᑊᣔᒻ.ᒻᑊᣕᕐᓑᣔ (#interfaces; ~31K + file groupings)
|
||||
// ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᒄᑊᣔᒻ.ᒃᣔᔆᓫᒄ (#interfaces; 2304 + 2_655_360 + file groupings)
|
||||
// ᒢᐩᐩ.ᑊᑉᒻᣔᔆᔆ.ᒃᐤᣕᓫ.ᣖᑊᣗᣔᐪᓫ.ᒃᐤᣔᐪs
|
||||
// ᒢᐩᐩ.ᑊᑉᒻᣔᔆᔆ.ᒃᐤᣕᓫ.ᣖᑊᣗᣔᐪᓫ.ᒃᐤᣔᐪ
|
||||
// ᒢᐩᐩ.ᑊᑉᒻᣔᔆᔆ.ᒃᐤᣕᓫ.ᣘᒻᓫᔆᑋ.ᣔᔿᔿᐤ
|
||||
// ᒢᐩᐩ.ᑊᑉᒻᣔᔆᔆ.ᒼᣔᑊᑉᓫ.ᐪᣔᔆᐪᓫ
|
||||
// ᒢᐩᐩ.ᑊᑉᒻᣔᔆᔆ.ᒻᐤᣔᑊᐣᓫᣗ
|
||||
|
|
|
|||
|
|
@ -63,6 +63,26 @@ public class NumberMatrixFactoryTest {
|
|||
Assertions.assertEquals(i, film.geefDimensie());
|
||||
Assertions.assertEquals(film.waardes().sizeᴿᵈ(), film.waardes().getᴿᵈ(0).zerdinalSpaceBoundary());
|
||||
}
|
||||
// size: 5 result: 120
|
||||
// size: 6 result: 720
|
||||
// -- gen line, 7+ has get only dial tones for IDENTITY_LE and IDENTITY_BE
|
||||
// 18+9=27(-x0) ~: 134217728 (end boundry lehman nether)
|
||||
// size: 7 result: 5040 (set of sealed or declared interface is too slow)
|
||||
// size: 8 result: 40320 (T256)
|
||||
// size: 9 result: 362880 (T512) (larger than max of 18 bit nether slug path)
|
||||
// size: 10 result: 3628800
|
||||
// size: 11 result: 39916800
|
||||
// java.lang.OutOfMemoryError: Java heap space
|
||||
// for (int i = 5; i < 10; i++) {
|
||||
// int n = i;
|
||||
// int[] initial = new int[n];
|
||||
// for (int ni = 0; ni < n; ni++) {
|
||||
// initial[ni] = ni;
|
||||
// }
|
||||
// List<int[]> allPermutations = new ArrayList<>();
|
||||
// generatePermutations(initial, 0, allPermutations);
|
||||
// System.out.println("size: " + i + " result: " + allPermutations.size());
|
||||
// }
|
||||
}
|
||||
|
||||
// TODO: redo matrix with lehmer dial tones from jpp-nether-dial-lehmer
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,5 +30,5 @@
|
|||
/// @version ©Δ∞ 仙上主天
|
||||
module jpp.nether.tone {
|
||||
exports ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ;
|
||||
exports ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ;
|
||||
exports ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᔆᒼᣗᑊᣖᐪ;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ public class ModelNetherTones implements KodeGenModel {
|
|||
|
||||
@Override
|
||||
public String generatorModelHash() {
|
||||
return "15";
|
||||
return "16";
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -58,22 +58,15 @@ public class ModelNetherTones implements KodeGenModel {
|
|||
|
||||
// TODO: redo tree again, as a Q slug, should be usable to reuse in any other Qx slug
|
||||
// but that needs generics and than 2 equals interfaces do not match anymore...
|
||||
buildQuadrants(writer, 1);
|
||||
buildQuadrants(writer, 2);
|
||||
buildQuadrants(writer, 3);
|
||||
buildQuadrants(writer, 4);
|
||||
buildQuadrants(writer, 5);
|
||||
buildQuadrants(writer, 6);
|
||||
buildQuadrants(writer, 7);
|
||||
buildQuadrants(writer, 8);
|
||||
buildToneScript(writer);
|
||||
|
||||
buildNetherQuadrant(writer, "NetherTone", "NetherToneQ", false);
|
||||
buildNetherQuadrant(writer, "NetherTone", "NetherToneScript", false);
|
||||
}
|
||||
|
||||
private void buildQuadrants(ModelKlassWriter writer, int quadrant) {
|
||||
String s = writer.buildPackageInuktitutDots(quadrant - 1, 3);
|
||||
String q = "ᐊQ" + quadrant;
|
||||
String e = "NetherToneQ" + quadrant;
|
||||
private void buildToneScript(ModelKlassWriter writer) {
|
||||
String s = "ᔆᒼᣗᑊᣖᐪ";
|
||||
String q = "ᐊᐪᔆ";
|
||||
String e = "NetherToneScript";
|
||||
|
||||
buildNetherTreeSlug(writer, s, q + "AG1", 64, e);
|
||||
buildNetherTreeSlug(writer, s, q + "AG2", 64, e);
|
||||
|
|
|
|||
|
|
@ -32,38 +32,38 @@ import java.util.List;
|
|||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1AG1;
|
||||
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1AG2;
|
||||
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1AG3;
|
||||
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1BL0W;
|
||||
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1CR1;
|
||||
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1CR2;
|
||||
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1CR3;
|
||||
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1DB1;
|
||||
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1DB2;
|
||||
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1DB3;
|
||||
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1ER0W;
|
||||
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᔆᒼᣗᑊᣖᐪ.ᐊᐪᔆAG1;
|
||||
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᔆᒼᣗᑊᣖᐪ.ᐊᐪᔆAG2;
|
||||
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᔆᒼᣗᑊᣖᐪ.ᐊᐪᔆAG3;
|
||||
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᔆᒼᣗᑊᣖᐪ.ᐊᐪᔆBL0W;
|
||||
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᔆᒼᣗᑊᣖᐪ.ᐊᐪᔆCR1;
|
||||
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᔆᒼᣗᑊᣖᐪ.ᐊᐪᔆCR2;
|
||||
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᔆᒼᣗᑊᣖᐪ.ᐊᐪᔆCR3;
|
||||
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᔆᒼᣗᑊᣖᐪ.ᐊᐪᔆDB1;
|
||||
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᔆᒼᣗᑊᣖᐪ.ᐊᐪᔆDB2;
|
||||
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᔆᒼᣗᑊᣖᐪ.ᐊᐪᔆDB3;
|
||||
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᔆᒼᣗᑊᣖᐪ.ᐊᐪᔆER0W;
|
||||
|
||||
public class NetherToneSlugViewTest {
|
||||
|
||||
private interface Q1SlugExample extends
|
||||
ᐊQ1AG1.ᐅ00,
|
||||
ᐊQ1AG2.ᐅ01,
|
||||
ᐊQ1AG3.ᐅ02,
|
||||
ᐊQ1BL0W.ᐅ003,
|
||||
ᐊQ1CR1.ᐅ04,
|
||||
ᐊQ1CR2.ᐅ05,
|
||||
ᐊQ1CR3.ᐅ06,
|
||||
ᐊQ1DB1.ᐅ07,
|
||||
ᐊQ1DB2.ᐅ08,
|
||||
ᐊQ1DB3.ᐅ09,
|
||||
ᐊQ1ER0W.ᐅ010
|
||||
ᐊᐪᔆAG1.ᐅ00,
|
||||
ᐊᐪᔆAG2.ᐅ01,
|
||||
ᐊᐪᔆAG3.ᐅ02,
|
||||
ᐊᐪᔆBL0W.ᐅ003,
|
||||
ᐊᐪᔆCR1.ᐅ04,
|
||||
ᐊᐪᔆCR2.ᐅ05,
|
||||
ᐊᐪᔆCR3.ᐅ06,
|
||||
ᐊᐪᔆDB1.ᐅ07,
|
||||
ᐊᐪᔆDB2.ᐅ08,
|
||||
ᐊᐪᔆDB3.ᐅ09,
|
||||
ᐊᐪᔆER0W.ᐅ010
|
||||
{
|
||||
}
|
||||
|
||||
private interface Q1SlugExampleErr extends
|
||||
ᐊQ1AG1.ᐅ00,
|
||||
ᐊQ1AG2.ᐅ01
|
||||
ᐊᐪᔆAG1.ᐅ00,
|
||||
ᐊᐪᔆAG2.ᐅ01
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -90,8 +90,8 @@ public class NetherToneSlugViewTest {
|
|||
Assertions.assertNotNull(slug);
|
||||
List<Class<?>> result = slug.toNetherTones(0);
|
||||
Assertions.assertNotNull(result);
|
||||
Assertions.assertEquals(ᐊQ1AG1.ᐅ00.class, result.get(0));
|
||||
Assertions.assertEquals(ᐊQ1AG2.ᐅ01.class, result.get(1));
|
||||
Assertions.assertEquals(ᐊQ1AG3.ᐅ02.class, result.get(2));
|
||||
Assertions.assertEquals(ᐊᐪᔆAG1.ᐅ00.class, result.get(0));
|
||||
Assertions.assertEquals(ᐊᐪᔆAG2.ᐅ01.class, result.get(1));
|
||||
Assertions.assertEquals(ᐊᐪᔆAG3.ᐅ02.class, result.get(2));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -139,10 +139,10 @@ public class ModelKlassWriter {
|
|||
}
|
||||
}
|
||||
|
||||
public String buildPackageInuktitutDots(int number, int digets) {
|
||||
public String buildInuktitutBinary(int number, int digets) {
|
||||
String numberBin = String.format("%1$" + digets + "s", Integer.toString(number, 2));
|
||||
String result = numberBin.replaceAll("0|\\s", "ᐧ");
|
||||
result = result.replaceAll("1", "ᣟ");
|
||||
result = result.replaceAll("1", "ᣟ"); // ᑊ
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue