JPP: Split lehmer endian and added space guide navigation dial slugs
All checks were successful
Run test asserts / Test-Asserts (push) Successful in 1m23s
All checks were successful
Run test asserts / Test-Asserts (push) Successful in 1m23s
This commit is contained in:
parent
0e0b107094
commit
fc90187bcf
10 changed files with 304 additions and 153 deletions
|
|
@ -29,7 +29,7 @@ package ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐪᣔᒻᑊᑉ;
|
|||
|
||||
import java.util.Arrays;
|
||||
|
||||
import ᒢᣘᐧᐧ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.NetherTone;
|
||||
import ᒢᣘᐧᐧ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.NetherToneGuide;
|
||||
|
||||
/// Builds and formatted and localized text message.
|
||||
///
|
||||
|
|
@ -45,7 +45,7 @@ public final class KaasTalkTextLocalizer {
|
|||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
static public String formatToned(final Class<? extends NetherTone> linguaId, final Class<? extends KaasTalkText> babelMsg, final Object...msgArgs) {
|
||||
static public String formatToned(final Class<? extends NetherToneGuide.SpaceGuideSageNX01Lingua> linguaId, final Class<? extends KaasTalkText> babelMsg, final Object...msgArgs) {
|
||||
if (babelMsg == null) {
|
||||
throw new NullPointerException("No kaas talk message class given.");
|
||||
}
|
||||
|
|
@ -56,7 +56,7 @@ public final class KaasTalkTextLocalizer {
|
|||
return v;
|
||||
}
|
||||
}).toArray();
|
||||
Class<? extends NetherTone> putinLinguaId = linguaId; // The put in lingua id
|
||||
Class<? extends NetherToneGuide.SpaceGuideSageNX01Lingua> putinLinguaId = linguaId; // The put in lingua id
|
||||
if (putinLinguaId == null) {
|
||||
putinLinguaId = 嘴ᗮᙿᗮ.guess();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ import java.lang.annotation.Retention;
|
|||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
import ᒢᣘᐧᐧ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.NetherTone;
|
||||
import ᒢᣘᐧᐧ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.NetherToneGuide;
|
||||
|
||||
/// Define kaas talk text.
|
||||
///
|
||||
|
|
@ -46,7 +46,7 @@ import ᒢᣘᐧᐧ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.NetherTone;
|
|||
@Target({ElementType.TYPE})
|
||||
public @interface KaasTalkText注 {
|
||||
|
||||
Class<? extends NetherTone> 嘴();
|
||||
Class<? extends NetherToneGuide.SpaceGuideSageNX01Lingua> 嘴();
|
||||
|
||||
String txt();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ package ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᐪᣔᒻᑊᑉ;
|
|||
|
||||
import java.util.Locale;
|
||||
|
||||
import ᒢᣘᐧᐧ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.NetherTone;
|
||||
import ᒢᣘᐧᐧ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.NetherToneGuide;
|
||||
import ᒢᣘᐧᐧ.ᣕᓫᐪᑋᓫᣗ.ᒄᑊᣔᒻ.ᒻᑊᣕᕐᓑᣔᓫ.ᐞᐧᐧᐧᐧᐧᣟ.ᐃᣟᐧᐧᐧᐧᐧᐞᣟᐧᐧᐧᐧᣟᐞᣟᐧᐧᐧᣟᐧᐞᐧᐧᐧᐧᐧᣟᣟᐧᣟ;
|
||||
import ᒢᣘᐧᐧ.ᣕᓫᐪᑋᓫᣗ.ᒄᑊᣔᒻ.ᒻᑊᣕᕐᓑᣔᓫ.ᐞᐧᐧᐧᣟᣟᐧ.ᐃᣟᐧᐧᐧᐧᐧᐞᣟᐧᐧᐧᐧᣟᐞᣟᐧᐧᐧᣟᐧᐞᐧᐧᐧᣟᣟᐧᣟᐧᐧ;
|
||||
import ᒢᣘᐧᐧ.ᣕᓫᐪᑋᓫᣗ.ᒄᑊᣔᒻ.ᒻᑊᣕᕐᓑᣔᓫ.ᐞᐧᐧᐧᣟᣟᐧ.ᐃᣟᐧᐧᐧᐧᐧᐞᣟᐧᐧᐧᐧᣟᐞᣟᐧᐧᐧᣟᐧᐞᐧᐧᐧᣟᣟᐧᣟᐧᣟ;
|
||||
|
|
@ -43,7 +43,7 @@ public enum 嘴ᗮᙿᗮ {
|
|||
|
||||
|
||||
// temp until data is in No2Lingua
|
||||
public static Class<? extends NetherTone> guess() {
|
||||
public static Class<? extends NetherToneGuide.SpaceGuideSageNX01Lingua> guess() {
|
||||
Locale locale = Locale.getDefault();
|
||||
if ("NL".equals(locale.getCountry())) {
|
||||
return Dutch.class;
|
||||
|
|
|
|||
|
|
@ -30,6 +30,8 @@
|
|||
/// @author للَّٰهِilLצسُو
|
||||
/// @version ©Δ∞ 仙上主天
|
||||
module ᣕᕁᐤᣳ.ᒢᣘᐧᐧ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ {
|
||||
requires transitive ᣕᕁᐤᣳ.ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ;
|
||||
|
||||
exports ᒢᣘᐧᐧ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ;
|
||||
exports ᒢᣘᐧᐧ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᔆᒼᣗᑊᣖᐪ;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,65 @@
|
|||
/*
|
||||
* Copyright ©Δ∞ 仙上主天
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||
* that the following conditions are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||
* following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
||||
* the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
|
||||
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
|
||||
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
|
||||
* even on air gaped systems, all information in the universe is owned by the pi creator.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package ᒢᣘᐧᐧ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ;
|
||||
|
||||
import ᒢᣘᐧᐧ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᔆᒼᣗᑊᣖᐪ.ᐊᐪᔆAG1;
|
||||
import ᒢᣘᐧᐧ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᔆᒼᣗᑊᣖᐪ.ᐊᐪᔆAG2;
|
||||
import ᒢᣘᐧᐧ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᔆᒼᣗᑊᣖᐪ.ᐊᐪᔆAG3;
|
||||
|
||||
/// Nether tone guide to help kaas bubble travel.
|
||||
///
|
||||
/// @author للَّٰهِilLצسُو
|
||||
/// @version ©Δ∞ 仙上主天
|
||||
public sealed interface NetherToneGuide {
|
||||
|
||||
// AG1
|
||||
// - 0 = reserved null
|
||||
// - 1-31 = locked by legacy
|
||||
// - 32 = sage master system version space 0x20
|
||||
// - 33+ = reserved for major schema version upgrades
|
||||
//
|
||||
// AG2
|
||||
// - 0 = reserved null
|
||||
// - 1-32 = reserved for metatron Atari AI
|
||||
// - 33 = NX01 sub space
|
||||
// - 34+ = for other use
|
||||
//
|
||||
// AG3 (NX01 ONLY)
|
||||
// - 0 = reserved null
|
||||
// - 16 = lehmer up to 16
|
||||
// - 17 = lehmer size 17
|
||||
// - 18 = lehmer size 18
|
||||
// - 34 = lingua
|
||||
|
||||
|
||||
non-sealed interface SpaceGuideSageNX01Lehmer16 extends NetherToneGuide, ᐊᐪᔆAG1.ᐅ32, ᐊᐪᔆAG2.ᐅ33, ᐊᐪᔆAG3.ᐅ16 {}
|
||||
non-sealed interface SpaceGuideSageNX01Lehmer17 extends NetherToneGuide, ᐊᐪᔆAG1.ᐅ32, ᐊᐪᔆAG2.ᐅ33, ᐊᐪᔆAG3.ᐅ17 {}
|
||||
non-sealed interface SpaceGuideSageNX01Lehmer18 extends NetherToneGuide, ᐊᐪᔆAG1.ᐅ32, ᐊᐪᔆAG2.ᐅ33, ᐊᐪᔆAG3.ᐅ18 {}
|
||||
|
||||
non-sealed interface SpaceGuideSageNX01Lingua extends NetherToneGuide, ᐊᐪᔆAG1.ᐅ32, ᐊᐪᔆAG2.ᐅ33, ᐊᐪᔆAG3.ᐅ34 {}
|
||||
}
|
||||
|
|
@ -28,6 +28,9 @@
|
|||
package ᒢᣘᐧᐧ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
|
||||
/// Nether tone slug view record.
|
||||
|
|
@ -94,8 +97,8 @@ public record NetherToneSlugView(
|
|||
public List<Class<?>> toNetherTones() {
|
||||
List<Class<?>> result = new ArrayList<>(11);
|
||||
for (int i = 0; i < 11; i++) {
|
||||
Class<?> subClass = NetherToneScript.class.getPermittedSubclasses()[i];
|
||||
Class<?>[] valueClasses = subClass.getPermittedSubclasses();
|
||||
Class<?> subClass = sortedPermittedSubclasses(NetherToneScript.class).get(i);
|
||||
Class<?>[] valueClasses = sortedPermittedSubclasses(subClass).toArray(new Class[] {});
|
||||
result.add(switch (i) {
|
||||
case 0: yield valueClasses[ag1];
|
||||
case 1: yield valueClasses[ag2];
|
||||
|
|
@ -113,12 +116,31 @@ public record NetherToneSlugView(
|
|||
return result;
|
||||
}
|
||||
|
||||
static NetherToneSlugView ofQSluq(Class<? extends NetherToneScript> q) {
|
||||
static private List<Class<?>> sortedPermittedSubclasses(Class<?> c) {
|
||||
Class<?>[] valueArray = c.getPermittedSubclasses();
|
||||
if (valueArray == null) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
List<Class<?>> valueList = new ArrayList<>(Arrays.asList(valueArray));
|
||||
valueList.sort(new Comparator<Class<?>>() {
|
||||
@Override
|
||||
public int compare(Class<?> o1, Class<?> o2) {
|
||||
return o1.getSimpleName().compareTo(o2.getSimpleName());
|
||||
}
|
||||
});
|
||||
return valueList;
|
||||
}
|
||||
|
||||
static public NetherToneSlugView ofQSluq(Class<? extends NetherToneScript> q) {
|
||||
return ofQSluq(q, true);
|
||||
}
|
||||
|
||||
static public NetherToneSlugView ofQSluq(Class<? extends NetherToneScript> q, boolean failIncomplete) {
|
||||
int[] d = new int[11];
|
||||
int dataIdx = 0;
|
||||
for (Class<?> subClass : NetherToneScript.class.getPermittedSubclasses()) {
|
||||
for (Class<?> subClass : sortedPermittedSubclasses(NetherToneScript.class)) {
|
||||
boolean hasValue = false;
|
||||
Class<?>[] valueClasses = subClass.getPermittedSubclasses();
|
||||
Class<?>[] valueClasses = sortedPermittedSubclasses(subClass).toArray(new Class[] {});
|
||||
for (int i = 0; i < valueClasses.length; i++) {
|
||||
Class<?> valueClass = valueClasses[i];
|
||||
if (valueClass.isAssignableFrom(q)) {
|
||||
|
|
@ -128,14 +150,14 @@ public record NetherToneSlugView(
|
|||
break;
|
||||
}
|
||||
}
|
||||
if (!hasValue) {
|
||||
if (failIncomplete && !hasValue) {
|
||||
throw new IllegalArgumentException("missing Q value in nether space of: " + subClass);
|
||||
}
|
||||
}
|
||||
return new NetherToneSlugView(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7], d[8], d[9], d[10]);
|
||||
}
|
||||
|
||||
static boolean slugPresent(Class<? extends NetherToneScript> q) {
|
||||
static public boolean slugPresent(Class<? extends NetherToneScript> q) {
|
||||
for (Class<?> subClass : NetherToneScript.class.getPermittedSubclasses()) {
|
||||
boolean hasValue = false;
|
||||
for (Class<?> valueClass : subClass.getPermittedSubclasses()) {
|
||||
|
|
|
|||
|
|
@ -35,6 +35,8 @@ import java.util.List;
|
|||
import love.distributedrebirth.nx01.kode.generator.KodeGenModel;
|
||||
import love.distributedrebirth.nx01.kode.generator.klass.ModelKlass;
|
||||
import love.distributedrebirth.nx01.kode.generator.klass.ModelKlassWriter;
|
||||
import ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᒻᣔᣕᒄ.KaasLandGenerated注;
|
||||
import ᒢᣘᐧᐧ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.NetherToneGuide;
|
||||
import ᒢᣘᐧᐧ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.NetherToneSlugView;
|
||||
|
||||
/// Generated the nether dial interface tree forest.
|
||||
|
|
@ -52,12 +54,14 @@ public class ModelDial implements KodeGenModel {
|
|||
|
||||
@Override
|
||||
public String generatorModelHash() {
|
||||
return "5";
|
||||
return "6";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void buildModels(ModelKlassWriter writer) throws IOException {
|
||||
generateLehmer(writer);
|
||||
List<NetherSlugLehmer> models = generateLehmerModels();
|
||||
printLehmerSequences(writer, models);
|
||||
printLehmerEndian(writer, models);
|
||||
|
||||
//generateUnicode
|
||||
//generateFC18
|
||||
|
|
@ -72,20 +76,159 @@ public class ModelDial implements KodeGenModel {
|
|||
buildModuleInfo(writer);
|
||||
}
|
||||
|
||||
private static final int LEHMER_AG1 = 32; // sage master system version space 0x20
|
||||
private static final int LEHMER_AG2 = 33; // No2Lingua sub space
|
||||
private static final int LEHMER_AG3_16 = 16; // Up to size 16
|
||||
private static final int LEHMER_AG3_17 = 17; // size 17
|
||||
private static final int LEHMER_AG3_18 = 18; // size 18
|
||||
private void buildModuleInfo(ModelKlassWriter writer) {
|
||||
ModelKlass klass = new ModelKlass("", "module-info");
|
||||
klass.addJavaDescription("The nether dial packs tree slug index.");
|
||||
writer.addModelKlass(klass);
|
||||
StringBuilder buf = klass.getBody();
|
||||
buf.append("module ᣕᕁᐤᣳ.ᒢᣘᐧᐧ.ᣕᓫᐪᑋᓫᣗ.ᒄᑊᣔᒻ {\n");
|
||||
buf.append("\trequires transitive ᣕᕁᐤᣳ.ᒢᣘᐧᐧ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ;\n");
|
||||
//buf.append("\trequires transitive ᣕᕁᐤᣳ.ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ;\n");
|
||||
buf.append("\t\n");
|
||||
buf.append("\texports " + BASE_PACK + ".ᒻᓫᑋᔿᓫᣗ;\n");
|
||||
buf.append("}\n");
|
||||
}
|
||||
|
||||
private void generateLehmer(ModelKlassWriter writer) {
|
||||
private void printLehmerSequences(ModelKlassWriter writer, List<NetherSlugLehmer> models) {
|
||||
for (NetherSlugLehmer model : models) {
|
||||
if (model.sequences.length == 0) {
|
||||
continue;
|
||||
}
|
||||
String sizeStr = String.format("%02d", model.size());
|
||||
String javaName = "DialCodeLehmer" + sizeStr;
|
||||
ModelKlass klass = new ModelKlass(BASE_PACK + ".ᒻᓫᑋᔿᓫᣗ" , javaName);
|
||||
List<Class<?>> tones = model.identityEndianLittle().toNetherTones();
|
||||
klass.addJavaImports(tones.subList(3, tones.size()));
|
||||
klass.addJavaImport(NetherToneGuide.class.getName() + ".SpaceGuideSageNX01Lehmer16");
|
||||
klass.addJavaDescription("Lehmer code unique sequence index number sets.");
|
||||
klass.setJavaDocAuthor("Lehmer");
|
||||
klass.addJavaAnno(KaasLandGenerated注.class, "generator = \"model-dial\"");
|
||||
writer.addModelKlass(klass);
|
||||
StringBuilder buf = klass.getBody();
|
||||
buf.append("public sealed interface ");
|
||||
buf.append(javaName);
|
||||
buf.append(" extends SpaceGuideSageNX01Lehmer16, ");
|
||||
for (Iterator<Class<?>> i = tones.subList(3, 4).iterator(); i.hasNext() ;) {
|
||||
Class<?> toneClass = i.next();
|
||||
buf.append(toneClass.getDeclaringClass().getSimpleName());
|
||||
buf.append(".");
|
||||
buf.append(toneClass.getSimpleName());
|
||||
if (i.hasNext()) {
|
||||
buf.append(", ");
|
||||
}
|
||||
}
|
||||
buf.append(" {\n");
|
||||
for (NetherToneSlugView sequnceIndex : model.sequences()) {
|
||||
String slugName = "ᐊ" + sequnceIndex.toNúmero2Lingua() + "ᐅ";
|
||||
buf.append("\tnon-sealed interface ");
|
||||
buf.append(slugName);
|
||||
buf.append("\n");
|
||||
buf.append("\t\t\textends ");
|
||||
buf.append(javaName);
|
||||
buf.append(", ");
|
||||
tones =sequnceIndex.toNetherTones();
|
||||
for (Iterator<Class<?>> i = tones.subList(4, tones.size()).iterator(); i.hasNext() ;) {
|
||||
Class<?> toneClass = i.next();
|
||||
buf.append(toneClass.getDeclaringClass().getSimpleName());
|
||||
buf.append(".");
|
||||
buf.append(toneClass.getSimpleName());
|
||||
if (i.hasNext()) {
|
||||
buf.append(", ");
|
||||
}
|
||||
}
|
||||
buf.append(" {\n");
|
||||
buf.append("\t}\n");
|
||||
}
|
||||
buf.append("}\n");
|
||||
}
|
||||
}
|
||||
|
||||
private void printLehmerEndian(ModelKlassWriter writer, List<NetherSlugLehmer> models) {
|
||||
String javaName = "DialCodeLehmerEndian";
|
||||
ModelKlass klass = new ModelKlass(BASE_PACK + ".ᒻᓫᑋᔿᓫᣗ" , javaName);
|
||||
klass.addJavaDescription("Lehmer code Endian dial codes.");
|
||||
klass.setJavaDocAuthor("Lehmer");
|
||||
klass.addJavaAnno(KaasLandGenerated注.class, "generator = \"model-dial\"");
|
||||
List<Class<?>> tonesImport = models.get(0).identityEndianLittle().toNetherTones();
|
||||
klass.addJavaImports(tonesImport.subList(3, tonesImport.size()));
|
||||
klass.addJavaImport(NetherToneGuide.class.getName() + ".SpaceGuideSageNX01Lehmer16");
|
||||
klass.addJavaImport(NetherToneGuide.class.getName() + ".SpaceGuideSageNX01Lehmer17");
|
||||
klass.addJavaImport(NetherToneGuide.class.getName() + ".SpaceGuideSageNX01Lehmer18");
|
||||
writer.addModelKlass(klass);
|
||||
StringBuilder buf = klass.getBody();
|
||||
buf.append("public sealed interface ");
|
||||
buf.append(javaName);
|
||||
//buf.append(" extends ");
|
||||
buf.append(" {\n");
|
||||
for (NetherSlugLehmer model : models) {
|
||||
String sizeStr = String.format("%02d", model.size());
|
||||
buf.append("\tnon-sealed interface ");
|
||||
buf.append("LehmerTone" + sizeStr + "LE");
|
||||
buf.append("\n");
|
||||
buf.append("\t\t\textends ");
|
||||
buf.append(javaName);
|
||||
buf.append(", ");
|
||||
if (model.size <= 16) {
|
||||
buf.append("SpaceGuideSageNX01Lehmer16, ");
|
||||
} else if (model.size == 17) {
|
||||
buf.append("SpaceGuideSageNX01Lehmer17, ");
|
||||
} else if (model.size == 18) {
|
||||
buf.append("SpaceGuideSageNX01Lehmer18, ");
|
||||
}
|
||||
List<Class<?>> tonesLE = model.identityEndianLittle().toNetherTones();
|
||||
for (Iterator<Class<?>> i = tonesLE.subList(3, tonesLE.size()).iterator(); i.hasNext() ;) {
|
||||
Class<?> toneClass = i.next();
|
||||
buf.append(toneClass.getDeclaringClass().getSimpleName());
|
||||
buf.append(".");
|
||||
buf.append(toneClass.getSimpleName());
|
||||
if (i.hasNext()) {
|
||||
buf.append(", ");
|
||||
}
|
||||
}
|
||||
buf.append(" {\n");
|
||||
buf.append("\t}\n");
|
||||
|
||||
buf.append("\tnon-sealed interface ");
|
||||
buf.append("LehmerTone" + sizeStr + "BE");
|
||||
buf.append("\n");
|
||||
buf.append("\t\t\textends ");
|
||||
buf.append(javaName);
|
||||
buf.append(", ");
|
||||
if (model.size <= 16) {
|
||||
buf.append("SpaceGuideSageNX01Lehmer16, ");
|
||||
} else if (model.size == 17) {
|
||||
buf.append("SpaceGuideSageNX01Lehmer17, ");
|
||||
} else if (model.size == 18) {
|
||||
buf.append("SpaceGuideSageNX01Lehmer18, ");
|
||||
}
|
||||
List<Class<?>> tonesBE = model.identityEndianBig().toNetherTones();
|
||||
for (Iterator<Class<?>> i = tonesBE.subList(3, tonesBE.size()).iterator(); i.hasNext() ;) {
|
||||
Class<?> toneClass = i.next();
|
||||
buf.append(toneClass.getDeclaringClass().getSimpleName());
|
||||
buf.append(".");
|
||||
buf.append(toneClass.getSimpleName());
|
||||
if (i.hasNext()) {
|
||||
buf.append(", ");
|
||||
}
|
||||
}
|
||||
buf.append(" {\n");
|
||||
buf.append("\t}\n");
|
||||
}
|
||||
buf.append("}\n");
|
||||
}
|
||||
|
||||
record NetherSlugLehmer(int size, NetherToneSlugView identityEndianLittle, NetherToneSlugView identityEndianBig, NetherToneSlugView...sequences) {
|
||||
}
|
||||
|
||||
private List<NetherSlugLehmer> generateLehmerModels() {
|
||||
NetherToneSlugView slugSpaceGuide = NetherToneSlugView.ofQSluq(NetherToneGuide.SpaceGuideSageNX01Lehmer16.class, false);
|
||||
List<NetherSlugLehmer> models = new ArrayList<>();
|
||||
for (int i = 2; i <= 18; i++) {
|
||||
int[] rankFirst = calculateLehmerFromRank(0, i);
|
||||
long amount = calculateTotalPermutations(rankFirst);
|
||||
int ag1 = LEHMER_AG1;
|
||||
int ag2 = LEHMER_AG2;
|
||||
int ag3 = LEHMER_AG3_16;
|
||||
int ag1 = slugSpaceGuide.ag1();
|
||||
int ag2 = slugSpaceGuide.ag2();
|
||||
int ag3 = slugSpaceGuide.ag3();
|
||||
int bl0w = i - 1;
|
||||
int cr1 = 0;
|
||||
int cr2 = 0;
|
||||
|
|
@ -107,11 +250,10 @@ public class ModelDial implements KodeGenModel {
|
|||
bl0w = 0;
|
||||
}
|
||||
if (i == 17) {
|
||||
ag3 = LEHMER_AG3_17;
|
||||
ag3 = slugSpaceGuide.ag3() + 1;
|
||||
} else if (i == 18) {
|
||||
ag3 = LEHMER_AG3_18;
|
||||
ag3 = slugSpaceGuide.ag3() + 2;
|
||||
}
|
||||
|
||||
db3 = 0;
|
||||
er0w = 0;
|
||||
NetherToneSlugView slugLE = new NetherToneSlugView(ag1, ag2, ag3, bl0w, cr1, cr2, cr3, db1, db2, db3, er0w);
|
||||
|
|
@ -130,116 +272,7 @@ public class ModelDial implements KodeGenModel {
|
|||
NetherSlugLehmer slugLehmer = new NetherSlugLehmer(i, slugLE, slugBE, indexSequenceSelectors.toArray(new NetherToneSlugView[] {}));
|
||||
models.add(slugLehmer);
|
||||
}
|
||||
|
||||
// print models
|
||||
for (NetherSlugLehmer model : models) {
|
||||
String sizeStr = String.format("%02d", model.SIZE());
|
||||
String javaName = "DialCodeLehmer" + sizeStr;
|
||||
ModelKlass klass = new ModelKlass(BASE_PACK + ".ᒻᓫᑋᔿᓫᣗ" , javaName);
|
||||
List<Class<?>> tones = model.IDLE().toNetherTones();
|
||||
for (Class<?> tone : tones) {
|
||||
klass.addJavaImport(tone.getDeclaringClass().getName());
|
||||
}
|
||||
klass.addJavaDescription("Lehmer code unique sequence index number sets.");
|
||||
klass.setJavaDocAuthor("Lehmer");
|
||||
writer.addModelKlass(klass);
|
||||
StringBuilder buf = klass.getBody();
|
||||
buf.append("public sealed interface ");
|
||||
buf.append(javaName);
|
||||
buf.append(" extends ");
|
||||
for (Iterator<Class<?>> i = tones.subList(0, 3).iterator(); i.hasNext() ;) {
|
||||
Class<?> toneClass = i.next();
|
||||
buf.append(toneClass.getDeclaringClass().getSimpleName());
|
||||
buf.append(".");
|
||||
buf.append(toneClass.getSimpleName());
|
||||
if (i.hasNext()) {
|
||||
buf.append(", ");
|
||||
}
|
||||
}
|
||||
buf.append(" {\n");
|
||||
|
||||
buf.append("\tnon-sealed interface ");
|
||||
buf.append("IdentityLittleEndian");
|
||||
buf.append("\n");
|
||||
buf.append("\t\t\textends ");
|
||||
buf.append(javaName);
|
||||
buf.append(", ");
|
||||
tones = model.IDLE().toNetherTones();
|
||||
for (Iterator<Class<?>> i = tones.subList(3, tones.size()).iterator(); i.hasNext() ;) {
|
||||
Class<?> toneClass = i.next();
|
||||
buf.append(toneClass.getDeclaringClass().getSimpleName());
|
||||
buf.append(".");
|
||||
buf.append(toneClass.getSimpleName());
|
||||
if (i.hasNext()) {
|
||||
buf.append(", ");
|
||||
}
|
||||
}
|
||||
buf.append(" {\n");
|
||||
buf.append("\t}\n");
|
||||
|
||||
buf.append("\tnon-sealed interface ");
|
||||
buf.append("IdentityBigEndian");
|
||||
buf.append("\n");
|
||||
buf.append("\t\t\textends ");
|
||||
buf.append(javaName);
|
||||
buf.append(", ");
|
||||
tones = model.IDBE().toNetherTones();
|
||||
for (Iterator<Class<?>> i = tones.subList(3, tones.size()).iterator(); i.hasNext() ;) {
|
||||
Class<?> toneClass = i.next();
|
||||
buf.append(toneClass.getDeclaringClass().getSimpleName());
|
||||
buf.append(".");
|
||||
buf.append(toneClass.getSimpleName());
|
||||
if (i.hasNext()) {
|
||||
buf.append(", ");
|
||||
}
|
||||
}
|
||||
buf.append(" {\n");
|
||||
buf.append("\t}\n");
|
||||
|
||||
for (NetherToneSlugView sequnceIndex : model.SLUGS()) {
|
||||
String slugName = "ᐊ" + sequnceIndex.toNúmero2Lingua() + "ᐅ";
|
||||
buf.append("\tnon-sealed interface ");
|
||||
buf.append(slugName);
|
||||
buf.append("\n");
|
||||
buf.append("\t\t\textends ");
|
||||
buf.append(javaName);
|
||||
buf.append(", ");
|
||||
tones =sequnceIndex.toNetherTones();
|
||||
for (Iterator<Class<?>> i = tones.subList(3, tones.size()).iterator(); i.hasNext() ;) {
|
||||
Class<?> toneClass = i.next();
|
||||
buf.append(toneClass.getDeclaringClass().getSimpleName());
|
||||
buf.append(".");
|
||||
buf.append(toneClass.getSimpleName());
|
||||
if (i.hasNext()) {
|
||||
buf.append(", ");
|
||||
}
|
||||
}
|
||||
buf.append(" {\n");
|
||||
buf.append("\t}\n");
|
||||
}
|
||||
|
||||
buf.append("}\n");
|
||||
}
|
||||
}
|
||||
|
||||
record NetherSlugLehmer(int SIZE, NetherToneSlugView IDLE, NetherToneSlugView IDBE, NetherToneSlugView...SLUGS) {
|
||||
}
|
||||
|
||||
private void buildModuleInfo(ModelKlassWriter writer) {
|
||||
ModelKlass klass = new ModelKlass("", "module-info");
|
||||
klass.addJavaDescription("The nether dial packs tree slug index.");
|
||||
writer.addModelKlass(klass);
|
||||
StringBuilder buf = klass.getBody();
|
||||
buf.append("module ᣕᕁᐤᣳ.ᒢᣘᐧᐧ.ᣕᓫᐪᑋᓫᣗ.ᒄᑊᣔᒻ {\n");
|
||||
buf.append("\trequires transitive ᣕᕁᐤᣳ.ᒢᣘᐧᐧ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ;\n");
|
||||
buf.append("\t\n");
|
||||
buf.append("\texports " + BASE_PACK + ".ᒻᓫᑋᔿᓫᣗ;\n");
|
||||
// for (String pack : splitSlugs.keySet()) {
|
||||
// buf.append("\texports ");
|
||||
// buf.append(BASE_PACK + "." + pack);
|
||||
// buf.append(";\n");
|
||||
// }
|
||||
buf.append("}\n");
|
||||
return models;
|
||||
}
|
||||
|
||||
private long factorial(int n) {
|
||||
|
|
|
|||
|
|
@ -41,6 +41,8 @@ import java.util.Map;
|
|||
import love.distributedrebirth.nx01.kode.generator.KodeGenModel;
|
||||
import love.distributedrebirth.nx01.kode.generator.klass.ModelKlass;
|
||||
import love.distributedrebirth.nx01.kode.generator.klass.ModelKlassWriter;
|
||||
import ᒢᣘᐧᐧ.ᑊᑉᣔᣔᔆ.ᒻᣔᣕᒄ.KaasLandGenerated注;
|
||||
import ᒢᣘᐧᐧ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.NetherToneGuide;
|
||||
import ᒢᣘᐧᐧ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.NetherToneSlugView;
|
||||
|
||||
/// Generated the nether lingua interface tree forest.
|
||||
|
|
@ -50,9 +52,6 @@ import ᒢᣘᐧᐧ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.NetherToneSlugView;
|
|||
public class ModelDialLingua implements KodeGenModel {
|
||||
|
||||
private static final String BASE_PACK = "ᒢᣘᐧᐧ.ᣕᓫᐪᑋᓫᣗ.ᒄᑊᣔᒻ.ᒻᑊᣕᕐᓑᣔᓫ";
|
||||
private static final int LINGUA_AG1 = 32; // sage master system version space 0x20
|
||||
private static final int LINGUA_AG2 = 33; // No2Lingua sub space
|
||||
private static final int LINGUA_AG3 = 34; // Locale ether slug space
|
||||
|
||||
@Override
|
||||
public String generatorKey() {
|
||||
|
|
@ -61,7 +60,7 @@ public class ModelDialLingua implements KodeGenModel {
|
|||
|
||||
@Override
|
||||
public String generatorModelHash() {
|
||||
return "6";
|
||||
return "7";
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -79,10 +78,11 @@ public class ModelDialLingua implements KodeGenModel {
|
|||
System.out.println("Lingua entries: " + linguaEntries.size() + " converted: " + netherSlugs.size());
|
||||
|
||||
// add top root entry for defaults of all other languages
|
||||
NetherToneSlugView slugSpaceGuide = NetherToneSlugView.ofQSluq(NetherToneGuide.SpaceGuideSageNX01Lingua.class, false);
|
||||
int[] d = new int[11];
|
||||
d[0] = LINGUA_AG1;
|
||||
d[1] = LINGUA_AG2;
|
||||
d[2] = LINGUA_AG3;
|
||||
d[0] = slugSpaceGuide.ag1();
|
||||
d[1] = slugSpaceGuide.ag2();
|
||||
d[2] = slugSpaceGuide.ag3();
|
||||
d[3] = 512 - 1; // 0x1FF
|
||||
d[4] = 64 - 1;
|
||||
d[5] = 64 - 1;
|
||||
|
|
@ -133,17 +133,17 @@ public class ModelDialLingua implements KodeGenModel {
|
|||
NetherSlugNamed slugTpl = list.get(0);
|
||||
List<Class<?>> tonesTpl = slugTpl.view().toNetherTones();
|
||||
ModelKlass klass = new ModelKlass(BASE_PACK + "." + pack, javaName);
|
||||
for (Class<?> tone : tonesTpl) {
|
||||
klass.addJavaImport(tone.getDeclaringClass().getName());
|
||||
}
|
||||
klass.addJavaImports(tonesTpl.subList(3, tonesTpl.size()));
|
||||
klass.addJavaImport(NetherToneGuide.class.getName() + ".SpaceGuideSageNX01Lingua");
|
||||
klass.addJavaDescription("Lingua set of supported human text and vocal dialects for terminators.");
|
||||
klass.setJavaDocAuthor("Observatoire Human Linguistique");
|
||||
klass.addJavaAnno(KaasLandGenerated注.class, "generator = \"model-dial\"");
|
||||
writer.addModelKlass(klass);
|
||||
StringBuilder buf = klass.getBody();
|
||||
buf.append("public sealed interface ");
|
||||
buf.append(javaName);
|
||||
buf.append(" extends ");
|
||||
for (Iterator<Class<?>> i = tonesTpl.subList(0, 4).iterator(); i.hasNext() ;) {
|
||||
buf.append(" extends SpaceGuideSageNX01Lingua, ");
|
||||
for (Iterator<Class<?>> i = tonesTpl.subList(3, 4).iterator(); i.hasNext() ;) {
|
||||
Class<?> toneClass = i.next();
|
||||
buf.append(toneClass.getDeclaringClass().getSimpleName());
|
||||
buf.append(".");
|
||||
|
|
@ -212,6 +212,7 @@ public class ModelDialLingua implements KodeGenModel {
|
|||
}
|
||||
|
||||
private List<NetherSlugNamed> convertLinguaEntries(List<String> linguaEntries) {
|
||||
NetherToneSlugView slugSpaceGuide = NetherToneSlugView.ofQSluq(NetherToneGuide.SpaceGuideSageNX01Lingua.class, false);
|
||||
List<NetherSlugNamed> result = new ArrayList<>(linguaEntries.size());
|
||||
for (String line : linguaEntries) {
|
||||
int spaceIndex = line.indexOf(" ");
|
||||
|
|
@ -239,9 +240,9 @@ public class ModelDialLingua implements KodeGenModel {
|
|||
} else {
|
||||
continue;
|
||||
}
|
||||
int ag1 = LINGUA_AG1;
|
||||
int ag2 = LINGUA_AG2;
|
||||
int ag3 = LINGUA_AG3;
|
||||
int ag1 = slugSpaceGuide.ag1();
|
||||
int ag2 = slugSpaceGuide.ag2();
|
||||
int ag3 = slugSpaceGuide.ag3();
|
||||
int bl0w = 1+Integer.parseInt(key1);
|
||||
int cr1 = key2.length()<1?0:1+key2.charAt(0) - 'A'; // A = 1
|
||||
int cr2 = key2.length()<2?0:1+key2.charAt(1) - 'A';
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ package love.distributedrebirth.nx01.kode.generator.klass;
|
|||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
|
|
@ -43,6 +44,7 @@ public class ModelKlass {
|
|||
private final String javaName;
|
||||
private final List<String> javaDescriptions;
|
||||
private final List<String> javaImports;
|
||||
private final List<String> javaAnnos;
|
||||
private final StringBuilder body;
|
||||
private String javaDocAuthor;
|
||||
private String javaDocVersion;
|
||||
|
|
@ -58,6 +60,7 @@ public class ModelKlass {
|
|||
}
|
||||
this.javaFile = new File(filePath);
|
||||
this.javaImports = new ArrayList<>();
|
||||
this.javaAnnos = new ArrayList<>();
|
||||
this.body = new StringBuilder();
|
||||
this.javaDocAuthor = "للَّٰهِilLצسُو";
|
||||
this.javaDocVersion = "©Δ∞ 仙上主天";
|
||||
|
|
@ -67,6 +70,18 @@ public class ModelKlass {
|
|||
return javaFile;
|
||||
}
|
||||
|
||||
public void addJavaImports(Collection<Class<?>> javaKlasses) {
|
||||
javaKlasses.forEach(v -> addJavaImport(v));
|
||||
}
|
||||
|
||||
public void addJavaImport(Class<?> javaKlass) {
|
||||
if (javaKlass.getDeclaringClass() == null) {
|
||||
addJavaImport(javaKlass.getName());
|
||||
} else {
|
||||
addJavaImport(javaKlass.getDeclaringClass());
|
||||
}
|
||||
}
|
||||
|
||||
public void addJavaImport(String javaKlass) {
|
||||
if (javaImports.contains(javaKlass)) {
|
||||
return;
|
||||
|
|
@ -78,6 +93,15 @@ public class ModelKlass {
|
|||
return javaImports;
|
||||
}
|
||||
|
||||
public List<String> getJavaAnnos() {
|
||||
return javaAnnos;
|
||||
}
|
||||
|
||||
public void addJavaAnno(Class<?> anno, String body) {
|
||||
addJavaImport(anno.getName());
|
||||
javaAnnos.add("@" + anno.getSimpleName() + "(" + body + ")");
|
||||
}
|
||||
|
||||
public String getJavaPackage() {
|
||||
return javaPackage;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -137,6 +137,10 @@ public class ModelKlassWriter {
|
|||
buf.append(klass.getJavaDocVersion());
|
||||
buf.append("\n");
|
||||
}
|
||||
for (String javaAnno : klass.getJavaAnnos()) {
|
||||
buf.append(javaAnno);
|
||||
buf.append("\n");
|
||||
}
|
||||
}
|
||||
|
||||
public String buildInuktitutBinary(int number, int digets) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue