From 1c699c4c1b51e92de9a7fdc3adc3463129e0bf26 Mon Sep 17 00:00:00 2001 From: Willem Date: Wed, 28 Jan 2026 00:00:22 +0100 Subject: [PATCH] JPP: dial lingua removed hex encoding and sealed and split nether tones --- .../src/main/java/module-info.java | 1 - .../ᣕᓫᐪᑋᓫᣗ/ᒄᑊᣔᒻ/ᒻᑊᣕᕐᓑᣔ/ModelDialLingua.java | 37 ++++++++++++++----- src/site/wigiti/README-no2lingua.md | 12 ++---- 3 files changed, 31 insertions(+), 19 deletions(-) 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 index 04e0e0f..c3e7151 100644 --- a/nx01-jpp-nether-dial-lingua/src/main/java/module-info.java +++ b/nx01-jpp-nether-dial-lingua/src/main/java/module-info.java @@ -34,6 +34,5 @@ open module jpp.nether.dial.lingua { //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 index dd18237..c5e012f 100644 --- a/nx01-jpp-nether-dial-lingua/src/test/java/ᒢᐩᐩ/ᣕᓫᐪᑋᓫᣗ/ᒄᑊᣔᒻ/ᒻᑊᣕᕐᓑᣔ/ModelDialLingua.java +++ b/nx01-jpp-nether-dial-lingua/src/test/java/ᒢᐩᐩ/ᣕᓫᐪᑋᓫᣗ/ᒄᑊᣔᒻ/ᒻᑊᣕᕐᓑᣔ/ModelDialLingua.java @@ -62,7 +62,7 @@ public class ModelDialLingua implements KodeGenModel { @Override public String generatorModelHash() { - return "3"; + return "4"; } @Override @@ -114,20 +114,34 @@ public class ModelDialLingua implements KodeGenModel { Map> map = splitSlugs.get(pack); for (String file : map.keySet()) { List list = map.get(file); + if (list.isEmpty()) { + continue; + } + NetherSlugNamed slugTpl = list.get(0); + List> tonesTpl = slugTpl.view().toNetherTones(0); String javaName = "ᐃ" + file; ModelKlass klass = new ModelKlass(BASE_PACK + "." + pack, javaName); + for (Class tone : tonesTpl) { + klass.addJavaImport(tone.getDeclaringClass().getName()); // auto dedup + } 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("public sealed interface "); buf.append(javaName); + buf.append(" extends "); + for (Iterator> i = tonesTpl.subList(0, 4).iterator(); i.hasNext() ;) { + Class toneClass = i.next(); + buf.append(toneClass.getDeclaringClass().getSimpleName()); + buf.append("."); + buf.append(toneClass.getSimpleName()); + if (i.hasNext()) { + buf.append(", "); + } + } buf.append(" {\n"); for (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("\\+", "ᐧ"); @@ -140,16 +154,19 @@ public class ModelDialLingua implements KodeGenModel { buf.append(slug.linguaKey); buf.append("\n"); buf.append("\t"); - buf.append("interface "); + buf.append("non-sealed interface "); buf.append(slugName); buf.append(" extends "); - for (Iterator> i = tones.iterator(); i.hasNext() ;) { + buf.append(javaName); + buf.append(", "); + List> tones = slug.view().toNetherTones(0); + for (Iterator> i = tones.subList(4, tones.size()).iterator(); i.hasNext() ;) { Class toneClass = i.next(); buf.append(toneClass.getDeclaringClass().getSimpleName()); buf.append("."); buf.append(toneClass.getSimpleName()); if (i.hasNext()) { - buf.append(","); + buf.append(", "); } } buf.append(" {}\n"); @@ -193,7 +210,7 @@ public class ModelDialLingua implements KodeGenModel { int ag1 = LINGUA_AG1; int ag2 = LINGUA_AG2; int ag3 = LINGUA_AG3; - int bl0w = 1+Integer.parseInt(key1, 16); + int bl0w = 1+Integer.parseInt(key1); int cr1 = key2.length()<1?0:1+key2.charAt(0) - 'A'; // A = 1 int cr2 = key2.length()<2?0:1+key2.charAt(1) - 'A'; int cr3 = key2.length()<3?0:1+key2.charAt(2) - 'A'; diff --git a/src/site/wigiti/README-no2lingua.md b/src/site/wigiti/README-no2lingua.md index bd490ea..97ffe00 100644 --- a/src/site/wigiti/README-no2lingua.md +++ b/src/site/wigiti/README-no2lingua.md @@ -132,10 +132,6 @@ Tree key format; DIFF with orignal lingua tree path key; - Added support for an plus sign at the end to indicate an unofficial entry -- First two decimals are now hex - -This means the 52 is still 52 but as hex which is another number internally. -This gives tree space to define all computer languages/schema's and number types. ## N2L TreeKey Binary @@ -175,7 +171,7 @@ Extend octal aligned; <6><6><6>-<9>-<6><6><6>-<6><6><6>-<9> = 72 bits sector+zone 9 bit; - 0 = null - - 1-511 = Classic hex zone Id + sector Id (one based) + - 1-511 = Classic zone Id + sector Id (one based) Set of 6 bit - 0 = null @@ -243,9 +239,9 @@ To view and program octals, you maybe need a tricorder terminal ordinateur. In current unicode we can render Hinarī9 which is 9 bit per glyph, thus a tuple of "יֽ֔יֽ֔" is the 18 bit version of 0x00 of current retro calculators. - Hinarī3: ייייייווווווזוװװדירדײײדיריײיייזוױרױי - Hinarī6: יֽיֽיֽוַוַוַזַװֲדֽרֻײֵדֽרֽײֽיֽזַױֳױֽ - Hinarī9: יֽ֔יֽ֔וַ֝וַ֝זַ֟װֻ֔רֻ֕ײֻ֔רֽ֕יֽ֔זַ֩רֶ֔ + Hinarī3: דדדדדדײײײײײײדװייײױדװווװרדדדודרדזרזײױ + Hinarī6: דְדְדְײֽײֽײֽדַיֵײֻדַוֲװֶדְדֲדֶדֳרֳײֻ + Hinarī9: דְ֔דְ֔ײֽ֩ײֽ֩דַ֝יֽ֠דַ֕וַ֞דְ֔וְ֞דֳ֞זֽ֠ So a 3 bit value renders in Hinarī3, a 6 bit value renders in Hinarī6 and a 9 bit value renders in Hinarī9, thus we can render a full N2L TreeKey.