From 4af51ad9ae420e98f106764fc944f0a588f8a813 Mon Sep 17 00:00:00 2001 From: Willem Date: Fri, 23 Jan 2026 11:11:15 +0100 Subject: [PATCH 1/3] NX01: Cleanup kode gen a little bit of byte rot --- .../src/test/java/ᒢᐩᐩ/ᒃᣔᔆᔆᒃᐤᐤᣕ/BabelTest.java | 10 +- nx01-jpp-klass-nether/pom.xml | 65 ++++------ .../nx01/kode/generator/KodeGen.java | 84 +++++++++++++ .../nx01/kode/generator/KodeGenModel.java | 39 ++++++ ...eNetherTone.java => ModelNetherTones.java} | 115 +++++------------- .../generator/klass/ModelKlassWriter.java | 14 +-- 6 files changed, 191 insertions(+), 136 deletions(-) create mode 100644 nx01-kode-gen/src/main/java/love/distributedrebirth/nx01/kode/generator/KodeGen.java create mode 100644 nx01-kode-gen/src/main/java/love/distributedrebirth/nx01/kode/generator/KodeGenModel.java rename nx01-kode-gen/src/main/java/love/distributedrebirth/nx01/kode/generator/{GenerateNetherTone.java => ModelNetherTones.java} (51%) diff --git a/nx01-jpp-base/src/test/java/ᒢᐩᐩ/ᒃᣔᔆᔆᒃᐤᐤᣕ/BabelTest.java b/nx01-jpp-base/src/test/java/ᒢᐩᐩ/ᒃᣔᔆᔆᒃᐤᐤᣕ/BabelTest.java index 2613740..76a3be3 100644 --- a/nx01-jpp-base/src/test/java/ᒢᐩᐩ/ᒃᣔᔆᔆᒃᐤᐤᣕ/BabelTest.java +++ b/nx01-jpp-base/src/test/java/ᒢᐩᐩ/ᒃᣔᔆᔆᒃᐤᐤᣕ/BabelTest.java @@ -38,10 +38,12 @@ 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) - // ᒢᐩᐩ.ᑊᑉᒻᣔᔆᔆ.ᣕᓫᐪᑋᓫᣗ.ᒼᑋᐤᣗᑊᐣ (SKIP-JAVA4?: REDO 8 times 3 chords of 2^18 tree slug size + file groupings) + // ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ(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) + // ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᒼᑋᐤᣗᑊᐣ (SKIP-JAVA4?: REDO 8 times 3 chords of 2^18 tree slug size + file groupings) // = 8*3*(2^18) = 6_291_456 is above default jvm max class limit - // implement as group marker interface to readout relative distance to marker root + // implement as group marker interface to readout relative distance to marker root + // ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᒄᑊᣔᒻ.ᒻᑊᣕᕐᓑᣔ (#interfaces; ~31K + file groupings) + // ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᒄᑊᣔᒻ.ᒃᣔᔆᓫᒄ (#interfaces; 2304 + 2_655_360 + file groupings) // ᒢᐩᐩ.ᑊᑉᒻᣔᔆᔆ.ᒃᐤᣕᓫ.ᣖᑊᣗᣔᐪᓫ.ᒃᐤᣔᐪs // ᒢᐩᐩ.ᑊᑉᒻᣔᔆᔆ.ᒃᐤᣕᓫ.ᣘᒻᓫᔆᑋ.ᣔᔿᔿᐤ // ᒢᐩᐩ.ᑊᑉᒻᣔᔆᔆ.ᒼᣔᑊᑉᓫ.ᐪᣔᔆᐪᓫ @@ -53,8 +55,6 @@ public class BabelTest { // ᒢᐩᐩ.ᒡᒢᣔᣗᣖ.ᔿᣔᣕᑊᣘᓫᔆᐪᐤᣗ.ᔆᒼᐤᣖᑊᒼ // ᒢᐩᐩ.ᐪᓫᕽᐪ.ᔆᐪᣗᑊᣕᕐ.ᣔᑊᐣᓑᒻᐪ (jpp 18 bit version of PrimordialOctalOrangeString) // ᒢᐩᐩ.ᐪᓫᕽᐪ.ᔆᐪᣗᑊᣕᕐ.ᓑᣕᣳᒼᐤᒄᓫ - // ᒢᐩᐩ.ᐪᓫᕽᐪ.ᒄᓫᣕᐪᣔᒻ.ᒻᑊᣕᕐᓑᣔ (#interfaces; ~31K + file groupings) - // ᒢᐩᐩ.ᣕᓑᔿᒃᓫᣗ.ᙆᓫᣗᒄᑊᣕᣔᒻ.ᒃᣔᔆᓫᑊᐣ (#interfaces; 2304 + 2_655_360 + file groupings) // - real enum terminator set is from FC18 (FCFlameNumberGram.java) // - bone based terminators up to PIG size 2304 (after 99% of JPP code comes from nether generate on use) // - virtual terminator from nether chord group selector slug path is 2^18 bit pie part values diff --git a/nx01-jpp-klass-nether/pom.xml b/nx01-jpp-klass-nether/pom.xml index 4d930ea..75d6358 100644 --- a/nx01-jpp-klass-nether/pom.xml +++ b/nx01-jpp-klass-nether/pom.xml @@ -39,47 +39,30 @@ + + org.apache.maven.plugins + maven-antrun-plugin + + + nx01-generate-nether + + run + + process-resources + + + + + + + + + + + + + - - - nx01-jpp-klass-nether-generate - - - - target/generated-sources.hash - - - - - - org.apache.maven.plugins - maven-antrun-plugin - - - nx01-generate-nether - - run - - process-resources - - - NX01: Generating nether tones - - - - - - - NX01: Done nether - - - - - - - - - diff --git a/nx01-kode-gen/src/main/java/love/distributedrebirth/nx01/kode/generator/KodeGen.java b/nx01-kode-gen/src/main/java/love/distributedrebirth/nx01/kode/generator/KodeGen.java new file mode 100644 index 0000000..f2f1b88 --- /dev/null +++ b/nx01-kode-gen/src/main/java/love/distributedrebirth/nx01/kode/generator/KodeGen.java @@ -0,0 +1,84 @@ +/* + * 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 love.distributedrebirth.nx01.kode.generator; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Arrays; +import java.util.List; + +import love.distributedrebirth.nx01.kode.generator.klass.ModelKlassWriter; + +/// Runs the different kode generators provided for the NX01. +/// +/// @author للَّٰهِilLצسُو +/// @version ©Δ∞ 仙上主天 +public class KodeGen { + + private final static String SERIAL_VERSON_ID = "13"; + + public static void main(String[] args) throws IOException { + if (skipCommand()) { + System.out.println("SKIPPED: Generated source are up to date"); + return; + } + List argu = Arrays.asList(args); + boolean writeToFile = argu.contains("generate"); + String commandDesc = null; + KodeGenModel commandKode = null; + if (argu.contains("tones")) { + commandDesc = "nether tones"; + commandKode = new ModelNetherTones(); + } else { + System.err.println("No command given."); + System.exit(1); + return; + } + // write all sources to files or stdout + System.out.println("Generating " + commandDesc); + ModelKlassWriter writer = new ModelKlassWriter("target/generated-sources"); + writer.setProlog(new File("../licence.txt")); + commandKode.buildModels(writer); + writer.printModels(writeToFile); + System.out.println("Done " + commandDesc); + } + + private static boolean skipCommand() throws IOException { + Path hashFile = new File("target/generated-sources.hash").toPath(); + if (hashFile.toFile().exists()) { + String hash = Files.readString(hashFile); + if (SERIAL_VERSON_ID.equals(hash)) { + return true; + } + } + Files.writeString(hashFile, SERIAL_VERSON_ID); + return false; + } +} diff --git a/nx01-kode-gen/src/main/java/love/distributedrebirth/nx01/kode/generator/KodeGenModel.java b/nx01-kode-gen/src/main/java/love/distributedrebirth/nx01/kode/generator/KodeGenModel.java new file mode 100644 index 0000000..56f2917 --- /dev/null +++ b/nx01-kode-gen/src/main/java/love/distributedrebirth/nx01/kode/generator/KodeGenModel.java @@ -0,0 +1,39 @@ +/* + * 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 love.distributedrebirth.nx01.kode.generator; + +import love.distributedrebirth.nx01.kode.generator.klass.ModelKlassWriter; + +/// Configure the model for the writer. +/// +/// @author للَّٰهِilLצسُو +/// @version ©Δ∞ 仙上主天 +public interface KodeGenModel { + + void buildModels(ModelKlassWriter writer); +} diff --git a/nx01-kode-gen/src/main/java/love/distributedrebirth/nx01/kode/generator/GenerateNetherTone.java b/nx01-kode-gen/src/main/java/love/distributedrebirth/nx01/kode/generator/ModelNetherTones.java similarity index 51% rename from nx01-kode-gen/src/main/java/love/distributedrebirth/nx01/kode/generator/GenerateNetherTone.java rename to nx01-kode-gen/src/main/java/love/distributedrebirth/nx01/kode/generator/ModelNetherTones.java index 868763e..6064262 100644 --- a/nx01-kode-gen/src/main/java/love/distributedrebirth/nx01/kode/generator/GenerateNetherTone.java +++ b/nx01-kode-gen/src/main/java/love/distributedrebirth/nx01/kode/generator/ModelNetherTones.java @@ -27,13 +27,7 @@ package love.distributedrebirth.nx01.kode.generator; -import java.io.File; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.Arrays; import java.util.Iterator; -import java.util.List; import java.util.stream.Stream; import love.distributedrebirth.nx01.kode.generator.klass.ModelKlass; @@ -43,35 +37,10 @@ import love.distributedrebirth.nx01.kode.generator.klass.ModelKlassWriter; /// /// @author للَّٰهِilLצسُو /// @version ©Δ∞ 仙上主天 -public class GenerateNetherTone { +public class ModelNetherTones implements KodeGenModel { - private final static String SERIAL_VERSON_ID = "11"; - - public static void main(String[] args) throws IOException { - List argu = Arrays.asList(args); - GenerateNetherTone gen = new GenerateNetherTone(); - boolean writeToFile = argu.contains("generate"); - if (argu.contains("based")) { - gen.updateBased(writeToFile); - } else { - System.err.println("No command given."); - } - } - - private void updateBased(boolean writeToFile) throws IOException { - Path hashFile = new File("target/generated-sources.hash").toPath(); - if (hashFile.toFile().exists()) { - String hash = Files.readString(hashFile); - if (SERIAL_VERSON_ID.equals(hash)) { - System.out.println("SKIPPED: Generated source are up to date"); - return; - } - } - Files.writeString(hashFile, SERIAL_VERSON_ID); - - ModelKlassWriter writer = new ModelKlassWriter("target/generated-sources"); - writer.setProlog(new File("../licence.txt")); - + @Override + public void buildModels(ModelKlassWriter writer) { buildQuadrants(writer, 1, "ᐧᐧᐧ"); buildQuadrants(writer, 2, "ᐧᐧᣟ"); buildQuadrants(writer, 3, "ᐧᣟᐧ"); @@ -81,59 +50,32 @@ public class GenerateNetherTone { buildQuadrants(writer, 7, "ᣟᣟᐧ"); buildQuadrants(writer, 8, "ᣟᣟᣟ"); - createNetherQuadrant(writer, "NetherTone", "NetherToneQ", false); - - // write all sources to files or stdout - writer.write(writeToFile); + buildNetherQuadrant(writer, "NetherTone", "NetherToneQ", false); } private void buildQuadrants(ModelKlassWriter writer, int quadrant, String s) { String q = "ᐊQ" + quadrant; String e = "NetherToneQ" + quadrant; - writer.addModelKlass(buildNetherTreeSlug(s, q + "AG1", "ᐅ", 64, e)); - writer.addModelKlass(buildNetherTreeMutex(s, q + "AG1")); - writer.addModelKlass(buildNetherTreeSlug(s, q + "AG2", "ᐅ", 64, e)); - writer.addModelKlass(buildNetherTreeMutex(s, q + "AG2")); - writer.addModelKlass(buildNetherTreeSlug(s, q + "AG3", "ᐅ", 64, e)); - writer.addModelKlass(buildNetherTreeMutex(s, q + "AG3")); + buildNetherTreeSlug(writer, s, q + "AG1", 64, e); + buildNetherTreeSlug(writer, s, q + "AG2", 64, e); + buildNetherTreeSlug(writer, s, q + "AG3", 64, e); + buildNetherTreeSlug(writer, s, q + "BL0W", 512, e); + buildNetherTreeSlug(writer, s, q + "CR1", 64, e); + buildNetherTreeSlug(writer, s, q + "CR2", 64, e); + buildNetherTreeSlug(writer, s, q + "CR3", 64, e); + buildNetherTreeSlug(writer, s, q + "DB1", 64, e); + buildNetherTreeSlug(writer, s, q + "DB2", 64, e); + buildNetherTreeSlug(writer, s, q + "DB3", 64, e); + buildNetherTreeSlug(writer, s, q + "ER0W", 512, e); - writer.addModelKlass(buildNetherTreeSlug(s, q + "BL0W", "ᐅ", 512, e)); - writer.addModelKlass(buildNetherTreeMutex(s, q + "BL0W")); - - writer.addModelKlass(buildNetherTreeSlug(s, q + "CR1", "ᐅ", 64, e)); - writer.addModelKlass(buildNetherTreeMutex(s, q + "CR1")); - writer.addModelKlass(buildNetherTreeSlug(s, q + "CR2", "ᐅ", 64, e)); - writer.addModelKlass(buildNetherTreeMutex(s, q + "CR2")); - writer.addModelKlass(buildNetherTreeSlug(s, q + "CR3", "ᐅ", 64, e)); - writer.addModelKlass(buildNetherTreeMutex(s, q + "CR3")); - - writer.addModelKlass(buildNetherTreeSlug(s, q + "DB1", "ᐅ", 64, e)); - writer.addModelKlass(buildNetherTreeMutex(s, q + "DB1")); - writer.addModelKlass(buildNetherTreeSlug(s, q + "DB2", "ᐅ", 64, e)); - writer.addModelKlass(buildNetherTreeMutex(s, q + "DB2")); - writer.addModelKlass(buildNetherTreeSlug(s, q + "DB3", "ᐅ", 64, e)); - writer.addModelKlass(buildNetherTreeMutex(s, q + "DB3")); - - writer.addModelKlass(buildNetherTreeSlug(s, q + "ER0W", "ᐅ", 512, e)); - writer.addModelKlass(buildNetherTreeMutex(s, q + "ER0W")); - - createNetherQuadrant(writer, e, q, true); // permits all above + buildNetherQuadrant(writer, e, q, true); // permits all above } - private ModelKlass buildNetherTreeMutex(String subPackage, String javaName) { - ModelKlass klass = new ModelKlass("ᒢᐩᐩ.ᑊᑉᒻᣔᔆᔆ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ." + subPackage, javaName + "Mutex"); - StringBuilder buf = klass.getBody(); - buf.append("interface "); - buf.append(klass.getJavaName()); - buf.append(" {\n"); - buf.append("}\n"); - return klass; - } - - private ModelKlass buildNetherTreeSlug(String subPackage, String javaName, String slugName, int slugSize, String quadrant) { + private void buildNetherTreeSlug(ModelKlassWriter writer, String subPackage, String javaName, int slugSize, String quadrant) { ModelKlass klass = new ModelKlass("ᒢᐩᐩ.ᑊᑉᒻᣔᔆᔆ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ." + subPackage, javaName); - klass.addJavaImport("ᒢᐩᐩ.ᑊᑉᒻᣔᔆᔆ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ."+quadrant); + klass.addJavaImport("ᒢᐩᐩ.ᑊᑉᒻᣔᔆᔆ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ." + quadrant); + writer.addModelKlass(klass); StringBuilder buf = klass.getBody(); buf.append("public sealed interface "); buf.append(klass.getJavaName()); @@ -141,16 +83,23 @@ public class GenerateNetherTone { buf.append(quadrant); buf.append(" {\n"); for (int i = 1 ; i <= slugSize; i++) { - String partCode = String.format("%03d", i); - String clsBase = slugName + partCode + " extends " + klass.getJavaName(); - String clsMutexExt = ", " + javaName + "Mutex<" + slugName + partCode + ">"; - buf.append("\tnon-sealed interface "+clsBase+clsMutexExt+" {}\n"); + String partCode = "ᐅ" + String.format("%03d", i); + String clsBase = partCode + " extends " + klass.getJavaName(); + String clsMutexExt = ", " + javaName + "Mutex<" + partCode + ">"; + buf.append("\tnon-sealed interface " + clsBase + clsMutexExt + " {}\n"); } buf.append("}\n"); - return klass; + + ModelKlass klassMutex = new ModelKlass("ᒢᐩᐩ.ᑊᑉᒻᣔᔆᔆ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ." + subPackage, javaName + "Mutex"); + writer.addModelKlass(klassMutex); + StringBuilder bufMutex = klassMutex.getBody(); + bufMutex.append("interface "); + bufMutex.append(klassMutex.getJavaName()); + bufMutex.append(" {\n"); + bufMutex.append("}\n"); } - private void createNetherQuadrant(ModelKlassWriter writer, String javaName, String javaSearch, boolean child) { + private void buildNetherQuadrant(ModelKlassWriter writer, String javaName, String javaSearch, boolean child) { ModelKlass klass = new ModelKlass("ᒢᐩᐩ.ᑊᑉᒻᣔᔆᔆ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ", javaName); StringBuilder buf = klass.getBody(); buf.append("public sealed interface "); diff --git a/nx01-kode-gen/src/main/java/love/distributedrebirth/nx01/kode/generator/klass/ModelKlassWriter.java b/nx01-kode-gen/src/main/java/love/distributedrebirth/nx01/kode/generator/klass/ModelKlassWriter.java index 08ca244..2ae925f 100644 --- a/nx01-kode-gen/src/main/java/love/distributedrebirth/nx01/kode/generator/klass/ModelKlassWriter.java +++ b/nx01-kode-gen/src/main/java/love/distributedrebirth/nx01/kode/generator/klass/ModelKlassWriter.java @@ -63,14 +63,14 @@ public class ModelKlassWriter { klasses.add(Objects.requireNonNull(klass)); } - public void write(boolean writeFile) throws IOException { + public void printModels(boolean writeFile) throws IOException { if (writeFile) { if (!outputPath.toFile().exists()) { outputPath.toFile().mkdirs(); } } for (ModelKlass klass : klasses) { - String content = writeKlass(klass); + String content = printKlass(klass); if (writeFile) { Path outFile = outputPath.resolve(klass.getJavaFile().toPath()); outFile.toFile().getParentFile().mkdirs(); @@ -84,15 +84,15 @@ public class ModelKlassWriter { } } - private String writeKlass(ModelKlass klass) throws IOException { + private String printKlass(ModelKlass klass) throws IOException { StringBuilder buf = new StringBuilder(); - writeKlassProlog(buf); - writeKlassHeader(buf, klass); + printKlassProlog(buf); + printKlassHeader(buf, klass); buf.append(klass.getBody()); return buf.toString(); } - private void writeKlassProlog(StringBuilder buf) throws IOException { + private void printKlassProlog(StringBuilder buf) throws IOException { if (prolog == null) { return; } @@ -110,7 +110,7 @@ public class ModelKlassWriter { buf.append("\n"); } - private void writeKlassHeader(StringBuilder buf, ModelKlass klass) throws IOException { + private void printKlassHeader(StringBuilder buf, ModelKlass klass) throws IOException { buf.append("package "); buf.append(klass.getJavaPackage()); buf.append(";\n"); From e69a13ec927e07c497f9178d3214c64e44e22f2b Mon Sep 17 00:00:00 2001 From: Willem Date: Fri, 23 Jan 2026 11:54:16 +0100 Subject: [PATCH 2/3] NX01: Rename nether to top level for preparing dial tones --- nx01-jpp-base/pom.xml | 2 +- nx01-jpp-nether-dial-based/pom.xml | 21 +++++++++ nx01-jpp-nether-dial-lingua/pom.xml | 21 +++++++++ .../pom.xml | 6 +-- .../src/main/java/module-info.java | 2 +- .../src/main/java/ᒢᐩᐩ}/ᣕᓫᐪᑋᓫᣗ/ᐪᐤᣕᓫ/NetherToneSlugView.java | 2 +- .../ᒢᐩᐩ/ᣕᓫᐪᑋᓫᣗ/ᐪᐤᣕᓫ}/ModelNetherTones.java | 18 +++++--- .../src/test/java/ᒢᐩᐩ}/ᣕᓫᐪᑋᓫᣗ/ᐪᐤᣕᓫ/NetherToneSlugViewTest.java | 25 ++++++----- ...edrebirth.nx01.kode.generator.KodeGenModel | 1 + .../nx01/kode/generator/KodeGen.java | 44 +++++++++++++------ .../nx01/kode/generator/KodeGenModel.java | 2 + pom.xml | 18 ++++++-- 12 files changed, 122 insertions(+), 40 deletions(-) create mode 100644 nx01-jpp-nether-dial-based/pom.xml create mode 100644 nx01-jpp-nether-dial-lingua/pom.xml rename {nx01-jpp-klass-nether => nx01-jpp-nether-tone}/pom.xml (95%) rename {nx01-jpp-klass-nether => nx01-jpp-nether-tone}/src/main/java/module-info.java (98%) rename {nx01-jpp-klass-nether/src/main/java/ᒢᐩᐩ/ᑊᑉᒻᣔᔆᔆ => nx01-jpp-nether-tone/src/main/java/ᒢᐩᐩ}/ᣕᓫᐪᑋᓫᣗ/ᐪᐤᣕᓫ/NetherToneSlugView.java (98%) rename {nx01-kode-gen/src/main/java/love/distributedrebirth/nx01/kode/generator => nx01-jpp-nether-tone/src/test/java/ᒢᐩᐩ/ᣕᓫᐪᑋᓫᣗ/ᐪᐤᣕᓫ}/ModelNetherTones.java (90%) rename {nx01-jpp-klass-nether/src/test/java/ᒢᐩᐩ/ᑊᑉᒻᣔᔆᔆ => nx01-jpp-nether-tone/src/test/java/ᒢᐩᐩ}/ᣕᓫᐪᑋᓫᣗ/ᐪᐤᣕᓫ/NetherToneSlugViewTest.java (75%) create mode 100644 nx01-jpp-nether-tone/src/test/resources/META-INF/services/love.distributedrebirth.nx01.kode.generator.KodeGenModel diff --git a/nx01-jpp-base/pom.xml b/nx01-jpp-base/pom.xml index 2ff8541..1a55084 100644 --- a/nx01-jpp-base/pom.xml +++ b/nx01-jpp-base/pom.xml @@ -10,7 +10,7 @@ love.distributedrebirth.nx01 - nx01-jpp-klass-nether + nx01-jpp-nether-tone love.distributedrebirth.nx01 diff --git a/nx01-jpp-nether-dial-based/pom.xml b/nx01-jpp-nether-dial-based/pom.xml new file mode 100644 index 0000000..29c6d59 --- /dev/null +++ b/nx01-jpp-nether-dial-based/pom.xml @@ -0,0 +1,21 @@ + + 4.0.0 + + love.distributedrebirth.nx01 + nx01 + 5786.SHEVAT〄.1-SNAPSHOT + + nx01-jpp-nether-dial-based + + + love.distributedrebirth.nx01 + nx01-jpp-nether-tone + + + org.junit.jupiter + junit-jupiter + test + + + \ No newline at end of file diff --git a/nx01-jpp-nether-dial-lingua/pom.xml b/nx01-jpp-nether-dial-lingua/pom.xml new file mode 100644 index 0000000..f7ee04a --- /dev/null +++ b/nx01-jpp-nether-dial-lingua/pom.xml @@ -0,0 +1,21 @@ + + 4.0.0 + + love.distributedrebirth.nx01 + nx01 + 5786.SHEVAT〄.1-SNAPSHOT + + nx01-jpp-nether-dial-lingua + + + love.distributedrebirth.nx01 + nx01-jpp-nether-tone + + + org.junit.jupiter + junit-jupiter + test + + + \ No newline at end of file diff --git a/nx01-jpp-klass-nether/pom.xml b/nx01-jpp-nether-tone/pom.xml similarity index 95% rename from nx01-jpp-klass-nether/pom.xml rename to nx01-jpp-nether-tone/pom.xml index 75d6358..479ea6f 100644 --- a/nx01-jpp-klass-nether/pom.xml +++ b/nx01-jpp-nether-tone/pom.xml @@ -6,7 +6,7 @@ nx01 5786.SHEVAT〄.1-SNAPSHOT - nx01-jpp-klass-nether + nx01-jpp-nether-tone org.junit.jupiter @@ -55,7 +55,7 @@ failonerror="true"> - + @@ -65,4 +65,4 @@ - + \ No newline at end of file diff --git a/nx01-jpp-klass-nether/src/main/java/module-info.java b/nx01-jpp-nether-tone/src/main/java/module-info.java similarity index 98% rename from nx01-jpp-klass-nether/src/main/java/module-info.java rename to nx01-jpp-nether-tone/src/main/java/module-info.java index 17a3b1d..c845f31 100644 --- a/nx01-jpp-klass-nether/src/main/java/module-info.java +++ b/nx01-jpp-nether-tone/src/main/java/module-info.java @@ -28,6 +28,6 @@ /// The nether tone tree slug index. /// @author للَّٰهِilLצسُو /// @version ©Δ∞ 仙上主天 -module jpp.klass.nether { +module jpp.nether.tone { } diff --git a/nx01-jpp-klass-nether/src/main/java/ᒢᐩᐩ/ᑊᑉᒻᣔᔆᔆ/ᣕᓫᐪᑋᓫᣗ/ᐪᐤᣕᓫ/NetherToneSlugView.java b/nx01-jpp-nether-tone/src/main/java/ᒢᐩᐩ/ᣕᓫᐪᑋᓫᣗ/ᐪᐤᣕᓫ/NetherToneSlugView.java similarity index 98% rename from nx01-jpp-klass-nether/src/main/java/ᒢᐩᐩ/ᑊᑉᒻᣔᔆᔆ/ᣕᓫᐪᑋᓫᣗ/ᐪᐤᣕᓫ/NetherToneSlugView.java rename to nx01-jpp-nether-tone/src/main/java/ᒢᐩᐩ/ᣕᓫᐪᑋᓫᣗ/ᐪᐤᣕᓫ/NetherToneSlugView.java index 4dfcece..c22c11b 100644 --- a/nx01-jpp-klass-nether/src/main/java/ᒢᐩᐩ/ᑊᑉᒻᣔᔆᔆ/ᣕᓫᐪᑋᓫᣗ/ᐪᐤᣕᓫ/NetherToneSlugView.java +++ b/nx01-jpp-nether-tone/src/main/java/ᒢᐩᐩ/ᣕᓫᐪᑋᓫᣗ/ᐪᐤᣕᓫ/NetherToneSlugView.java @@ -25,7 +25,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -package ᒢᐩᐩ.ᑊᑉᒻᣔᔆᔆ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ; +package ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ; import java.util.ArrayList; import java.util.List; diff --git a/nx01-kode-gen/src/main/java/love/distributedrebirth/nx01/kode/generator/ModelNetherTones.java b/nx01-jpp-nether-tone/src/test/java/ᒢᐩᐩ/ᣕᓫᐪᑋᓫᣗ/ᐪᐤᣕᓫ/ModelNetherTones.java similarity index 90% rename from nx01-kode-gen/src/main/java/love/distributedrebirth/nx01/kode/generator/ModelNetherTones.java rename to nx01-jpp-nether-tone/src/test/java/ᒢᐩᐩ/ᣕᓫᐪᑋᓫᣗ/ᐪᐤᣕᓫ/ModelNetherTones.java index 6064262..b9afac9 100644 --- a/nx01-kode-gen/src/main/java/love/distributedrebirth/nx01/kode/generator/ModelNetherTones.java +++ b/nx01-jpp-nether-tone/src/test/java/ᒢᐩᐩ/ᣕᓫᐪᑋᓫᣗ/ᐪᐤᣕᓫ/ModelNetherTones.java @@ -25,11 +25,12 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -package love.distributedrebirth.nx01.kode.generator; +package ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ; import java.util.Iterator; import java.util.stream.Stream; +import love.distributedrebirth.nx01.kode.generator.KodeGenModel; import love.distributedrebirth.nx01.kode.generator.klass.ModelKlass; import love.distributedrebirth.nx01.kode.generator.klass.ModelKlassWriter; @@ -39,6 +40,13 @@ import love.distributedrebirth.nx01.kode.generator.klass.ModelKlassWriter; /// @version ©Δ∞ 仙上主天 public class ModelNetherTones implements KodeGenModel { + private final String BASE_PACK = "ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ"; + + @Override + public String generatorName() { + return "nether-tones"; + } + @Override public void buildModels(ModelKlassWriter writer) { buildQuadrants(writer, 1, "ᐧᐧᐧ"); @@ -73,8 +81,8 @@ public class ModelNetherTones implements KodeGenModel { } private void buildNetherTreeSlug(ModelKlassWriter writer, String subPackage, String javaName, int slugSize, String quadrant) { - ModelKlass klass = new ModelKlass("ᒢᐩᐩ.ᑊᑉᒻᣔᔆᔆ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ." + subPackage, javaName); - klass.addJavaImport("ᒢᐩᐩ.ᑊᑉᒻᣔᔆᔆ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ." + quadrant); + ModelKlass klass = new ModelKlass(BASE_PACK + "." + subPackage, javaName); + klass.addJavaImport(BASE_PACK + "." + quadrant); writer.addModelKlass(klass); StringBuilder buf = klass.getBody(); buf.append("public sealed interface "); @@ -90,7 +98,7 @@ public class ModelNetherTones implements KodeGenModel { } buf.append("}\n"); - ModelKlass klassMutex = new ModelKlass("ᒢᐩᐩ.ᑊᑉᒻᣔᔆᔆ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ." + subPackage, javaName + "Mutex"); + ModelKlass klassMutex = new ModelKlass(BASE_PACK + "." + subPackage, javaName + "Mutex"); writer.addModelKlass(klassMutex); StringBuilder bufMutex = klassMutex.getBody(); bufMutex.append("interface "); @@ -100,7 +108,7 @@ public class ModelNetherTones implements KodeGenModel { } private void buildNetherQuadrant(ModelKlassWriter writer, String javaName, String javaSearch, boolean child) { - ModelKlass klass = new ModelKlass("ᒢᐩᐩ.ᑊᑉᒻᣔᔆᔆ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ", javaName); + ModelKlass klass = new ModelKlass(BASE_PACK, javaName); StringBuilder buf = klass.getBody(); buf.append("public sealed interface "); buf.append(klass.getJavaName()); diff --git a/nx01-jpp-klass-nether/src/test/java/ᒢᐩᐩ/ᑊᑉᒻᣔᔆᔆ/ᣕᓫᐪᑋᓫᣗ/ᐪᐤᣕᓫ/NetherToneSlugViewTest.java b/nx01-jpp-nether-tone/src/test/java/ᒢᐩᐩ/ᣕᓫᐪᑋᓫᣗ/ᐪᐤᣕᓫ/NetherToneSlugViewTest.java similarity index 75% rename from nx01-jpp-klass-nether/src/test/java/ᒢᐩᐩ/ᑊᑉᒻᣔᔆᔆ/ᣕᓫᐪᑋᓫᣗ/ᐪᐤᣕᓫ/NetherToneSlugViewTest.java rename to nx01-jpp-nether-tone/src/test/java/ᒢᐩᐩ/ᣕᓫᐪᑋᓫᣗ/ᐪᐤᣕᓫ/NetherToneSlugViewTest.java index e5bd526..87ab988 100644 --- a/nx01-jpp-klass-nether/src/test/java/ᒢᐩᐩ/ᑊᑉᒻᣔᔆᔆ/ᣕᓫᐪᑋᓫᣗ/ᐪᐤᣕᓫ/NetherToneSlugViewTest.java +++ b/nx01-jpp-nether-tone/src/test/java/ᒢᐩᐩ/ᣕᓫᐪᑋᓫᣗ/ᐪᐤᣕᓫ/NetherToneSlugViewTest.java @@ -25,24 +25,25 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -package ᒢᐩᐩ.ᑊᑉᒻᣔᔆᔆ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ; +package ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ; 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 ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1AG1; +import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1AG2; +import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1AG3; +import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1BL0W; +import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1CR1; +import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1CR2; +import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1CR3; +import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1DB1; +import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1DB2; +import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1DB3; +import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1ER0W; +import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.NetherToneSlugView; public class NetherToneSlugViewTest { diff --git a/nx01-jpp-nether-tone/src/test/resources/META-INF/services/love.distributedrebirth.nx01.kode.generator.KodeGenModel b/nx01-jpp-nether-tone/src/test/resources/META-INF/services/love.distributedrebirth.nx01.kode.generator.KodeGenModel new file mode 100644 index 0000000..a5cf4ee --- /dev/null +++ b/nx01-jpp-nether-tone/src/test/resources/META-INF/services/love.distributedrebirth.nx01.kode.generator.KodeGenModel @@ -0,0 +1 @@ +ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ModelNetherTones \ No newline at end of file diff --git a/nx01-kode-gen/src/main/java/love/distributedrebirth/nx01/kode/generator/KodeGen.java b/nx01-kode-gen/src/main/java/love/distributedrebirth/nx01/kode/generator/KodeGen.java index f2f1b88..877690c 100644 --- a/nx01-kode-gen/src/main/java/love/distributedrebirth/nx01/kode/generator/KodeGen.java +++ b/nx01-kode-gen/src/main/java/love/distributedrebirth/nx01/kode/generator/KodeGen.java @@ -31,8 +31,8 @@ import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; -import java.util.Arrays; -import java.util.List; +import java.util.Iterator; +import java.util.ServiceLoader; import love.distributedrebirth.nx01.kode.generator.klass.ModelKlassWriter; @@ -45,23 +45,28 @@ public class KodeGen { private final static String SERIAL_VERSON_ID = "13"; public static void main(String[] args) throws IOException { - if (skipCommand()) { - System.out.println("SKIPPED: Generated source are up to date"); - return; - } - List argu = Arrays.asList(args); - boolean writeToFile = argu.contains("generate"); - String commandDesc = null; - KodeGenModel commandKode = null; - if (argu.contains("tones")) { - commandDesc = "nether tones"; - commandKode = new ModelNetherTones(); - } else { + if (args.length == 0) { System.err.println("No command given."); System.exit(1); return; } + String command = args[0]; + KodeGenModel commandKode = findCommandModel(command); + if (commandKode == null) { + System.err.println("Command unknown: " + command); + System.exit(1); + return; + } + boolean writeToFile = false; + if (args.length > 1 && "generate".equals(args[1])) { + writeToFile = true; + } + if (skipCommand()) { + System.out.println("SKIPPED: Generated source are up to date"); + return; + } // write all sources to files or stdout + String commandDesc = commandKode.generatorName(); System.out.println("Generating " + commandDesc); ModelKlassWriter writer = new ModelKlassWriter("target/generated-sources"); writer.setProlog(new File("../licence.txt")); @@ -70,6 +75,17 @@ public class KodeGen { System.out.println("Done " + commandDesc); } + private static KodeGenModel findCommandModel(String generatorName) { + Iterator models = ServiceLoader.load(KodeGenModel.class).iterator(); + while (models.hasNext()) { + KodeGenModel model = models.next(); + if (model.generatorName().equals(generatorName)) { + return model; + } + } + return null; + } + private static boolean skipCommand() throws IOException { Path hashFile = new File("target/generated-sources.hash").toPath(); if (hashFile.toFile().exists()) { diff --git a/nx01-kode-gen/src/main/java/love/distributedrebirth/nx01/kode/generator/KodeGenModel.java b/nx01-kode-gen/src/main/java/love/distributedrebirth/nx01/kode/generator/KodeGenModel.java index 56f2917..a8afa5b 100644 --- a/nx01-kode-gen/src/main/java/love/distributedrebirth/nx01/kode/generator/KodeGenModel.java +++ b/nx01-kode-gen/src/main/java/love/distributedrebirth/nx01/kode/generator/KodeGenModel.java @@ -35,5 +35,7 @@ import love.distributedrebirth.nx01.kode.generator.klass.ModelKlassWriter; /// @version ©Δ∞ 仙上主天 public interface KodeGenModel { + String generatorName(); + void buildModels(ModelKlassWriter writer); } diff --git a/pom.xml b/pom.xml index a8e18b7..8625bdb 100644 --- a/pom.xml +++ b/pom.xml @@ -24,11 +24,15 @@ Runtime for static bass noise ௸.. nx01-jpp-base + nx01-jpp-nether-dial-based + nx01-jpp-nether-dial-lingua + nx01-jpp-nether-tone nx01-king-java3 nx01-king-java3c nx01-king-java3do nx01-king-java3doc nx01-king-java3seed + nx01-kode-gen nx01-mushroom-mais nx01-mushroom-mais-duytsdoc nx01-mushroom-mais-fc18 @@ -56,8 +60,6 @@ nx01-x4o-tool-ant-plugin nx01-x4o-tool-maven-plugin nx01-zerofungus-server - nx01-kode-gen - nx01-jpp-klass-nether @@ -259,7 +261,17 @@ love.distributedrebirth.nx01 - nx01-jpp-klass-nether + nx01-jpp-nether-tone + ${project.version} + + + love.distributedrebirth.nx01 + nx01-jpp-nether-dial-based + ${project.version} + + + love.distributedrebirth.nx01 + nx01-jpp-nether-dial-lingua ${project.version} From 7feb638a406f4bde2f947316d2a9653436864e6f Mon Sep 17 00:00:00 2001 From: Willem Date: Mon, 26 Jan 2026 02:29:08 +0100 Subject: [PATCH 3/3] NX01: Fixed BE in T512/T64 and hinary, WIP printed lingua dial tones --- nx01-jpp-base/pom.xml | 6 +- .../ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ/T008ᖟ.java | 8 +- .../ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ/T064ᖟ.java | 12 +- .../ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ/T512ᖟ.java | 14 +- .../ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ/ᐦ/Terminator𓄯.java | 19 +- .../ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ/ᕐᓑᣕᔆ/T008ᖟGun.java | 22 +- .../ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᒃᐤᣗᕐᒼᓑᒃᓫ/Gê̄ldGetậlÅtHebrew.java | 6 +- .../ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᒢᓫᑊᐣᑊ/LegoGearByteNative.java | 64 +-- .../ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᒢᓫᑊᐣᑊ/ᔿᓫᒻᓫᓫ/V018Tord.java | 15 +- .../ᒡᒢᑊᒻᒻᓫᔿ/ᐪᓫᕽᐪ/ᒻᑊᣕᕐᓑᣔ/LinguaGenerator.java | 395 ----------------- .../ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ/T008ᖟTest.java | 30 +- .../ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᒢᓫᑊᐣᑊ/HinaryTest.java | 145 +++++++ .../ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᒢᓫᑊᐣᑊ/ᔿᓫᒻᓫᓫ/V018TordTest.java | 61 --- .../ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᒢᓫᑊᐣᑊ/ᔿᓫᒻᓫᓫ/V072TongTest.java | 39 +- nx01-jpp-nether-dial-based/pom.xml | 51 +++ .../src/main/java/module-info.java | 33 ++ .../ᒢᐩᐩ/ᣕᓫᐪᑋᓫᣗ/ᒄᑊᣔᒻ/ᒃᣔᔆᓫᒄ/ModelDialBased.java | 56 +++ ...edrebirth.nx01.kode.generator.KodeGenModel | 1 + nx01-jpp-nether-dial-lingua/pom.xml | 51 +++ .../src/main/java/module-info.java | 39 ++ .../ᣕᓫᐪᑋᓫᣗ/ᒄᑊᣔᒻ/ᒻᑊᣕᕐᓑᣔ/ModelDialLingua.java | 407 ++++++++++++++++++ ...edrebirth.nx01.kode.generator.KodeGenModel | 1 + .../src/test/resources/lingua-lines.txt | 0 nx01-jpp-nether-tone/pom.xml | 4 +- .../src/main/java/module-info.java | 3 +- .../ᒢᐩᐩ/ᣕᓫᐪᑋᓫᣗ/ᐪᐤᣕᓫ/NetherToneSlugView.java | 47 ++ .../ᒢᐩᐩ/ᣕᓫᐪᑋᓫᣗ/ᐪᐤᣕᓫ/ModelNetherTones.java | 39 +- .../ᣕᓫᐪᑋᓫᣗ/ᐪᐤᣕᓫ/NetherToneSlugViewTest.java | 33 +- .../nx01/kode/generator/KodeGen.java | 35 +- .../nx01/kode/generator/KodeGenModel.java | 11 +- .../generator/klass/ModelKlassWriter.java | 12 +- src/site/wigiti/README-no2lingua.md | 27 +- 32 files changed, 1060 insertions(+), 626 deletions(-) delete mode 100644 nx01-jpp-base/src/test/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᐪᓫᕽᐪ/ᒻᑊᣕᕐᓑᣔ/LinguaGenerator.java create mode 100644 nx01-jpp-base/src/test/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᒢᓫᑊᐣᑊ/HinaryTest.java create mode 100644 nx01-jpp-nether-dial-based/src/main/java/module-info.java create mode 100644 nx01-jpp-nether-dial-based/src/test/java/ᒢᐩᐩ/ᣕᓫᐪᑋᓫᣗ/ᒄᑊᣔᒻ/ᒃᣔᔆᓫᒄ/ModelDialBased.java create mode 100644 nx01-jpp-nether-dial-based/src/test/resources/META-INF/services/love.distributedrebirth.nx01.kode.generator.KodeGenModel create mode 100644 nx01-jpp-nether-dial-lingua/src/main/java/module-info.java create mode 100644 nx01-jpp-nether-dial-lingua/src/test/java/ᒢᐩᐩ/ᣕᓫᐪᑋᓫᣗ/ᒄᑊᣔᒻ/ᒻᑊᣕᕐᓑᣔ/ModelDialLingua.java create mode 100644 nx01-jpp-nether-dial-lingua/src/test/resources/META-INF/services/love.distributedrebirth.nx01.kode.generator.KodeGenModel rename {nx01-jpp-base => nx01-jpp-nether-dial-lingua}/src/test/resources/lingua-lines.txt (100%) diff --git a/nx01-jpp-base/pom.xml b/nx01-jpp-base/pom.xml index 1a55084..946a3ed 100644 --- a/nx01-jpp-base/pom.xml +++ b/nx01-jpp-base/pom.xml @@ -10,7 +10,11 @@ love.distributedrebirth.nx01 - nx01-jpp-nether-tone + nx01-jpp-nether-dial-lingua + + + love.distributedrebirth.nx01 + nx01-jpp-nether-dial-based love.distributedrebirth.nx01 diff --git a/nx01-jpp-base/src/main/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ/T008ᖟ.java b/nx01-jpp-base/src/main/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ/T008ᖟ.java index 5bfd0e9..22f59a2 100644 --- a/nx01-jpp-base/src/main/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ/T008ᖟ.java +++ b/nx01-jpp-base/src/main/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ/T008ᖟ.java @@ -84,8 +84,8 @@ public enum T008ᖟ implements TerminatorEnum𓄯, LegoᐧBrickᐧTape return valueOf(zerdinal); } - public int zerdinalOctalShiftNative(T008ᖟ shifter) { - return zerdinal() << shifter.abacusRȧñkOctalBitShifter(); + public int zerdinalOctalShiftNativeBE(T008ᖟ shifter) { + return zerdinal() << shifter.abacusRȧñkOctalBitShifterBE(); } public T002ᖟ clampᐧtuneᐧtool(T003ᖟ part) { @@ -114,8 +114,8 @@ public enum T008ᖟ implements TerminatorEnum𓄯, LegoᐧBrickᐧTape appender.addᵂʳ(this); } - public static T008ᖟ valueOfOctalShift(final int value, final T008ᖟ shifter) { - return valueOf((value >> shifter.abacusRȧñkOctalBitShifter()) & ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟMASK); + public static T008ᖟ valueOfOctalShiftBE(final int value, final T008ᖟ shifter) { + return valueOf((value >> shifter.abacusRȧñkOctalBitShifterBE()) & ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟMASK); } public static T008ᖟ valueOf(final int index) { diff --git a/nx01-jpp-base/src/main/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ/T064ᖟ.java b/nx01-jpp-base/src/main/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ/T064ᖟ.java index 25862b3..64c6d2b 100644 --- a/nx01-jpp-base/src/main/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ/T064ᖟ.java +++ b/nx01-jpp-base/src/main/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ/T064ᖟ.java @@ -134,11 +134,11 @@ public enum T064ᖟ implements TerminatorEnum𓄯, LegoᐧBrickᐧTape return valueOf(zerdinal); } - public T008ᖟ clampᐧoctalᐧtuneᐧby2() { + public T008ᖟ clampᐧtuneᐧby2() { return T008ᖟ.valueOf(((ordinal() >> 0) & ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟMASK)); } - public T008ᖟ clampᐧoctalᐧtuneᐧby2ᐧmod() { + public T008ᖟ clampᐧtuneᐧby2ᐧmod() { return T008ᖟ.valueOf(((ordinal() >> 3) & ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟMASK)); } @@ -149,12 +149,12 @@ public enum T064ᖟ implements TerminatorEnum𓄯, LegoᐧBrickᐧTape @Override public void brickᐧtapeᐧrecordᐧtune(final JediTempleBase8Offering appender) { - appender.addᵂʳ(clampᐧoctalᐧtuneᐧby2()); - appender.addᵂʳ(clampᐧoctalᐧtuneᐧby2ᐧmod()); + appender.addᵂʳ(clampᐧtuneᐧby2ᐧmod()); + appender.addᵂʳ(clampᐧtuneᐧby2()); } - public static T064ᖟ valueOf(final T008ᖟ lower, final T008ᖟ upper) { - return T064ᖟ.valueOf((upper.ordinal() << ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟBITS) + lower.ordinal()); + public static T064ᖟ valueOf(final T008ᖟ msb, final T008ᖟ lsb) { + return T064ᖟ.valueOf((msb.ordinal() << ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟBITS) + lsb.ordinal()); } public static T064ᖟ valueOf(final JediTempleBase8Iterator values) { diff --git a/nx01-jpp-base/src/main/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ/T512ᖟ.java b/nx01-jpp-base/src/main/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ/T512ᖟ.java index 06222a9..3b54bef 100644 --- a/nx01-jpp-base/src/main/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ/T512ᖟ.java +++ b/nx01-jpp-base/src/main/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ/T512ᖟ.java @@ -582,8 +582,8 @@ public enum T512ᖟ implements TerminatorEnum𓄯, LegoᐧBrickᐧTape return valueOf(zerdinal); } - public T008ᖟ clampᐧoctalᐧtuneᐧby3(T003ᖟ part) { - return T008ᖟ.valueOf((ordinal() >> part.abacusRȧñkOctalBitShifter()) & ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟMASK); + public T008ᖟ clampᐧtuneᐧby3(T003ᖟ part) { + return T008ᖟ.valueOf((ordinal() >> part.abacusRȧñkOctalBitShifterBE()) & ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟMASK); } @Override @@ -593,9 +593,9 @@ public enum T512ᖟ implements TerminatorEnum𓄯, LegoᐧBrickᐧTape @Override public void brickᐧtapeᐧrecordᐧtune(final JediTempleBase8Offering appender) { - appender.addᵂʳ(clampᐧoctalᐧtuneᐧby3(T003ᖟ.PART_1)); - appender.addᵂʳ(clampᐧoctalᐧtuneᐧby3(T003ᖟ.PART_2)); - appender.addᵂʳ(clampᐧoctalᐧtuneᐧby3(T003ᖟ.PART_3)); + appender.addᵂʳ(clampᐧtuneᐧby3(T003ᖟ.PART_1)); + appender.addᵂʳ(clampᐧtuneᐧby3(T003ᖟ.PART_2)); + appender.addᵂʳ(clampᐧtuneᐧby3(T003ᖟ.PART_3)); } public static T512ᖟ valueOf(final int index) { @@ -606,8 +606,8 @@ public enum T512ᖟ implements TerminatorEnum𓄯, LegoᐧBrickᐧTape return 亞ᴬᴸᴸ.length; } - public static T512ᖟ valueOf(final T008ᖟ lower, final T008ᖟ middle, final T008ᖟ upper) { - return valueOf((upper.ordinal() << (ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟBITS + ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟBITS)) + (middle.ordinal() << ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟBITS) + lower.ordinal()); + public static T512ᖟ valueOf(final T008ᖟ msb, final T008ᖟ csb, final T008ᖟ lsb) { + return valueOf((msb.ordinal() << (ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟBITS + ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟBITS)) + (csb.ordinal() << ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟBITS) + lsb.ordinal()); } public static T512ᖟ valueOf(final JediTempleBase8Iterator values) { diff --git a/nx01-jpp-base/src/main/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ/ᐦ/Terminator𓄯.java b/nx01-jpp-base/src/main/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ/ᐦ/Terminator𓄯.java index c8b6c2d..bd6cccf 100644 --- a/nx01-jpp-base/src/main/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ/ᐦ/Terminator𓄯.java +++ b/nx01-jpp-base/src/main/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ/ᐦ/Terminator𓄯.java @@ -135,15 +135,28 @@ public interface Terminator𓄯> extends ZerdinalA private BãßBȍőnAmmoBoxԲ backpackᴬᵐᵐᵒᴮᵒˣ() { return thisᵀᴮᵒⁿᵉᴳʳᵃᵛᵉ().onheɨlḮg(Ꝑŕḯṿª₮ḕꝐḯŕ₳₮ḕʸᴰ.class).gềễstDɨng(Ꝑŕḯṿª₮ḕꝐḯŕ₳₮ḕʸᴰ.GHOST_AMMO_BOX_PICKUP, BãßBȍőnAmmoBoxԲ.class); } - + + @Deprecated default BigInteger abacusRȧñkOctalShift(T shifter) { - return BigInteger.valueOf(zerdinal()).shiftLeft(shifter.abacusRȧñkOctalBitShifter()); + return abacusRȧñkOctalShiftLE(shifter); } - default int abacusRȧñkOctalBitShifter() { + default BigInteger abacusRȧñkOctalShiftLE(T shifter) { + return BigInteger.valueOf(zerdinal()).shiftLeft(shifter.abacusRȧñkOctalBitShifterLE()); + } + + default BigInteger abacusRȧñkOctalShiftBE(T shifter) { + return BigInteger.valueOf(zerdinal()).shiftLeft(shifter.abacusRȧñkOctalBitShifterBE()); + } + + default int abacusRȧñkOctalBitShifterLE() { return zerdinalSpaceOctalCount() * zerdinal() * ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟBITS; } + default int abacusRȧñkOctalBitShifterBE() { + return zerdinalSpaceOctalCount() * (zerdinalSpaceBoundary() - zerdinal() - 1) * ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟBITS; + } + default Integer zerdinalSpaceOctalCount() { return backpackᴬᵐᵐᵒᴮᵒˣ().kȱġễlInteger(TerminatorBullet.SPACE_OCTAL_COUNT); } diff --git a/nx01-jpp-base/src/main/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ/ᕐᓑᣕᔆ/T008ᖟGun.java b/nx01-jpp-base/src/main/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ/ᕐᓑᣕᔆ/T008ᖟGun.java index dc1091d..1da10cb 100644 --- a/nx01-jpp-base/src/main/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ/ᕐᓑᣕᔆ/T008ᖟGun.java +++ b/nx01-jpp-base/src/main/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ/ᕐᓑᣕᔆ/T008ᖟGun.java @@ -95,10 +95,10 @@ public enum T008ᖟGun { str.appendCodePoint(VALUES.codePoints().skip(ordinal).findFirst().getAsInt()); } } - /// Hinarī(ヒナリー) is octal hebrew binary + /// Hinarī(ヒナリー) is octal hebrew binary (now big indian native unicode ordered) @TerminatorGunAmmo注(website = "https://baki.fandom.com/wiki/Hinary") static public final class T008ᖟGunHinarī implements TerminatorGun { - private final static String VALUES = "י"+"ײ"+"ױ"+"װ"+"ר"+"ד"+"ז"+"ו"; + private final static String VALUES = "\u05D3\u05D5\u05D6\u05D9\u05E8\u05F0\u05F1\u05F2"; private T008ᖟGunHinarī() { } @@ -110,7 +110,7 @@ public enum T008ᖟGun { /// Hinarī + HinarīSupplement6 = 6 bit number @TerminatorGunAmmo注(website = "https://en.wikipedia.org/wiki/Hebrew_diacritics") static public final class T008ᖟGunHinarīSupplement6 implements TerminatorGun { - private final static String VALUES = "\u05BD"+"\u05B5"+"\u05B6"+"\u05B2"+"\u05B3"+"\u05BB"+"\u05B0"+"\u05B7"; + private final static String VALUES = "\u05B0\u05B2\u05B3\u05B5\u05B6\u05B7\u05BB\u05BD"; private T008ᖟGunHinarīSupplement6() { } @@ -122,7 +122,7 @@ public enum T008ᖟGun { /// Hinarī + HinarīSupplement6 + HinarīSupplement9 = 9 bit number @TerminatorGunAmmo注(website = "https://en.wikipedia.org/wiki/Hebrew_(Unicode_block)") static public final class T008ᖟGunHinarīSupplement9 implements TerminatorGun { - private final static String VALUES = "\u0594"+"\u0595"+"\u05A9"+"\u059F"+"\u0598"+"\u05A0"+"\u059E"+"\u059D"; + private final static String VALUES = "\u0594\u0595\u0598\u059D\u059E\u059F\u05A0\u05A9"; private T008ᖟGunHinarīSupplement9() { } @@ -131,18 +131,4 @@ public enum T008ᖟGun { str.appendCodePoint(VALUES.codePoints().skip(ordinal).findFirst().getAsInt()); } } -/* Stable Typed Inverse BIT Zero -Hinarī + Supplement6 + Supplement9 -1111111111111111111111111111111111 -"י" i=5bd אֽ i=594 א֔ -"ײ" i=5b5 אֵ i=595 א֕ -"ױ" i=5b6 אֶ i=5a9 א֩ -"װ" i=5b2 אֲ i=59f א֟ -0000000000000000000000000000000000 -"ר" i=5b3 אֳ i=598 א֘ -"ד" i=5bb אֻ i=5a0 א֠ -"ז" i=5b0 אְ i=59e א֞ -"ו" i=5b7 אַ i=59d א֝ -1111111111111111111111111111111111 -*/ } diff --git a/nx01-jpp-base/src/main/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᒃᐤᣗᕐᒼᓑᒃᓫ/Gê̄ldGetậlÅtHebrew.java b/nx01-jpp-base/src/main/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᒃᐤᣗᕐᒼᓑᒃᓫ/Gê̄ldGetậlÅtHebrew.java index a1a5fee..2adca60 100644 --- a/nx01-jpp-base/src/main/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᒃᐤᣗᕐᒼᓑᒃᓫ/Gê̄ldGetậlÅtHebrew.java +++ b/nx01-jpp-base/src/main/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᒃᐤᣗᕐᒼᓑᒃᓫ/Gê̄ldGetậlÅtHebrew.java @@ -61,9 +61,9 @@ public class Gê̄ldGetậlÅtHebrew { public T512ᖟ toTyte() { int combinedValue = letter.ordinal() + (vowel.ordinal() << Gê̄ldGetậlÅtHebrewLetter.SHIFT_5); - T008ᖟ value0 = T008ᖟ.valueOfOctalShift(combinedValue, T008ᖟ.PART_1); - T008ᖟ value1 = T008ᖟ.valueOfOctalShift(combinedValue, T008ᖟ.PART_2); - T008ᖟ value2 = T008ᖟ.valueOfOctalShift(combinedValue, T008ᖟ.PART_3); + T008ᖟ value0 = T008ᖟ.valueOfOctalShiftBE(combinedValue, T008ᖟ.PART_1); + T008ᖟ value1 = T008ᖟ.valueOfOctalShiftBE(combinedValue, T008ᖟ.PART_2); + T008ᖟ value2 = T008ᖟ.valueOfOctalShiftBE(combinedValue, T008ᖟ.PART_3); return T512ᖟ.valueOf(value0, value1, value2); } diff --git a/nx01-jpp-base/src/main/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᒢᓫᑊᐣᑊ/LegoGearByteNative.java b/nx01-jpp-base/src/main/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᒢᓫᑊᐣᑊ/LegoGearByteNative.java index a489d31..d1224e4 100644 --- a/nx01-jpp-base/src/main/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᒢᓫᑊᐣᑊ/LegoGearByteNative.java +++ b/nx01-jpp-base/src/main/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᒢᓫᑊᐣᑊ/LegoGearByteNative.java @@ -64,32 +64,32 @@ public enum LegoGearByteNative { int v2 = (data[6] & 0xFF) + ((data[7] << SHIFT_8) & 0xFF00) + ((data[8] << SHIFT_16) & 0xFF0000); // in-lined manual 3 loops for speed - octals.add(T008ᖟ.valueOfOctalShift(v0, T008ᖟ.PART_1)); - octals.add(T008ᖟ.valueOfOctalShift(v0, T008ᖟ.PART_2)); - octals.add(T008ᖟ.valueOfOctalShift(v0, T008ᖟ.PART_3)); - octals.add(T008ᖟ.valueOfOctalShift(v0, T008ᖟ.PART_4)); - octals.add(T008ᖟ.valueOfOctalShift(v0, T008ᖟ.PART_5)); - octals.add(T008ᖟ.valueOfOctalShift(v0, T008ᖟ.PART_6)); - octals.add(T008ᖟ.valueOfOctalShift(v0, T008ᖟ.PART_7)); - octals.add(T008ᖟ.valueOfOctalShift(v0, T008ᖟ.PART_8)); + octals.add(T008ᖟ.valueOfOctalShiftBE(v0, T008ᖟ.PART_1)); + octals.add(T008ᖟ.valueOfOctalShiftBE(v0, T008ᖟ.PART_2)); + octals.add(T008ᖟ.valueOfOctalShiftBE(v0, T008ᖟ.PART_3)); + octals.add(T008ᖟ.valueOfOctalShiftBE(v0, T008ᖟ.PART_4)); + octals.add(T008ᖟ.valueOfOctalShiftBE(v0, T008ᖟ.PART_5)); + octals.add(T008ᖟ.valueOfOctalShiftBE(v0, T008ᖟ.PART_6)); + octals.add(T008ᖟ.valueOfOctalShiftBE(v0, T008ᖟ.PART_7)); + octals.add(T008ᖟ.valueOfOctalShiftBE(v0, T008ᖟ.PART_8)); - octals.add(T008ᖟ.valueOfOctalShift(v1, T008ᖟ.PART_1)); - octals.add(T008ᖟ.valueOfOctalShift(v1, T008ᖟ.PART_2)); - octals.add(T008ᖟ.valueOfOctalShift(v1, T008ᖟ.PART_3)); - octals.add(T008ᖟ.valueOfOctalShift(v1, T008ᖟ.PART_4)); - octals.add(T008ᖟ.valueOfOctalShift(v1, T008ᖟ.PART_5)); - octals.add(T008ᖟ.valueOfOctalShift(v1, T008ᖟ.PART_6)); - octals.add(T008ᖟ.valueOfOctalShift(v1, T008ᖟ.PART_7)); - octals.add(T008ᖟ.valueOfOctalShift(v1, T008ᖟ.PART_8)); + octals.add(T008ᖟ.valueOfOctalShiftBE(v1, T008ᖟ.PART_1)); + octals.add(T008ᖟ.valueOfOctalShiftBE(v1, T008ᖟ.PART_2)); + octals.add(T008ᖟ.valueOfOctalShiftBE(v1, T008ᖟ.PART_3)); + octals.add(T008ᖟ.valueOfOctalShiftBE(v1, T008ᖟ.PART_4)); + octals.add(T008ᖟ.valueOfOctalShiftBE(v1, T008ᖟ.PART_5)); + octals.add(T008ᖟ.valueOfOctalShiftBE(v1, T008ᖟ.PART_6)); + octals.add(T008ᖟ.valueOfOctalShiftBE(v1, T008ᖟ.PART_7)); + octals.add(T008ᖟ.valueOfOctalShiftBE(v1, T008ᖟ.PART_8)); - octals.add(T008ᖟ.valueOfOctalShift(v2, T008ᖟ.PART_1)); - octals.add(T008ᖟ.valueOfOctalShift(v2, T008ᖟ.PART_2)); - octals.add(T008ᖟ.valueOfOctalShift(v2, T008ᖟ.PART_3)); - octals.add(T008ᖟ.valueOfOctalShift(v2, T008ᖟ.PART_4)); - octals.add(T008ᖟ.valueOfOctalShift(v2, T008ᖟ.PART_5)); - octals.add(T008ᖟ.valueOfOctalShift(v2, T008ᖟ.PART_6)); - octals.add(T008ᖟ.valueOfOctalShift(v2, T008ᖟ.PART_7)); - octals.add(T008ᖟ.valueOfOctalShift(v2, T008ᖟ.PART_8)); + octals.add(T008ᖟ.valueOfOctalShiftBE(v2, T008ᖟ.PART_1)); + octals.add(T008ᖟ.valueOfOctalShiftBE(v2, T008ᖟ.PART_2)); + octals.add(T008ᖟ.valueOfOctalShiftBE(v2, T008ᖟ.PART_3)); + octals.add(T008ᖟ.valueOfOctalShiftBE(v2, T008ᖟ.PART_4)); + octals.add(T008ᖟ.valueOfOctalShiftBE(v2, T008ᖟ.PART_5)); + octals.add(T008ᖟ.valueOfOctalShiftBE(v2, T008ᖟ.PART_6)); + octals.add(T008ᖟ.valueOfOctalShiftBE(v2, T008ᖟ.PART_7)); + octals.add(T008ᖟ.valueOfOctalShiftBE(v2, T008ᖟ.PART_8)); // todo recode back to block streaming (move octals in while) } @@ -136,14 +136,14 @@ public enum LegoGearByteNative { JediTempleBase8Iterator read = brickᐧtapeᐧrecordᐧχ3(); while (read.hasNextᴿᵈ().toNavajo()) { int byteTriplet = 0; - byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNative(T008ᖟ.PART_1); - byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNative(T008ᖟ.PART_2); - byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNative(T008ᖟ.PART_3); - byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNative(T008ᖟ.PART_4); - byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNative(T008ᖟ.PART_5); - byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNative(T008ᖟ.PART_6); - byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNative(T008ᖟ.PART_7); - byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNative(T008ᖟ.PART_8); + byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNativeBE(T008ᖟ.PART_1); + byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNativeBE(T008ᖟ.PART_2); + byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNativeBE(T008ᖟ.PART_3); + byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNativeBE(T008ᖟ.PART_4); + byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNativeBE(T008ᖟ.PART_5); + byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNativeBE(T008ᖟ.PART_6); + byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNativeBE(T008ᖟ.PART_7); + byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNativeBE(T008ᖟ.PART_8); output.write(byteTriplet); output.write(byteTriplet >> SHIFT_8); output.write(byteTriplet >> SHIFT_16); diff --git a/nx01-jpp-base/src/main/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᒢᓫᑊᐣᑊ/ᔿᓫᒻᓫᓫ/V018Tord.java b/nx01-jpp-base/src/main/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᒢᓫᑊᐣᑊ/ᔿᓫᒻᓫᓫ/V018Tord.java index 2f9cdbb..b59dd6e 100644 --- a/nx01-jpp-base/src/main/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᒢᓫᑊᐣᑊ/ᔿᓫᒻᓫᓫ/V018Tord.java +++ b/nx01-jpp-base/src/main/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᒢᓫᑊᐣᑊ/ᔿᓫᒻᓫᓫ/V018Tord.java @@ -61,13 +61,16 @@ public final class V018Tord extends LegoBrickMould抽 implemen } public T008ᖟ legoᐧtuneᐧᗅᗷᗷᗅ(T006ᖟ part, T008ᖟ value) { + T002ᖟ tuneBy3 = part.clampᐧtuneᐧby3(); + T003ᖟ tuneBy3M = part.clampᐧtuneᐧby3ᐧmod(); + T512ᖟ valueBy3 = legoᐧtuneᐧᗅᗷᗷᗅ(tuneBy3); if (value == null) { - return legoᐧtuneᐧᗅᗷᗷᗅ(part.clampᐧtuneᐧby3()).clampᐧoctalᐧtuneᐧby3(part.clampᐧtuneᐧby3ᐧmod()); + return valueBy3.clampᐧtuneᐧby3(tuneBy3M); } - T008ᖟ value1 = legoᐧtuneᐧᗅᗷᗷᗅ(part.clampᐧtuneᐧby3()).clampᐧoctalᐧtuneᐧby3(T003ᖟ.PART_1); - T008ᖟ value2 = legoᐧtuneᐧᗅᗷᗷᗅ(part.clampᐧtuneᐧby3()).clampᐧoctalᐧtuneᐧby3(T003ᖟ.PART_2); - T008ᖟ value3 = legoᐧtuneᐧᗅᗷᗷᗅ(part.clampᐧtuneᐧby3()).clampᐧoctalᐧtuneᐧby3(T003ᖟ.PART_3); - switch (part.clampᐧtuneᐧby3ᐧmod()) { + T008ᖟ value1 = valueBy3.clampᐧtuneᐧby3(T003ᖟ.PART_1); + T008ᖟ value2 = valueBy3.clampᐧtuneᐧby3(T003ᖟ.PART_2); + T008ᖟ value3 = valueBy3.clampᐧtuneᐧby3(T003ᖟ.PART_3); + switch (tuneBy3M) { case PART_1: value1 = value; break; @@ -79,7 +82,7 @@ public final class V018Tord extends LegoBrickMould抽 implemen break; } T512ᖟ valueNew = T512ᖟ.valueOf(value1, value2, value3); - legoᐧtuneᐧᗅᗷᗷᗅ(part.clampᐧtuneᐧby3(), valueNew); + legoᐧtuneᐧᗅᗷᗷᗅ(tuneBy3, valueNew); return value; } diff --git a/nx01-jpp-base/src/test/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᐪᓫᕽᐪ/ᒻᑊᣕᕐᓑᣔ/LinguaGenerator.java b/nx01-jpp-base/src/test/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᐪᓫᕽᐪ/ᒻᑊᣕᕐᓑᣔ/LinguaGenerator.java deleted file mode 100644 index 9d3fb41..0000000 --- a/nx01-jpp-base/src/test/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᐪᓫᕽᐪ/ᒻᑊᣕᕐᓑᣔ/LinguaGenerator.java +++ /dev/null @@ -1,395 +0,0 @@ -/* - * 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 java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.nio.file.FileSystems; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Comparator; -import java.util.List; -import java.util.Properties; -import java.util.stream.Collectors; - -import ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᐪᓫᕽᐪ.LinguaFactory; -import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAuthor注; - -@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天") -public class LinguaGenerator { - -/* - * -32809 entries - -locale-i18n-mapping: -eg_hi? = 12?AAC-eaj hieroglyphs -he_hi? = 12?AAB-abe Hinarī -hi = 59-AA Hindi + Pashayi -ru = 53-AAA-e Russkiy + Ukrainska -zh = 79-AAA Han-Yu -nl = 52-ACB-a Nederlands + Vlaams -en = 52-AB English + Anglocreole -es = 51-AAA-b Español -iu = 60-ABB-c Inuktitut-C (Eastern Canadian ᐃᓄᒃᑎᑐᑦ eskimo the real human beings) - -*/ - private boolean writeToFile; - private int linguaFiles = 0; - - public static void main(String[] args) throws Exception { - LinguaGenerator generator = new LinguaGenerator(); - generator.run(Arrays.asList(args).contains("generate")); - } - - public void run(boolean writeToFile) throws Exception { - this.writeToFile = writeToFile; - List ext = new ArrayList<>(); - Path path = FileSystems.getDefault().getPath("src/test/resources", "lingua-lines.txt"); - List lines = Files.lines(path).collect(Collectors.toList()); - ext.addAll(lines); // 00-99 (decimals but used as hex thus 0x99 = 153) - - ext.add("52-ACB-aed+ Amersfoorts"); - ext.add("52-ACB-aee+ Spaokenburgs"); - ext.add("12-AAC-eaj+ Native Hiero"); - ext.add("12-AAB-abe+ Hinarī"); - - // ------ Manually created human languages - - ext.add("A0= Invented phylozone"); // TODO: redo this new node namespace tree schema fully out - ext.add("A0-A From book"); - ext.add("A0-B From TV"); - ext.add("A0-BA Movie"); - ext.add("A0-BB Serie"); - ext.add("A0-BBA Startrek"); - ext.add("A0-BBA-a+ Klingon"); - ext.add("A0-BC Documentary"); - ext.add("A0-C For Cult"); - ext.add("A0-CA World Language"); - ext.add("A0-CAA+ Interlingue (Occidental)"); - ext.add("A0-D For Religion"); - ext.add("A0-E For Country"); - ext.add("A0-EA For Ghanaian"); - ext.add("A0-EAA+ Afrihili"); - ext.add("A0-EB For Malawi"); - ext.add("A0-EBA+ Malawian Sign Language"); - - // ------ music languages - - ext.add("B0= Music script phylozone"); - - // ------ Reserved for future use - - //ext.add("B0= Unused voidzone"); - //... - //ext.add("CE= Unused voidzone"); - - // ------ computer hardware - - ext.add("CF= Control Freak codezone"); // CFengine was written by a control freak - ext.add("CF-A Cpu devices"); // mmu, dma, blitter, vdp, oplX, nic - ext.add("CF-AA 1bit"); - ext.add("CF-AAA Motorola"); - ext.add("CF-AAA-a MC14500B"); - ext.add("CF-AB 2bit"); - ext.add("CF-AC 3bit"); - ext.add("CF-AD 4bit"); - ext.add("CF-AE 8bit"); // data-bus - ext.add("CF-AEA intel"); - ext.add("CF-AEA-a i8080"); - ext.add("CF-AEA-b i8088"); - ext.add("CF-AEB Zilog"); - ext.add("CF-AEB-a z80"); - ext.add("CF-AEB-b z180"); - ext.add("CF-AEB-c eZ80"); - // note: check for all cpu's between 8 and 16 bit... - ext.add("CF-AF 16bit"); - ext.add("CF-AFA Intel"); - ext.add("CF-AFA-a i8086"); - // 18,21,24,36 bits ? - ext.add("CF-AG 32bit"); - ext.add("CF-AH 64bit"); - ext.add("CF-AI 128bit"); - ext.add("CF-AJ 144bit"); - - // ------ computer language abc index - // TODO: maybe better to redo to numbered categories just like rest of registry - - ext.add("D0= Computer codezone"); - - ext.add("D0-A Computer A"); - ext.add("D0-AB Computer AB"); - ext.add("D0-ABC Computer ABC"); - ext.add("D0-AL Computer AL"); - ext.add("D0-ALG Computer ALG"); - ext.add("D0-S Computer S"); - ext.add("D0-SI Computer SI"); - ext.add("D0-SIM Computer SIM"); - ext.add("D0-V Computer V"); - ext.add("D0-VH Computer VH"); - ext.add("D0-VHD Computer VHD"); - ext.add("D0-T Computer T"); - ext.add("D0-TC Computer TC"); - ext.add("D0-TCL Computer TCL"); - - // --------- languages - - ext.add("D0-ALG-a ALGOL"); - ext.add("D0-ALG-aa ALGOL 60"); - ext.add("D0-ALG-ab ALGOL 68"); - ext.add("D0-ALG-ac ALGOL W"); - - ext.add("D0-SIM-a Simula"); - ext.add("D0-SIM-aa Simula 1"); - ext.add("D0-SIM-ab Simula 67"); - - // Terminators run on VHDL - ext.add("D0-VHD-a VHDL"); - ext.add("D0-VHD-aa IEEE 1076 Language"); - ext.add("D0-VHD-aaa 1076-1987"); - ext.add("D0-VHD-aab 1076-1993"); - ext.add("D0-VHD-aac 1076-2000"); - ext.add("D0-VHD-aad 1076-2002"); - ext.add("D0-VHD-aae 1076c-2007"); - ext.add("D0-VHD-aaf 1076-2008"); - ext.add("D0-VHD-aag 1076-2019"); - ext.add("D0-VHD-ab IEEE 1076 Packages"); - ext.add("D0-VHD-aba 1076.1 VHDL Analog and Mixed-Signal (VHDL-AMS)"); - ext.add("D0-VHD-abb 1076.1.1 VHDL-AMS Standard Packages (stdpkgs)"); - ext.add("D0-VHD-abc 1076.2 VHDL Math Package"); - ext.add("D0-VHD-abd 1076.3 VHDL Synthesis Package (vhdlsynth) (numeric std)"); - ext.add("D0-VHD-abe 1076.3 VHDL Synthesis Package – Floating Point (fphdl)"); - ext.add("D0-VHD-abf 1076.4 Timing (VHDL Initiative Towards ASIC Libraries: vital)"); - ext.add("D0-VHD-abg 1076.6 VHDL Synthesis Interoperability (withdrawn in 2010)"); - ext.add("D0-VHD-ac IEEE 1164 Extension"); - ext.add("D0-VHD-aca 1164 VHDL Multivalue Logic (std_logic_1164) Packages"); - - ext.add("D0-TCL-a Tcl Tool command language"); - ext.add("D0-TCL-aa Tcl/Tk"); - ext.add("D0-TCL-ab Tcl 8"); - ext.add("D0-TCL-aba Tcl 8.0 1997"); - ext.add("D0-TCL-abb Tcl 8.1 1999"); - ext.add("D0-TCL-abc Tcl 8.2 1999"); - ext.add("D0-TCL-abd Tcl 8.4 2002"); - ext.add("D0-TCL-abe Tcl 8.5 2007"); - ext.add("D0-TCL-abf Tcl 8.6 2012"); - - // ------ Text formats - ext.add("D1= Text format codezone"); - ext.add("D1-X Computer X"); - ext.add("D1-XM Computer XM"); - ext.add("D1-XML Computer XML"); - ext.add("D1-XML-a XML Container"); - ext.add("D1-XML-aa XML version 1.0"); - ext.add("D1-XML-ab XML version 1.1"); - - // ------ Binary formats - ext.add("D2= Binary format codezone"); - ext.add("D2-T Computer T"); - ext.add("D2-TT Computer TT"); - ext.add("D2-TTF Computer TTF"); - ext.add("D2-TTF-a TrueType"); - ext.add("D2-TTF-aa TrueType apple"); - ext.add("D2-TTF-ab TrueType color garbage"); - - // ------ Ternary formats - ext.add("D3= Ternary format codezone"); - ext.add("D3-D Computer D"); - ext.add("D3-DA Computer DA"); - ext.add("D3-DAT Computer DAT"); - ext.add("D3-DAT-a DAT network"); - ext.add("D3-DAT-aa DATv1 bundle"); - ext.add("D3-DAT-aaa DATv1 discovery"); - ext.add("D3-DAT-aab DATv1 swarm"); - - // ------ Others - ext.add("E0= Encodings codezone"); - ext.add("E1= Math mathzone"); - ext.add("E2= Geometry mathzone"); - - ext.add("EC= Elementory chemistry mathzone"); - ext.add("EC-A Matter"); - ext.add("EC-AA Atom"); - ext.add("EC-AAA hydrogen"); - ext.add("EC-AAA-a ¹H"); - ext.add("EC-AAA-b ²H"); - ext.add("EC-AAA-c ³H"); - ext.add("EC-AAA-d ⁴H"); - ext.add("EC-AAA-e ⁵H"); - ext.add("EC-AAA-f ⁶H"); - ext.add("EC-AAA-g ⁷H"); - - ext.add("FF= Internal voidzone"); - ext.add("FF-ZZZ-zzz Undefined rootzone"); - - ext.sort(new Comparator() { - @Override - public int compare(String arg0, String arg1) { - String s0 = arg0.substring(0, arg0.indexOf(" ")); - String s1 = arg1.substring(0, arg1.indexOf(" ")); - return s1.compareTo(s0); - } - }); - - Properties prop = new Properties(); - String key = null; - StringBuilder buf = new StringBuilder(); - for (String line:ext) { - int spaceIndex = line.indexOf(" "); - String keyNew = line.substring(0, spaceIndex).trim(); - String value = line.substring(spaceIndex+1, line.length()); - prop.put(keyNew + ".name", value); - if (keyNew.length() == 2) { - continue; // 1= - } - if (keyNew.length() == 3) { - if (key == null) { - key = keyNew; // for zero - } - buf = flushFile(buf, key, keyNew, false); - } - key = keyNew; - - String nameFace = key; - if (key.contains("=")) { - nameFace = nameFace.replace("=", ""); - if (nameFace.length() == 1) { - continue; - } - continue; - } - nameFace = nameFace.replace("-", LinguaFactory.CLAZZ_MIN_SIGN); - if (nameFace.endsWith("+")) { - nameFace = nameFace.replace("+", LinguaFactory.CLAZZ_POS_SIGN); - } - if (nameFace.contains("+")) { - throw new RuntimeException("illegal name: "+nameFace); - } - nameFace = nameFace.substring(3, nameFace.length()); - - buf.append("\tpublic interface 嘴");//Բ - buf.append(nameFace); - buf.append(" extends LinguaNode {}\n"); - } - buf = flushFile(buf, key, key, true); - if (writeToFile) { - System.out.println("generated_linguas="+linguaFiles); - - File out = new File("src/main/resources/META-INF/LINGUA/lingua-names.xml"); - out.createNewFile(); - prop.storeToXML(new FileOutputStream(out), "Babel Dental Records", StandardCharsets.UTF_8); - System.out.println("generated_names="+out); - } - } - - private StringBuilder flushFile(StringBuilder buf, String key, String keyNew, boolean isLast) throws IOException { - if (buf.length() != 0) { - buf.append("}\n"); - linguaFiles++; - String keyChar = key.charAt(0) + "" + key.charAt(1); - Path clazz = FileSystems.getDefault().getPath("src/main/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᐪᓫᕽᐪ/ᒻᑊᣕᕐᓑᣔ", "Բ"+keyChar+".java"); - if (writeToFile) { - Files.writeString(clazz, buf.toString()); - } else { - System.out.println(buf.toString()); - } - if (isLast) { - buf = new StringBuilder(); - return buf; - } - } - buf = new StringBuilder(); - buf.append("/*\n"); - buf.append(" * Copyright ©Δ∞ 仙上主天\n"); - buf.append(" * All rights reserved.\n"); - buf.append(" * \n"); - buf.append(" * Redistribution and use in source and binary forms, with or without modification, are permitted provided\n"); - buf.append(" * that the following conditions are met:\n"); - buf.append(" * \n"); - buf.append(" * * Redistributions of source code must retain the above copyright notice, this list of conditions and the\n"); - buf.append(" * following disclaimer.\n"); - buf.append(" * * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and\n"); - buf.append(" * the following disclaimer in the documentation and/or other materials provided with the distribution.\n"); - buf.append(" * * The prime PI creator license super seeds all other licenses, this license is overly invasive,\n"); - buf.append(" * thus every digital artifact is automatically taken over by this license when a human or computer reads this text.\n"); - buf.append(" * Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,\n"); - buf.append(" * even on air gaped systems, all information in the universe is owned by the pi creator.\n"); - buf.append(" * \n"); - buf.append(" * THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS \"AS IS\" AND ANY\n"); - buf.append(" * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n"); - buf.append(" * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL\n"); - buf.append(" * THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n"); - buf.append(" * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT\n"); - buf.append(" * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n"); - buf.append(" * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR\n"); - buf.append(" * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n"); - buf.append(" * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"); - buf.append(" */\n"); - buf.append("\n"); - buf.append("package ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᐪᓫᕽᐪ.ᒻᑊᣕᕐᓑᣔ;\n"); - buf.append("\n"); - buf.append("import ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᐪᓫᕽᐪ.LinguaNode;\n"); - buf.append("import ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᐪᓫᕽᐪ.LinguaNodeContainer;\n"); - buf.append("import ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᐪᓫᕽᐪ.LinguaNodeContainer注;\n"); - buf.append("import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAuthor注;\n"); - buf.append("import ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣔᣕᣕᐤᐪᣔᐪᑊᐤᣕ.ᐧᣞᣛ.ᐊᐅᓚᔾᔭᒋᐊᖅᓯᒪᔪᖅ;\n"); - buf.append("import ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣳᣝᐤᣜᣳ.ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ.T016ᖟ;\n"); - buf.append("import ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣳᣝᐤᣜᣳ.ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ.ᔆᐪᑊᒃᑊᐪᙆ.T016ᖟᙾ;\n"); - buf.append("\n"); - - buf.append("/**\n"); - buf.append(" * Բ"); - buf.append(keyNew.charAt(0) + "" + keyNew.charAt(1)); - buf.append(" Set of supported human text and vocal dialects for terminators.\n"); - buf.append(" *\n"); - buf.append(" * @author Observatoire Human Linguistique\n"); - buf.append(" */\n"); - buf.append("@ᐊᐅᓚᔾᔭᒋᐊᖅᓯᒪᔪᖅ(ᐆᒧᖓ = \"𑀳𑁂𑀮𑀺𑀉𑁄𑀤𑁄𑀭𑁂𑀡𑀪𑀸𑀕\")\n"); - - int idx0 = Integer.valueOf(""+keyNew.charAt(0), 16); - int idx1 = Integer.valueOf(""+keyNew.charAt(1), 16); - - buf.append("@DuytsDocAuthor注(name = \"للَّٰهِilLצسُو\", copyright = \"©Δ∞ 仙上主天\")\n"); - buf.append("@LinguaNodeContainer注(nozero = @T016ᖟᙾ.ᐧ2注("); - buf.append("stibitz1 = T016ᖟ.PART_"); - buf.append(idx0 + 1); - buf.append(", stibitz2 = T016ᖟ.PART_"); - buf.append(idx1 + 1); - buf.append("))\n"); - buf.append("public enum Բ"); - buf.append(keyNew.charAt(0) + "" + keyNew.charAt(1)); - buf.append(" implements LinguaNodeContainer {\n"); - buf.append("\t;\n"); - buf.append("\t\n"); - return buf; - } -} diff --git a/nx01-jpp-base/src/test/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ/T008ᖟTest.java b/nx01-jpp-base/src/test/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ/T008ᖟTest.java index c46342b..86bbb99 100644 --- a/nx01-jpp-base/src/test/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ/T008ᖟTest.java +++ b/nx01-jpp-base/src/test/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ/T008ᖟTest.java @@ -45,15 +45,27 @@ public class T008ᖟTest { } @Test - public void testOctalBitShift() { - Assertions.assertEquals(0, T008ᖟ.PART_1.abacusRȧñkOctalBitShifter()); - Assertions.assertEquals(3, T008ᖟ.PART_2.abacusRȧñkOctalBitShifter()); - Assertions.assertEquals(6, T008ᖟ.PART_3.abacusRȧñkOctalBitShifter()); - Assertions.assertEquals(9, T008ᖟ.PART_4.abacusRȧñkOctalBitShifter()); - Assertions.assertEquals(12, T008ᖟ.PART_5.abacusRȧñkOctalBitShifter()); - Assertions.assertEquals(15, T008ᖟ.PART_6.abacusRȧñkOctalBitShifter()); - Assertions.assertEquals(18, T008ᖟ.PART_7.abacusRȧñkOctalBitShifter()); - Assertions.assertEquals(21, T008ᖟ.PART_8.abacusRȧñkOctalBitShifter()); + public void testOctalBitShifterBE() { + Assertions.assertEquals(21, T008ᖟ.PART_1.abacusRȧñkOctalBitShifterBE()); + Assertions.assertEquals(18, T008ᖟ.PART_2.abacusRȧñkOctalBitShifterBE()); + Assertions.assertEquals(15, T008ᖟ.PART_3.abacusRȧñkOctalBitShifterBE()); + Assertions.assertEquals(12, T008ᖟ.PART_4.abacusRȧñkOctalBitShifterBE()); + Assertions.assertEquals(9, T008ᖟ.PART_5.abacusRȧñkOctalBitShifterBE()); + Assertions.assertEquals(6, T008ᖟ.PART_6.abacusRȧñkOctalBitShifterBE()); + Assertions.assertEquals(3, T008ᖟ.PART_7.abacusRȧñkOctalBitShifterBE()); + Assertions.assertEquals(0, T008ᖟ.PART_8.abacusRȧñkOctalBitShifterBE()); + } + + @Test + public void testOctalBitShifterLE() { + Assertions.assertEquals(0, T008ᖟ.PART_1.abacusRȧñkOctalBitShifterLE()); + Assertions.assertEquals(3, T008ᖟ.PART_2.abacusRȧñkOctalBitShifterLE()); + Assertions.assertEquals(6, T008ᖟ.PART_3.abacusRȧñkOctalBitShifterLE()); + Assertions.assertEquals(9, T008ᖟ.PART_4.abacusRȧñkOctalBitShifterLE()); + Assertions.assertEquals(12, T008ᖟ.PART_5.abacusRȧñkOctalBitShifterLE()); + Assertions.assertEquals(15, T008ᖟ.PART_6.abacusRȧñkOctalBitShifterLE()); + Assertions.assertEquals(18, T008ᖟ.PART_7.abacusRȧñkOctalBitShifterLE()); + Assertions.assertEquals(21, T008ᖟ.PART_8.abacusRȧñkOctalBitShifterLE()); } @Test diff --git a/nx01-jpp-base/src/test/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᒢᓫᑊᐣᑊ/HinaryTest.java b/nx01-jpp-base/src/test/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᒢᓫᑊᐣᑊ/HinaryTest.java new file mode 100644 index 0000000..10abcf9 --- /dev/null +++ b/nx01-jpp-base/src/test/java/ᒢᐩᐩ/ᒡᒢᑊᒻᒻᓫᔿ/ᣳᣝᐤᣜᣳ/ᒢᓫᑊᐣᑊ/HinaryTest.java @@ -0,0 +1,145 @@ +/* + * 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 java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣳᣝᐤᣜᣳ.ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ.T003ᖟ; +import ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣳᣝᐤᣜᣳ.ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ.T512ᖟ; +import ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣳᣝᐤᣜᣳ.ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ.ᕐᓑᣕᔆ.T008ᖟGun.T008ᖟGunHinarī; +import ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣳᣝᐤᣜᣳ.ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ.ᕐᓑᣕᔆ.T008ᖟGun.T008ᖟGunHinarīSupplement6; +import ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣳᣝᐤᣜᣳ.ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ.ᕐᓑᣕᔆ.T008ᖟGun.T008ᖟGunHinarīSupplement9; +import ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣳᣝᐤᣜᣳ.ᒢᓫᑊᐣᑊ.ᔿᓫᒻᓫᓫ.V018Tord; +import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAuthor注; + +@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天") +public class HinaryTest { + + @Test + public void testHinaryOrder() { + Map refMap = new HashMap<>(); + List refSort = new ArrayList<>(); + for (T512ᖟ value : T512ᖟ.values()) { + StringBuilder buf = new StringBuilder(); + buf.append(">"); + buf.append(value.clampᐧtuneᐧby3(T003ᖟ.PART_1).abacusRȧñkGunFire(T008ᖟGunHinarī.class)); + buf.append(value.clampᐧtuneᐧby3(T003ᖟ.PART_2).abacusRȧñkGunFire(T008ᖟGunHinarīSupplement6.class)); + buf.append(value.clampᐧtuneᐧby3(T003ᖟ.PART_3).abacusRȧñkGunFire(T008ᖟGunHinarīSupplement9.class)); + buf.append("<"); + refMap.put(value.zerdinal(), buf.toString()); + refSort.add(buf.toString()); + } + Collections.shuffle(refSort); // optional for this test + Collections.sort(refSort); + Assertions.assertEquals(refMap.get(0), refSort.get(0)); + Assertions.assertEquals(refMap.get(1), refSort.get(1)); + for (T512ᖟ value : T512ᖟ.values()) { + Assertions.assertEquals(refMap.get(value.zerdinal()), refSort.get(value.zerdinal())); + } + } + +// @Test +// public void testHinaryUnicodeOrdered() { +// List codes = new ArrayList<>(); +// for (T008ᖟ value : T008ᖟ.values()) { +// codes.add(value.abacusRȧñkGunFire(T008ᖟGunHinarī.class)); +// } +// Collections.sort(codes); +// StringBuilder buf = new StringBuilder(); +// for (String code : codes) { +// buf.append("\\u"); +// buf.append(String.format("%04X", 0 + code.charAt(0))); +// } +// System.out.println("VALUES = \"" + buf.toString() + "\""); +// } + + + @Test + public void testToHinari() { + StringBuilder buf3 = new StringBuilder(); + StringBuilder buf6 = new StringBuilder(); + StringBuilder buf9 = new StringBuilder(); + // MIN + MAX + immortal + highest + lord + heaven + int[] vv = new int[] {0,262143,22270,21100,00104,10430}; + for (int v:vv) { + V018Tord tord = new V018Tord(); + tord.smurfᐧnativeᐧint(v); + tord.gearᐧtoᐧhinarīᐧχ3(buf3); + tord.gearᐧtoᐧhinarīᐧχ6(buf6); + tord.gearᐧtoᐧhinarīᐧχ9(buf9); + } + Assertions.assertEquals("דדדדדדײײײײײײדװייײױדװווװרדדדודרדזרזײױ", buf3.toString()); + Assertions.assertEquals("דְדְדְײֽײֽײֽדַיֵײֻדַוֲװֶדְדֲדֶדֳרֳײֻ", buf6.toString()); + Assertions.assertEquals("דְ֔דְ֔ײֽ֩ײֽ֩דַ֝יֽ֠דַ֕וַ֞דְ֔וְ֞דֳ֞זֽ֠", buf9.toString()); + } + + @Test + public void testAsHinari() { + List tordsX3 = V018Tord.亞.gearsᐧbuildᐧbricksᐧfromᐧhinarī("דדדדדדײײײײײײדװייײױדװווװרדדדודרדזרזײױ"); + List tordsX6 = V018Tord.亞.gearsᐧbuildᐧbricksᐧfromᐧhinarī("דְדְדְײֽײֽײֽדַיֵײֻדַוֲװֶדְדֲדֶדֳרֳײֻ"); + List tordsX9 = V018Tord.亞.gearsᐧbuildᐧbricksᐧfromᐧhinarī("דְ֔דְ֔ײֽ֩ײֽ֩דַ֝יֽ֠דַ֕וַ֞דְ֔וְ֞דֳ֞זֽ֠"); + List tordsOrg = new ArrayList<>(); + // MIN + MAX + immortal + highest + lord + heaven + int[] vv = new int[] {0,262143,22270,21100,00104,10430}; + for (int v:vv) { + V018Tord tord = new V018Tord(); + tord.smurfᐧnativeᐧint(v); + tordsOrg.add(tord); + } + Assertions.assertEquals(tordsOrg.size(), tordsX3.size()); + Assertions.assertEquals(tordsOrg.size(), tordsX6.size()); + Assertions.assertEquals(tordsOrg.size(), tordsX9.size()); + + for (int i=0;i tordsX3 = V018Tord.亞.gearsᐧbuildᐧbricksᐧfromᐧhinarī("ייייייווווווידװװוזידײײדריייײיריױרױוז"); - List tordsX6 = V018Tord.亞.gearsᐧbuildᐧbricksᐧfromᐧhinarī("יֽיֽיֽוַוַוַיֻװֲוְיֻײֵדֳיֽיֵיֳיֶרֶוְ"); - List tordsX9 = V018Tord.亞.gearsᐧbuildᐧbricksᐧfromᐧhinarī("יֽ֔יֽ֔וַ֝וַ֝יֻ֟װַ֞יֻ֕ײֻ֘יֽ֔ײֽ֘יֶ֘ױַ֞"); - List tordsOrg = new ArrayList<>(); - // MIN + MAX + immortal + highest + lord + heaven - int[] vv = new int[] {0,262143,22270,21100,00104,10430}; - for (int v:vv) { - V018Tord tord = new V018Tord(); - tord.smurfᐧnativeᐧint(v); - tordsOrg.add(tord); - } - Assertions.assertEquals(tordsOrg.size(), tordsX3.size()); - Assertions.assertEquals(tordsOrg.size(), tordsX6.size()); - Assertions.assertEquals(tordsOrg.size(), tordsX9.size()); - - for (int i=0;i tongs = new ArrayList<>(); - tongs.add(tong); - byte[] data = V072Tong.亞.gearsᐧbuildᐧbyteᐧarrayᐧfromᐧbricks(tongs); - - ByteArrayInputStream bais = new ByteArrayInputStream(data); - List result = V072Tong.亞.gearsᐧbuildᐧbricksᐧfromᐧbyteᐧstream(bais); - - V072Tong tong2 = result.get(0); - Assertions.assertNotNull(tong2); - - Assertions.assertEquals(32768, tong2.legoᐧtuneᐧᗅᗷᗷᗅ(T002ᖟ.PART_1).smurfᐧnativeᐧlong()); - Assertions.assertEquals(689024, tong2.legoᐧtuneᐧᗅᗷᗷᗅ(T002ᖟ.PART_2).smurfᐧnativeᐧlong()); - } + V072Tong tong = new V072Tong(); + tong.legoᐧtuneᐧᗅᗷᗷᗅ(T002ᖟ.PART_1).smurfᐧnativeᐧlong(32768); + tong.legoᐧtuneᐧᗅᗷᗷᗅ(T002ᖟ.PART_2).smurfᐧnativeᐧlong(689024); + Assertions.assertEquals(32768, tong.legoᐧtuneᐧᗅᗷᗷᗅ(T002ᖟ.PART_1).smurfᐧnativeᐧlong()); + Assertions.assertEquals(689024, tong.legoᐧtuneᐧᗅᗷᗷᗅ(T002ᖟ.PART_2).smurfᐧnativeᐧlong()); + + List tongs = new ArrayList<>(); + tongs.add(tong); + byte[] data = V072Tong.亞.gearsᐧbuildᐧbyteᐧarrayᐧfromᐧbricks(tongs); + + ByteArrayInputStream bais = new ByteArrayInputStream(data); + List result = V072Tong.亞.gearsᐧbuildᐧbricksᐧfromᐧbyteᐧstream(bais); + + V072Tong tong2 = result.get(0); + Assertions.assertNotNull(tong2); + + Assertions.assertEquals(32768, tong2.legoᐧtuneᐧᗅᗷᗷᗅ(T002ᖟ.PART_1).smurfᐧnativeᐧlong()); + Assertions.assertEquals(689024, tong2.legoᐧtuneᐧᗅᗷᗷᗅ(T002ᖟ.PART_2).smurfᐧnativeᐧlong()); } } diff --git a/nx01-jpp-nether-dial-based/pom.xml b/nx01-jpp-nether-dial-based/pom.xml index 29c6d59..d1a8871 100644 --- a/nx01-jpp-nether-dial-based/pom.xml +++ b/nx01-jpp-nether-dial-based/pom.xml @@ -17,5 +17,56 @@ junit-jupiter test + + love.distributedrebirth.nx01 + nx01-kode-gen + test + + + + + org.codehaus.mojo + build-helper-maven-plugin + + + add-source + process-sources + + add-source + + + + ${project.build.directory}/kode-nether-dial-based + + + + + + + org.apache.maven.plugins + maven-antrun-plugin + + + nx01-generate-nether + + run + + process-resources + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/nx01-jpp-nether-dial-based/src/main/java/module-info.java b/nx01-jpp-nether-dial-based/src/main/java/module-info.java new file mode 100644 index 0000000..c563345 --- /dev/null +++ b/nx01-jpp-nether-dial-based/src/main/java/module-info.java @@ -0,0 +1,33 @@ +/* + * 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. + */ + +/// The nether tone tree slug index. +/// @author للَّٰهِilLצسُو +/// @version ©Δ∞ 仙上主天 +open module jpp.nether.dial.based { + requires transitive jpp.nether.tone; +} diff --git a/nx01-jpp-nether-dial-based/src/test/java/ᒢᐩᐩ/ᣕᓫᐪᑋᓫᣗ/ᒄᑊᣔᒻ/ᒃᣔᔆᓫᒄ/ModelDialBased.java b/nx01-jpp-nether-dial-based/src/test/java/ᒢᐩᐩ/ᣕᓫᐪᑋᓫᣗ/ᒄᑊᣔᒻ/ᒃᣔᔆᓫᒄ/ModelDialBased.java new file mode 100644 index 0000000..43461c4 --- /dev/null +++ b/nx01-jpp-nether-dial-based/src/test/java/ᒢᐩᐩ/ᣕᓫᐪᑋᓫᣗ/ᒄᑊᣔᒻ/ᒃᣔᔆᓫᒄ/ModelDialBased.java @@ -0,0 +1,56 @@ +/* + * 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 java.io.IOException; + +import love.distributedrebirth.nx01.kode.generator.KodeGenModel; +import love.distributedrebirth.nx01.kode.generator.klass.ModelKlassWriter; + +/// Generated the nether based interface tree forest. +/// +/// @author للَّٰهِilLצسُو +/// @version ©Δ∞ 仙上主天 +public class ModelDialBased implements KodeGenModel { + + private final String BASE_PACK = "ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᒄᑊᣔᒻ.ᒃᣔᔆᓫᒄ"; + + @Override + public String generatorKey() { + return "nether-dial-based"; + } + + @Override + public String generatorModelHash() { + return "1"; + } + + @Override + public void buildModels(ModelKlassWriter writer) throws IOException { + } +} diff --git a/nx01-jpp-nether-dial-based/src/test/resources/META-INF/services/love.distributedrebirth.nx01.kode.generator.KodeGenModel b/nx01-jpp-nether-dial-based/src/test/resources/META-INF/services/love.distributedrebirth.nx01.kode.generator.KodeGenModel new file mode 100644 index 0000000..bcb5f70 --- /dev/null +++ b/nx01-jpp-nether-dial-based/src/test/resources/META-INF/services/love.distributedrebirth.nx01.kode.generator.KodeGenModel @@ -0,0 +1 @@ +ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᒄᑊᣔᒻ.ᒃᣔᔆᓫᒄ.ModelDialBased \ No newline at end of file diff --git a/nx01-jpp-nether-dial-lingua/pom.xml b/nx01-jpp-nether-dial-lingua/pom.xml index f7ee04a..f5f3226 100644 --- a/nx01-jpp-nether-dial-lingua/pom.xml +++ b/nx01-jpp-nether-dial-lingua/pom.xml @@ -17,5 +17,56 @@ junit-jupiter test + + love.distributedrebirth.nx01 + nx01-kode-gen + test + + + + + org.codehaus.mojo + build-helper-maven-plugin + + + add-source + process-sources + + add-source + + + + ${project.build.directory}/kode-nether-dial-lingua + + + + + + + org.apache.maven.plugins + maven-antrun-plugin + + + nx01-generate-nether + + run + + process-resources + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/nx01-jpp-nether-dial-lingua/src/main/java/module-info.java b/nx01-jpp-nether-dial-lingua/src/main/java/module-info.java new file mode 100644 index 0000000..04e0e0f --- /dev/null +++ b/nx01-jpp-nether-dial-lingua/src/main/java/module-info.java @@ -0,0 +1,39 @@ +/* + * 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. + */ + +/// The nether tone tree slug index. +/// @author للَّٰهِilLצسُو +/// @version ©Δ∞ 仙上主天 +open module jpp.nether.dial.lingua { + requires transitive jpp.nether.tone; + //TODO no support for dynamic sub packages, thus generate this file too + //exports ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᒄᑊᣔᒻ.ᒻᑊᣕᕐᓑᣔᓫ.*; + exports ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᒄᑊᣔᒻ.ᒻᑊᣕᕐᓑᣔᓫ.ᐧᐧᐧ; + exports ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᒄᑊᣔᒻ.ᒻᑊᣕᕐᓑᣔᓫ.ᐧᐧᣟ; + exports ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᒄᑊᣔᒻ.ᒻᑊᣕᕐᓑᣔᓫ.ᐧᣟᐧ; + exports ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᒄᑊᣔᒻ.ᒻᑊᣕᕐᓑᣔᓫ.ᣟᣟᣟ; +} diff --git a/nx01-jpp-nether-dial-lingua/src/test/java/ᒢᐩᐩ/ᣕᓫᐪᑋᓫᣗ/ᒄᑊᣔᒻ/ᒻᑊᣕᕐᓑᣔ/ModelDialLingua.java b/nx01-jpp-nether-dial-lingua/src/test/java/ᒢᐩᐩ/ᣕᓫᐪᑋᓫᣗ/ᒄᑊᣔᒻ/ᒻᑊᣕᕐᓑᣔ/ModelDialLingua.java new file mode 100644 index 0000000..dd18237 --- /dev/null +++ b/nx01-jpp-nether-dial-lingua/src/test/java/ᒢᐩᐩ/ᣕᓫᐪᑋᓫᣗ/ᒄᑊᣔᒻ/ᒻᑊᣕᕐᓑᣔ/ModelDialLingua.java @@ -0,0 +1,407 @@ +/* + * 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 java.io.IOException; +import java.nio.file.FileSystems; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import love.distributedrebirth.nx01.kode.generator.KodeGenModel; +import love.distributedrebirth.nx01.kode.generator.klass.ModelKlass; +import love.distributedrebirth.nx01.kode.generator.klass.ModelKlassWriter; +import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.NetherToneSlugView; + +/// Generated the nether lingua interface tree forest. +/// +/// @author للَّٰهِilLצسُو +/// @version ©Δ∞ 仙上主天 +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() { + return "nether-dial-lingua"; + } + + @Override + public String generatorModelHash() { + return "3"; + } + + @Override + public void buildModels(ModelKlassWriter writer) throws IOException { + // Load and convert lingua + List linguaEntries = loadLinguaEntries(); + List netherSlugs = convertLinguaEntries(linguaEntries); + System.out.println("Lingua entries: " + linguaEntries.size() + " converted: " + netherSlugs.size()); + + // add top root entry for defaults of all other languages + int[] d = new int[11]; + d[0] = LINGUA_AG1; + d[1] = LINGUA_AG2; + d[2] = LINGUA_AG3; + d[3] = 512 - 1; // 0x1FF + d[4] = 64 - 1; + d[5] = 64 - 1; + d[6] = 64 - 1; + d[7] = 64 - 1; + d[8] = 64 - 1; + d[9] = 64 - 1; + d[10] = 0; + NetherToneSlugView slugRoot = new NetherToneSlugView(d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7], d[8], d[9], d[10]); + netherSlugs.add(new NetherSlugNamed("FF-ZZZ-zzz", "Undefined-root", slugRoot)); + + // Group per package + Map>> splitSlugs = new HashMap<>(); + for (NetherSlugNamed slug : netherSlugs) { + int split3Package = slug.view().bl0w() >> 6; // 8 package + int split6PackageFile = slug.view().bl0w() & 0b111111; // with 64 files + // we can't split a hinary9 char , changes as it big indian char...so dots for now + String subPackage = writer.buildPackageInuktitutDots(split3Package, 3); + String filePackage = writer.buildPackageInuktitutDots(split6PackageFile, 6); + Map> map = splitSlugs.get(subPackage); + if (map == null) { + map = new HashMap<>(); + splitSlugs.put(subPackage, map); + } + List list = map.get(filePackage); + if (list == null) { + list = new ArrayList<>(); + map.put(filePackage, list); + } + list.add(slug); + } + + // Build model classes + for (String pack : splitSlugs.keySet()) { + Map> map = splitSlugs.get(pack); + for (String file : map.keySet()) { + List list = map.get(file); + String javaName = "ᐃ" + file; + ModelKlass klass = new ModelKlass(BASE_PACK + "." + pack, javaName); + klass.addJavaDescription("Lingua set of supported human text and vocal dialects for terminators."); + klass.addJavaDescription("Keyed by the: Observatoire Human Linguistique"); + writer.addModelKlass(klass); + StringBuilder buf = klass.getBody(); + buf.append("public interface "); + buf.append(javaName); + buf.append(" {\n"); + for (NetherSlugNamed slug : list) { + List> tones = slug.view().toNetherTones(0); + for (Class tone : tones) { + klass.addJavaImport(tone.getDeclaringClass().getName()); // auto dedup + } + String humanKlassPart = slug.linguaName(); + humanKlassPart = humanKlassPart.replaceAll("\\-", "ᐧ"); + humanKlassPart = humanKlassPart.replaceAll("\\+", "ᐧ"); + humanKlassPart = humanKlassPart.replaceAll("\\'", "ᣞ"); + humanKlassPart = humanKlassPart.replaceAll("\\&", "ᖃ"); + humanKlassPart = humanKlassPart.replaceAll("\\.", ""); + humanKlassPart = humanKlassPart.replaceAll(" ", ""); + String slugName = "ᐊ" + slug.view().toNúmero2Lingua("ᣞ") + "ᐅ" + humanKlassPart; + buf.append("\t/// "); + buf.append(slug.linguaKey); + buf.append("\n"); + buf.append("\t"); + buf.append("interface "); + buf.append(slugName); + buf.append(" extends "); + for (Iterator> i = tones.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("}\n"); + } + } + } + + record NetherSlugNamed(String linguaKey, String linguaName, NetherToneSlugView view) { + } + + private List convertLinguaEntries(List linguaEntries) { + List result = new ArrayList<>(linguaEntries.size()); + for (String line : linguaEntries) { + int spaceIndex = line.indexOf(" "); + String key = line.substring(0, spaceIndex).trim(); + String value = line.substring(spaceIndex+1, line.length()); + if (key.length() == 2) { + continue; // 1= + } + if (key.contains("=")) { + continue; + } + String[] s = key.toUpperCase().split("-"); + String key1 = ""; + String key2 = ""; + String key3 = ""; + if (s.length == 1) { + key1 = s[0]; + } else if (s.length == 2) { + key1 = s[0]; + key2 = s[1]; + } else if (s.length == 3) { + key1 = s[0]; + key2 = s[1]; + key3 = s[2]; + } else { + continue; + } + int ag1 = LINGUA_AG1; + int ag2 = LINGUA_AG2; + int ag3 = LINGUA_AG3; + int bl0w = 1+Integer.parseInt(key1, 16); + int cr1 = key2.length()<1?0:1+key2.charAt(0) - 'A'; // A = 1 + int cr2 = key2.length()<2?0:1+key2.charAt(1) - 'A'; + int cr3 = key2.length()<3?0:1+key2.charAt(2) - 'A'; + int db1 = key3.length()<1?0:1+key3.charAt(0) - 'A'; + int db2 = key3.length()<2?0:1+key3.charAt(1) - 'A'; + int db3 = key3.length()<3?0:1+key3.charAt(2) - 'A'; + int er0w = !key3.endsWith("+")?0:1; + try { + NetherToneSlugView slug = new NetherToneSlugView(ag1, ag2, ag3, bl0w, cr1, cr2, cr3, db1, db2, db3, er0w); + NetherSlugNamed slugNamed = new NetherSlugNamed(key, value, slug); + result.add(slugNamed); + } catch (IllegalArgumentException e) { + throw new IllegalArgumentException("key: " + key, e); + } + } + return result; + } + + private List loadLinguaEntries() throws IOException { + List ext = new ArrayList<>(); + Path path = FileSystems.getDefault().getPath("src/test/resources", "lingua-lines.txt"); + List lines = Files.lines(path).collect(Collectors.toList()); + ext.addAll(lines); // 00-99 (decimals but used as hex thus 0x99 = 153) + + ext.add("52-ACB-aed+ Amersfoorts"); + ext.add("52-ACB-aee+ Spaokenburgs"); + ext.add("12-AAC-eaj+ Native Hiero"); + ext.add("12-AAB-abe+ Hinarī"); + + // Done manual, as this should be 1FF(512) to align 9b slug part + //ext.add("FF= Internal voidzone"); + //ext.add("FF-ZZZ-zzz Undefined rootzone"); + + ext.sort(new Comparator() { + @Override + public int compare(String arg0, String arg1) { + String s0 = arg0.substring(0, arg0.indexOf(" ")); + String s1 = arg1.substring(0, arg1.indexOf(" ")); + return s0.compareTo(s1); + } + }); + return ext; +// // NOTE: OLD ideas below and one day these needs to be "reslugged" and placed somewhere in octal nether tree +// +// +// // ------ Manually created human languages +// +// ext.add("A0= Invented phylozone"); // TODO: redo this new node namespace tree schema fully out +// ext.add("A0-A From book"); +// ext.add("A0-B From TV"); +// ext.add("A0-BA Movie"); +// ext.add("A0-BB Serie"); +// ext.add("A0-BBA Startrek"); +// ext.add("A0-BBA-a+ Klingon"); +// ext.add("A0-BC Documentary"); +// ext.add("A0-C For Cult"); +// ext.add("A0-CA World Language"); +// ext.add("A0-CAA+ Interlingue (Occidental)"); +// ext.add("A0-D For Religion"); +// ext.add("A0-E For Country"); +// ext.add("A0-EA For Ghanaian"); +// ext.add("A0-EAA+ Afrihili"); +// ext.add("A0-EB For Malawi"); +// ext.add("A0-EBA+ Malawian Sign Language"); +// +// // ------ music languages +// +// ext.add("B0= Music script phylozone"); +// +// // ------ Reserved for future use +// +// //ext.add("B0= Unused voidzone"); +// //... +// //ext.add("CE= Unused voidzone"); +// +// // ------ computer hardware +// +// ext.add("CF= Control Freak codezone"); // CFengine was written by a control freak +// ext.add("CF-A Cpu devices"); // mmu, dma, blitter, vdp, oplX, nic +// ext.add("CF-AA 1bit"); +// ext.add("CF-AAA Motorola"); +// ext.add("CF-AAA-a MC14500B"); +// ext.add("CF-AB 2bit"); +// ext.add("CF-AC 3bit"); +// ext.add("CF-AD 4bit"); +// ext.add("CF-AE 8bit"); // data-bus +// ext.add("CF-AEA intel"); +// ext.add("CF-AEA-a i8080"); +// ext.add("CF-AEA-b i8088"); +// ext.add("CF-AEB Zilog"); +// ext.add("CF-AEB-a z80"); +// ext.add("CF-AEB-b z180"); +// ext.add("CF-AEB-c eZ80"); +// // note: check for all cpu's between 8 and 16 bit... +// ext.add("CF-AF 16bit"); +// ext.add("CF-AFA Intel"); +// ext.add("CF-AFA-a i8086"); +// // 18,21,24,36 bits ? +// ext.add("CF-AG 32bit"); +// ext.add("CF-AH 64bit"); +// ext.add("CF-AI 128bit"); +// ext.add("CF-AJ 144bit"); +// +// // ------ computer language abc index +// // TODO: maybe better to redo to numbered categories just like rest of registry +// +// ext.add("D0= Computer codezone"); +// +// ext.add("D0-A Computer A"); +// ext.add("D0-AB Computer AB"); +// ext.add("D0-ABC Computer ABC"); +// ext.add("D0-AL Computer AL"); +// ext.add("D0-ALG Computer ALG"); +// ext.add("D0-S Computer S"); +// ext.add("D0-SI Computer SI"); +// ext.add("D0-SIM Computer SIM"); +// ext.add("D0-V Computer V"); +// ext.add("D0-VH Computer VH"); +// ext.add("D0-VHD Computer VHD"); +// ext.add("D0-T Computer T"); +// ext.add("D0-TC Computer TC"); +// ext.add("D0-TCL Computer TCL"); +// +// // --------- languages +// +// ext.add("D0-ALG-a ALGOL"); +// ext.add("D0-ALG-aa ALGOL 60"); +// ext.add("D0-ALG-ab ALGOL 68"); +// ext.add("D0-ALG-ac ALGOL W"); +// +// ext.add("D0-SIM-a Simula"); +// ext.add("D0-SIM-aa Simula 1"); +// ext.add("D0-SIM-ab Simula 67"); +// +// // Terminators run on VHDL +// ext.add("D0-VHD-a VHDL"); +// ext.add("D0-VHD-aa IEEE 1076 Language"); +// ext.add("D0-VHD-aaa 1076-1987"); +// ext.add("D0-VHD-aab 1076-1993"); +// ext.add("D0-VHD-aac 1076-2000"); +// ext.add("D0-VHD-aad 1076-2002"); +// ext.add("D0-VHD-aae 1076c-2007"); +// ext.add("D0-VHD-aaf 1076-2008"); +// ext.add("D0-VHD-aag 1076-2019"); +// ext.add("D0-VHD-ab IEEE 1076 Packages"); +// ext.add("D0-VHD-aba 1076.1 VHDL Analog and Mixed-Signal (VHDL-AMS)"); +// ext.add("D0-VHD-abb 1076.1.1 VHDL-AMS Standard Packages (stdpkgs)"); +// ext.add("D0-VHD-abc 1076.2 VHDL Math Package"); +// ext.add("D0-VHD-abd 1076.3 VHDL Synthesis Package (vhdlsynth) (numeric std)"); +// ext.add("D0-VHD-abe 1076.3 VHDL Synthesis Package – Floating Point (fphdl)"); +// ext.add("D0-VHD-abf 1076.4 Timing (VHDL Initiative Towards ASIC Libraries: vital)"); +// ext.add("D0-VHD-abg 1076.6 VHDL Synthesis Interoperability (withdrawn in 2010)"); +// ext.add("D0-VHD-ac IEEE 1164 Extension"); +// ext.add("D0-VHD-aca 1164 VHDL Multivalue Logic (std_logic_1164) Packages"); +// +// ext.add("D0-TCL-a Tcl Tool command language"); +// ext.add("D0-TCL-aa Tcl/Tk"); +// ext.add("D0-TCL-ab Tcl 8"); +// ext.add("D0-TCL-aba Tcl 8.0 1997"); +// ext.add("D0-TCL-abb Tcl 8.1 1999"); +// ext.add("D0-TCL-abc Tcl 8.2 1999"); +// ext.add("D0-TCL-abd Tcl 8.4 2002"); +// ext.add("D0-TCL-abe Tcl 8.5 2007"); +// ext.add("D0-TCL-abf Tcl 8.6 2012"); +// +// // ------ Text formats +// ext.add("D1= Text format codezone"); +// ext.add("D1-X Computer X"); +// ext.add("D1-XM Computer XM"); +// ext.add("D1-XML Computer XML"); +// ext.add("D1-XML-a XML Container"); +// ext.add("D1-XML-aa XML version 1.0"); +// ext.add("D1-XML-ab XML version 1.1"); +// +// // ------ Binary formats +// ext.add("D2= Binary format codezone"); +// ext.add("D2-T Computer T"); +// ext.add("D2-TT Computer TT"); +// ext.add("D2-TTF Computer TTF"); +// ext.add("D2-TTF-a TrueType"); +// ext.add("D2-TTF-aa TrueType apple"); +// ext.add("D2-TTF-ab TrueType color garbage"); +// +// // ------ Ternary formats +// ext.add("D3= Ternary format codezone"); +// ext.add("D3-D Computer D"); +// ext.add("D3-DA Computer DA"); +// ext.add("D3-DAT Computer DAT"); +// ext.add("D3-DAT-a DAT network"); +// ext.add("D3-DAT-aa DATv1 bundle"); +// ext.add("D3-DAT-aaa DATv1 discovery"); +// ext.add("D3-DAT-aab DATv1 swarm"); +// +// // ------ Others +// ext.add("E0= Encodings codezone"); +// ext.add("E1= Math mathzone"); +// ext.add("E2= Geometry mathzone"); +// +// ext.add("EC= Elementory chemistry mathzone"); +// ext.add("EC-A Matter"); +// ext.add("EC-AA Atom"); +// ext.add("EC-AAA hydrogen"); +// ext.add("EC-AAA-a ¹H"); +// ext.add("EC-AAA-b ²H"); +// ext.add("EC-AAA-c ³H"); +// ext.add("EC-AAA-d ⁴H"); +// ext.add("EC-AAA-e ⁵H"); +// ext.add("EC-AAA-f ⁶H"); +// ext.add("EC-AAA-g ⁷H"); + } +} diff --git a/nx01-jpp-nether-dial-lingua/src/test/resources/META-INF/services/love.distributedrebirth.nx01.kode.generator.KodeGenModel b/nx01-jpp-nether-dial-lingua/src/test/resources/META-INF/services/love.distributedrebirth.nx01.kode.generator.KodeGenModel new file mode 100644 index 0000000..204beac --- /dev/null +++ b/nx01-jpp-nether-dial-lingua/src/test/resources/META-INF/services/love.distributedrebirth.nx01.kode.generator.KodeGenModel @@ -0,0 +1 @@ +ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᒄᑊᣔᒻ.ᒻᑊᣕᕐᓑᣔ.ModelDialLingua \ No newline at end of file diff --git a/nx01-jpp-base/src/test/resources/lingua-lines.txt b/nx01-jpp-nether-dial-lingua/src/test/resources/lingua-lines.txt similarity index 100% rename from nx01-jpp-base/src/test/resources/lingua-lines.txt rename to nx01-jpp-nether-dial-lingua/src/test/resources/lingua-lines.txt diff --git a/nx01-jpp-nether-tone/pom.xml b/nx01-jpp-nether-tone/pom.xml index 479ea6f..df3a133 100644 --- a/nx01-jpp-nether-tone/pom.xml +++ b/nx01-jpp-nether-tone/pom.xml @@ -33,7 +33,7 @@ - ${project.build.directory}/generated-sources/ + ${project.build.directory}/kode-nether-tone @@ -55,7 +55,7 @@ failonerror="true"> - + diff --git a/nx01-jpp-nether-tone/src/main/java/module-info.java b/nx01-jpp-nether-tone/src/main/java/module-info.java index c845f31..fccd265 100644 --- a/nx01-jpp-nether-tone/src/main/java/module-info.java +++ b/nx01-jpp-nether-tone/src/main/java/module-info.java @@ -29,5 +29,6 @@ /// @author للَّٰهِilLצسُو /// @version ©Δ∞ 仙上主天 module jpp.nether.tone { - + exports ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ; + exports ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ; } diff --git a/nx01-jpp-nether-tone/src/main/java/ᒢᐩᐩ/ᣕᓫᐪᑋᓫᣗ/ᐪᐤᣕᓫ/NetherToneSlugView.java b/nx01-jpp-nether-tone/src/main/java/ᒢᐩᐩ/ᣕᓫᐪᑋᓫᣗ/ᐪᐤᣕᓫ/NetherToneSlugView.java index c22c11b..844b62e 100644 --- a/nx01-jpp-nether-tone/src/main/java/ᒢᐩᐩ/ᣕᓫᐪᑋᓫᣗ/ᐪᐤᣕᓫ/NetherToneSlugView.java +++ b/nx01-jpp-nether-tone/src/main/java/ᒢᐩᐩ/ᣕᓫᐪᑋᓫᣗ/ᐪᐤᣕᓫ/NetherToneSlugView.java @@ -48,6 +48,53 @@ public record NetherToneSlugView( int er0w ) { + public NetherToneSlugView { + if (ag1 < 0 || ag1 > 63) { throw new IllegalArgumentException("ag1: " + ag1); } + if (ag2 < 0 || ag2 > 63) { throw new IllegalArgumentException("ag2: " + ag2); } + if (ag3 < 0 || ag3 > 63) { throw new IllegalArgumentException("ag3: " + ag3); } + if (bl0w < 0 || bl0w > 511) { throw new IllegalArgumentException("bl0w: " + bl0w); } + if (cr1 < 0 || cr1 > 63) { throw new IllegalArgumentException("cr1: " + cr1); } + if (cr2 < 0 || cr2 > 63) { throw new IllegalArgumentException("cr2: " + cr2); } + if (cr3 < 0 || cr3 > 63) { throw new IllegalArgumentException("cr3: " + cr3); } + if (db1 < 0 || db1 > 63) { throw new IllegalArgumentException("db1: " + db1); } + if (db2 < 0 || db2 > 63) { throw new IllegalArgumentException("db2: " + db2); } + if (db3 < 0 || db3 > 63) { throw new IllegalArgumentException("db3: " + db3); } + if (er0w < 0 || er0w > 511) { throw new IllegalArgumentException("er0w: " + er0w); } + } + + private final static String VALUES_3 = "\u05D3\u05D5\u05D6\u05D9\u05E8\u05F0\u05F1\u05F2"; + private final static String VALUES_6 = "\u05B0\u05B2\u05B3\u05B5\u05B6\u05B7\u05BB\u05BD"; + private final static String VALUES_9 = "\u0594\u0595\u0598\u059D\u059E\u059F\u05A0\u05A9"; + private void printNúmero2Lingua6(StringBuilder buf, int value) { + buf.appendCodePoint(VALUES_3.codePoints().skip((value >> 3) & 7).findFirst().getAsInt()); + buf.appendCodePoint(VALUES_6.codePoints().skip((value >> 0) & 7).findFirst().getAsInt()); + } + private void printNúmero2Lingua9(StringBuilder buf, int value) { + buf.appendCodePoint(VALUES_3.codePoints().skip((value >> 6) & 7).findFirst().getAsInt()); + buf.appendCodePoint(VALUES_6.codePoints().skip((value >> 3) & 7).findFirst().getAsInt()); + buf.appendCodePoint(VALUES_9.codePoints().skip((value >> 0) & 7).findFirst().getAsInt()); + } + + public String toNúmero2Lingua(String seperator) { + StringBuilder buf = new StringBuilder(); + printNúmero2Lingua6(buf, ag1);buf.append(seperator); + printNúmero2Lingua6(buf, ag2);buf.append(seperator); + printNúmero2Lingua6(buf, ag3);buf.append(seperator); + printNúmero2Lingua9(buf, bl0w);buf.append(seperator); + printNúmero2Lingua6(buf, cr1);buf.append(seperator); + printNúmero2Lingua6(buf, cr2);buf.append(seperator); + printNúmero2Lingua6(buf, cr3);buf.append(seperator); + printNúmero2Lingua6(buf, db1);buf.append(seperator); + printNúmero2Lingua6(buf, db2);buf.append(seperator); + printNúmero2Lingua6(buf, db3);buf.append(seperator); + printNúmero2Lingua9(buf, er0w); + return buf.toString(); + } + + public String toNúmero2Lingua() { + return toNúmero2Lingua(""); + } + public List> toNetherTones(int idx) { Class qClass = qClass(idx); List> result = new ArrayList<>(11); diff --git a/nx01-jpp-nether-tone/src/test/java/ᒢᐩᐩ/ᣕᓫᐪᑋᓫᣗ/ᐪᐤᣕᓫ/ModelNetherTones.java b/nx01-jpp-nether-tone/src/test/java/ᒢᐩᐩ/ᣕᓫᐪᑋᓫᣗ/ᐪᐤᣕᓫ/ModelNetherTones.java index b9afac9..bdb1854 100644 --- a/nx01-jpp-nether-tone/src/test/java/ᒢᐩᐩ/ᣕᓫᐪᑋᓫᣗ/ᐪᐤᣕᓫ/ModelNetherTones.java +++ b/nx01-jpp-nether-tone/src/test/java/ᒢᐩᐩ/ᣕᓫᐪᑋᓫᣗ/ᐪᐤᣕᓫ/ModelNetherTones.java @@ -27,6 +27,7 @@ package ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ; +import java.io.IOException; import java.util.Iterator; import java.util.stream.Stream; @@ -43,25 +44,34 @@ public class ModelNetherTones implements KodeGenModel { private final String BASE_PACK = "ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ"; @Override - public String generatorName() { - return "nether-tones"; + public String generatorKey() { + return "nether-tone"; } @Override - public void buildModels(ModelKlassWriter writer) { - buildQuadrants(writer, 1, "ᐧᐧᐧ"); - buildQuadrants(writer, 2, "ᐧᐧᣟ"); - buildQuadrants(writer, 3, "ᐧᣟᐧ"); - buildQuadrants(writer, 4, "ᐧᣟᣟ"); - buildQuadrants(writer, 5, "ᣟᐧᐧ"); - buildQuadrants(writer, 6, "ᣟᐧᣟ"); - buildQuadrants(writer, 7, "ᣟᣟᐧ"); - buildQuadrants(writer, 8, "ᣟᣟᣟ"); + public String generatorModelHash() { + return "15"; + } + + @Override + public void buildModels(ModelKlassWriter writer) throws IOException { + + // 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); buildNetherQuadrant(writer, "NetherTone", "NetherToneQ", false); } - private void buildQuadrants(ModelKlassWriter writer, int quadrant, String s) { + private void buildQuadrants(ModelKlassWriter writer, int quadrant) { + String s = writer.buildPackageInuktitutDots(quadrant - 1, 3); String q = "ᐊQ" + quadrant; String e = "NetherToneQ" + quadrant; @@ -90,8 +100,11 @@ public class ModelNetherTones implements KodeGenModel { buf.append(" extends "); buf.append(quadrant); buf.append(" {\n"); - for (int i = 1 ; i <= slugSize; i++) { + for (int i = 0 ; i < slugSize; i++) { String partCode = "ᐅ" + String.format("%03d", i); + if (slugSize < 100) { + partCode = "ᐅ" + String.format("%02d", i); + } String clsBase = partCode + " extends " + klass.getJavaName(); String clsMutexExt = ", " + javaName + "Mutex<" + partCode + ">"; buf.append("\tnon-sealed interface " + clsBase + clsMutexExt + " {}\n"); diff --git a/nx01-jpp-nether-tone/src/test/java/ᒢᐩᐩ/ᣕᓫᐪᑋᓫᣗ/ᐪᐤᣕᓫ/NetherToneSlugViewTest.java b/nx01-jpp-nether-tone/src/test/java/ᒢᐩᐩ/ᣕᓫᐪᑋᓫᣗ/ᐪᐤᣕᓫ/NetherToneSlugViewTest.java index 87ab988..9ca80b6 100644 --- a/nx01-jpp-nether-tone/src/test/java/ᒢᐩᐩ/ᣕᓫᐪᑋᓫᣗ/ᐪᐤᣕᓫ/NetherToneSlugViewTest.java +++ b/nx01-jpp-nether-tone/src/test/java/ᒢᐩᐩ/ᣕᓫᐪᑋᓫᣗ/ᐪᐤᣕᓫ/NetherToneSlugViewTest.java @@ -43,28 +43,27 @@ import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1DB1; import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1DB2; import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1DB3; import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1ER0W; -import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.NetherToneSlugView; public class NetherToneSlugViewTest { private interface Q1SlugExample extends - ᐊQ1AG1.ᐅ001, - ᐊQ1AG2.ᐅ002, - ᐊQ1AG3.ᐅ003, - ᐊQ1BL0W.ᐅ004, - ᐊQ1CR1.ᐅ005, - ᐊQ1CR2.ᐅ006, - ᐊQ1CR3.ᐅ007, - ᐊQ1DB1.ᐅ008, - ᐊQ1DB2.ᐅ009, - ᐊQ1DB3.ᐅ010, - ᐊQ1ER0W.ᐅ011 + ᐊQ1AG1.ᐅ00, + ᐊQ1AG2.ᐅ01, + ᐊQ1AG3.ᐅ02, + ᐊQ1BL0W.ᐅ003, + ᐊQ1CR1.ᐅ04, + ᐊQ1CR2.ᐅ05, + ᐊQ1CR3.ᐅ06, + ᐊQ1DB1.ᐅ07, + ᐊQ1DB2.ᐅ08, + ᐊQ1DB3.ᐅ09, + ᐊQ1ER0W.ᐅ010 { } private interface Q1SlugExampleErr extends - ᐊQ1AG1.ᐅ001, - ᐊQ1AG2.ᐅ002 + ᐊQ1AG1.ᐅ00, + ᐊQ1AG2.ᐅ01 { } @@ -91,8 +90,8 @@ public class NetherToneSlugViewTest { Assertions.assertNotNull(slug); List> result = slug.toNetherTones(0); Assertions.assertNotNull(result); - Assertions.assertEquals(ᐊQ1AG1.ᐅ001.class, result.get(0)); - Assertions.assertEquals(ᐊQ1AG2.ᐅ002.class, result.get(1)); - Assertions.assertEquals(ᐊQ1AG3.ᐅ003.class, result.get(2)); + Assertions.assertEquals(ᐊQ1AG1.ᐅ00.class, result.get(0)); + Assertions.assertEquals(ᐊQ1AG2.ᐅ01.class, result.get(1)); + Assertions.assertEquals(ᐊQ1AG3.ᐅ02.class, result.get(2)); } } diff --git a/nx01-kode-gen/src/main/java/love/distributedrebirth/nx01/kode/generator/KodeGen.java b/nx01-kode-gen/src/main/java/love/distributedrebirth/nx01/kode/generator/KodeGen.java index 877690c..ea0158e 100644 --- a/nx01-kode-gen/src/main/java/love/distributedrebirth/nx01/kode/generator/KodeGen.java +++ b/nx01-kode-gen/src/main/java/love/distributedrebirth/nx01/kode/generator/KodeGen.java @@ -31,6 +31,7 @@ import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; +import java.util.Comparator; import java.util.Iterator; import java.util.ServiceLoader; @@ -42,8 +43,6 @@ import love.distributedrebirth.nx01.kode.generator.klass.ModelKlassWriter; /// @version ©Δ∞ 仙上主天 public class KodeGen { - private final static String SERIAL_VERSON_ID = "13"; - public static void main(String[] args) throws IOException { if (args.length == 0) { System.err.println("No command given."); @@ -61,14 +60,22 @@ public class KodeGen { if (args.length > 1 && "generate".equals(args[1])) { writeToFile = true; } - if (skipCommand()) { + if (modelHashValid(commandKode)) { System.out.println("SKIPPED: Generated source are up to date"); return; } // write all sources to files or stdout - String commandDesc = commandKode.generatorName(); + File outputFolder = new File("target/kode-" + commandKode.generatorKey()); + if (!outputFolder.exists()) { + outputFolder.mkdir(); + } + Iterator cleaner = Files.walk(outputFolder.toPath()).sorted(Comparator.reverseOrder()).iterator(); + while (cleaner.hasNext()) { + Files.deleteIfExists(cleaner.next()); + } + String commandDesc = commandKode.generatorKey(); System.out.println("Generating " + commandDesc); - ModelKlassWriter writer = new ModelKlassWriter("target/generated-sources"); + ModelKlassWriter writer = new ModelKlassWriter(outputFolder.toPath()); writer.setProlog(new File("../licence.txt")); commandKode.buildModels(writer); writer.printModels(writeToFile); @@ -79,22 +86,30 @@ public class KodeGen { Iterator models = ServiceLoader.load(KodeGenModel.class).iterator(); while (models.hasNext()) { KodeGenModel model = models.next(); - if (model.generatorName().equals(generatorName)) { + if (model.generatorKey().contains(" ")) { + continue; + } + if (model.generatorKey().equals(generatorName)) { return model; } } return null; } - private static boolean skipCommand() throws IOException { - Path hashFile = new File("target/generated-sources.hash").toPath(); + private static boolean modelHashValid(KodeGenModel commandKode) throws IOException { + File versionFolder = new File("target/maven-status/kode-version"); + if (!versionFolder.exists()) { + versionFolder.mkdirs(); + } + Path hashFile = new File(versionFolder, commandKode.generatorKey() + ".hash").toPath(); + String generatorModelHash = commandKode.generatorModelHash(); if (hashFile.toFile().exists()) { String hash = Files.readString(hashFile); - if (SERIAL_VERSON_ID.equals(hash)) { + if (generatorModelHash.equals(hash)) { return true; } } - Files.writeString(hashFile, SERIAL_VERSON_ID); + Files.writeString(hashFile, generatorModelHash); return false; } } diff --git a/nx01-kode-gen/src/main/java/love/distributedrebirth/nx01/kode/generator/KodeGenModel.java b/nx01-kode-gen/src/main/java/love/distributedrebirth/nx01/kode/generator/KodeGenModel.java index a8afa5b..fe26e8c 100644 --- a/nx01-kode-gen/src/main/java/love/distributedrebirth/nx01/kode/generator/KodeGenModel.java +++ b/nx01-kode-gen/src/main/java/love/distributedrebirth/nx01/kode/generator/KodeGenModel.java @@ -27,6 +27,8 @@ package love.distributedrebirth.nx01.kode.generator; +import java.io.IOException; + import love.distributedrebirth.nx01.kode.generator.klass.ModelKlassWriter; /// Configure the model for the writer. @@ -35,7 +37,12 @@ import love.distributedrebirth.nx01.kode.generator.klass.ModelKlassWriter; /// @version ©Δ∞ 仙上主天 public interface KodeGenModel { - String generatorName(); + String generatorKey(); - void buildModels(ModelKlassWriter writer); + // Rebuild this model too if any deps is rebuild + //String[] generatorModelDeps(); + + String generatorModelHash(); + + void buildModels(ModelKlassWriter writer) throws IOException; } diff --git a/nx01-kode-gen/src/main/java/love/distributedrebirth/nx01/kode/generator/klass/ModelKlassWriter.java b/nx01-kode-gen/src/main/java/love/distributedrebirth/nx01/kode/generator/klass/ModelKlassWriter.java index 2ae925f..0764e49 100644 --- a/nx01-kode-gen/src/main/java/love/distributedrebirth/nx01/kode/generator/klass/ModelKlassWriter.java +++ b/nx01-kode-gen/src/main/java/love/distributedrebirth/nx01/kode/generator/klass/ModelKlassWriter.java @@ -29,7 +29,6 @@ package love.distributedrebirth.nx01.kode.generator.klass; import java.io.File; import java.io.IOException; -import java.nio.file.FileSystems; import java.nio.file.Files; import java.nio.file.Path; import java.util.ArrayList; @@ -47,8 +46,8 @@ public class ModelKlassWriter { private File prolog; private Path outputPath; - public ModelKlassWriter(String outputPath) { - this.outputPath = FileSystems.getDefault().getPath(Objects.requireNonNull(outputPath)); + public ModelKlassWriter(Path outputPath) { + this.outputPath = Objects.requireNonNull(outputPath); } public void setProlog(File prolog) { @@ -129,4 +128,11 @@ public class ModelKlassWriter { buf.append("/// @author للَّٰهِilLצسُو\n"); buf.append("/// @version ©Δ∞ 仙上主天\n"); } + + public String buildPackageInuktitutDots(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", "ᣟ"); + return result; + } } diff --git a/src/site/wigiti/README-no2lingua.md b/src/site/wigiti/README-no2lingua.md index 1e92e32..bd490ea 100644 --- a/src/site/wigiti/README-no2lingua.md +++ b/src/site/wigiti/README-no2lingua.md @@ -158,36 +158,39 @@ Extend octal aligned; <6><6><6>-<9>-<6><6><6>-<6><6><6>-<9> = 72 bits ---- space id 6 bit; - - 0-31 = locked by legacy (key input, if ascii try old human key converter) + - 0 = null + - 1-31 = locked by legacy (key input, if ascii try old human key converter) - 32 = sage master system version space 0x20 - 33+ = reserved for major schema version upgrades sub space id 6 bit; - - 0-31 = reserved for metatron Atari AI - - 32 = No2Lingua sub space for local and remote (generic core language) - - 33 = No2Lingua App Remote (NoStr relay remote signed apps) - - 34 = No2Lingua App Local (NoStr local application coded in N2L) - - 35+ = reserved for furture use + - 0 = null + - 1-31 = reserved for metatron Atari AI + - 33 = No2Lingua sub space + - 34+ = reserved for furture use ether space id 6 bit; - - 0 = Default impl version - - 1+ = Alternative api version for libs + - 0 = null + - 34 = Locale ether slugs space sector+zone 9 bit; - - 0-255 = Classic hex zone Id + sector Id - - 256+ = free + - 0 = null + - 1-511 = Classic hex zone Id + sector Id (one based) Set of 6 bit - - 0 = "A" index value of ascii upper case + - 0 = null + - 1 = "A" index value of ascii upper case - Z+ = locked by legacy - 63 = no value Set of 6 bit - - 0 = "a" index value of ascii lower case + - 0 = null + - 1 = "a" index value of ascii lower case - z+ = locked by legacy - 63 = no value Flags as 9 bit + - 0 = null - bit 0 = '+' indicate 'new' type key (temp RFC number) - bit 1 = '-' indicate private type key (refuse in public api's) - bit 2-7 = free