NX01: Fixed BE in T512/T64 and hinary, WIP printed lingua dial tones
This commit is contained in:
parent
e69a13ec92
commit
7feb638a40
32 changed files with 1060 additions and 626 deletions
|
|
@ -10,7 +10,11 @@
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>love.distributedrebirth.nx01</groupId>
|
<groupId>love.distributedrebirth.nx01</groupId>
|
||||||
<artifactId>nx01-jpp-nether-tone</artifactId>
|
<artifactId>nx01-jpp-nether-dial-lingua</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>love.distributedrebirth.nx01</groupId>
|
||||||
|
<artifactId>nx01-jpp-nether-dial-based</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>love.distributedrebirth.nx01</groupId>
|
<groupId>love.distributedrebirth.nx01</groupId>
|
||||||
|
|
|
||||||
|
|
@ -84,8 +84,8 @@ public enum T008ᖟ implements TerminatorEnum𓄯<T008ᖟ>, LegoᐧBrickᐧTape
|
||||||
return valueOf(zerdinal);
|
return valueOf(zerdinal);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int zerdinalOctalShiftNative(T008ᖟ shifter) {
|
public int zerdinalOctalShiftNativeBE(T008ᖟ shifter) {
|
||||||
return zerdinal() << shifter.abacusRȧñkOctalBitShifter();
|
return zerdinal() << shifter.abacusRȧñkOctalBitShifterBE();
|
||||||
}
|
}
|
||||||
|
|
||||||
public T002ᖟ clampᐧtuneᐧtool(T003ᖟ part) {
|
public T002ᖟ clampᐧtuneᐧtool(T003ᖟ part) {
|
||||||
|
|
@ -114,8 +114,8 @@ public enum T008ᖟ implements TerminatorEnum𓄯<T008ᖟ>, LegoᐧBrickᐧTape
|
||||||
appender.addᵂʳ(this);
|
appender.addᵂʳ(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static T008ᖟ valueOfOctalShift(final int value, final T008ᖟ shifter) {
|
public static T008ᖟ valueOfOctalShiftBE(final int value, final T008ᖟ shifter) {
|
||||||
return valueOf((value >> shifter.abacusRȧñkOctalBitShifter()) & ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟMASK);
|
return valueOf((value >> shifter.abacusRȧñkOctalBitShifterBE()) & ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟMASK);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static T008ᖟ valueOf(final int index) {
|
public static T008ᖟ valueOf(final int index) {
|
||||||
|
|
|
||||||
|
|
@ -134,11 +134,11 @@ public enum T064ᖟ implements TerminatorEnum𓄯<T064ᖟ>, LegoᐧBrickᐧTape
|
||||||
return valueOf(zerdinal);
|
return valueOf(zerdinal);
|
||||||
}
|
}
|
||||||
|
|
||||||
public T008ᖟ clampᐧoctalᐧtuneᐧby2() {
|
public T008ᖟ clampᐧtuneᐧby2() {
|
||||||
return T008ᖟ.valueOf(((ordinal() >> 0) & ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟMASK));
|
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));
|
return T008ᖟ.valueOf(((ordinal() >> 3) & ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟMASK));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -149,12 +149,12 @@ public enum T064ᖟ implements TerminatorEnum𓄯<T064ᖟ>, LegoᐧBrickᐧTape
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void brickᐧtapeᐧrecordᐧtune(final JediTempleBase8Offering appender) {
|
public void brickᐧtapeᐧrecordᐧtune(final JediTempleBase8Offering appender) {
|
||||||
appender.addᵂʳ(clampᐧoctalᐧtuneᐧby2());
|
appender.addᵂʳ(clampᐧtuneᐧby2ᐧmod());
|
||||||
appender.addᵂʳ(clampᐧoctalᐧtuneᐧby2ᐧmod());
|
appender.addᵂʳ(clampᐧtuneᐧby2());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static T064ᖟ valueOf(final T008ᖟ lower, final T008ᖟ upper) {
|
public static T064ᖟ valueOf(final T008ᖟ msb, final T008ᖟ lsb) {
|
||||||
return T064ᖟ.valueOf((upper.ordinal() << ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟBITS) + lower.ordinal());
|
return T064ᖟ.valueOf((msb.ordinal() << ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟBITS) + lsb.ordinal());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static T064ᖟ valueOf(final JediTempleBase8Iterator values) {
|
public static T064ᖟ valueOf(final JediTempleBase8Iterator values) {
|
||||||
|
|
|
||||||
|
|
@ -582,8 +582,8 @@ public enum T512ᖟ implements TerminatorEnum𓄯<T512ᖟ>, LegoᐧBrickᐧTape
|
||||||
return valueOf(zerdinal);
|
return valueOf(zerdinal);
|
||||||
}
|
}
|
||||||
|
|
||||||
public T008ᖟ clampᐧoctalᐧtuneᐧby3(T003ᖟ part) {
|
public T008ᖟ clampᐧtuneᐧby3(T003ᖟ part) {
|
||||||
return T008ᖟ.valueOf((ordinal() >> part.abacusRȧñkOctalBitShifter()) & ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟMASK);
|
return T008ᖟ.valueOf((ordinal() >> part.abacusRȧñkOctalBitShifterBE()) & ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟMASK);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -593,9 +593,9 @@ public enum T512ᖟ implements TerminatorEnum𓄯<T512ᖟ>, LegoᐧBrickᐧTape
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void brickᐧtapeᐧrecordᐧtune(final JediTempleBase8Offering appender) {
|
public void brickᐧtapeᐧrecordᐧtune(final JediTempleBase8Offering appender) {
|
||||||
appender.addᵂʳ(clampᐧoctalᐧtuneᐧby3(T003ᖟ.PART_1));
|
appender.addᵂʳ(clampᐧtuneᐧby3(T003ᖟ.PART_1));
|
||||||
appender.addᵂʳ(clampᐧoctalᐧtuneᐧby3(T003ᖟ.PART_2));
|
appender.addᵂʳ(clampᐧtuneᐧby3(T003ᖟ.PART_2));
|
||||||
appender.addᵂʳ(clampᐧoctalᐧtuneᐧby3(T003ᖟ.PART_3));
|
appender.addᵂʳ(clampᐧtuneᐧby3(T003ᖟ.PART_3));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static T512ᖟ valueOf(final int index) {
|
public static T512ᖟ valueOf(final int index) {
|
||||||
|
|
@ -606,8 +606,8 @@ public enum T512ᖟ implements TerminatorEnum𓄯<T512ᖟ>, LegoᐧBrickᐧTape
|
||||||
return 亞ᴬᴸᴸ.length;
|
return 亞ᴬᴸᴸ.length;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static T512ᖟ valueOf(final T008ᖟ lower, final T008ᖟ middle, final T008ᖟ upper) {
|
public static T512ᖟ valueOf(final T008ᖟ msb, final T008ᖟ csb, final T008ᖟ lsb) {
|
||||||
return valueOf((upper.ordinal() << (ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟBITS + ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟBITS)) + (middle.ordinal() << ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟBITS) + lower.ordinal());
|
return valueOf((msb.ordinal() << (ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟBITS + ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟBITS)) + (csb.ordinal() << ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟBITS) + lsb.ordinal());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static T512ᖟ valueOf(final JediTempleBase8Iterator values) {
|
public static T512ᖟ valueOf(final JediTempleBase8Iterator values) {
|
||||||
|
|
|
||||||
|
|
@ -136,14 +136,27 @@ public interface Terminator𓄯<T extends Terminator𓄯<T>> extends ZerdinalA
|
||||||
return thisᵀᴮᵒⁿᵉᴳʳᵃᵛᵉ().onheɨlḮg(Ꝑŕḯṿª₮ḕꝐḯŕ₳₮ḕʸᴰ.class).gềễstDɨng(Ꝑŕḯṿª₮ḕꝐḯŕ₳₮ḕʸᴰ.GHOST_AMMO_BOX_PICKUP, BãßBȍőnAmmoBoxԲ.class);
|
return thisᵀᴮᵒⁿᵉᴳʳᵃᵛᵉ().onheɨlḮg(Ꝑŕḯṿª₮ḕꝐḯŕ₳₮ḕʸᴰ.class).gềễstDɨng(Ꝑŕḯṿª₮ḕꝐḯŕ₳₮ḕʸᴰ.GHOST_AMMO_BOX_PICKUP, BãßBȍőnAmmoBoxԲ.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
default BigInteger abacusRȧñkOctalShift(T shifter) {
|
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;
|
return zerdinalSpaceOctalCount() * zerdinal() * ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟBITS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
default int abacusRȧñkOctalBitShifterBE() {
|
||||||
|
return zerdinalSpaceOctalCount() * (zerdinalSpaceBoundary() - zerdinal() - 1) * ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟBITS;
|
||||||
|
}
|
||||||
|
|
||||||
default Integer zerdinalSpaceOctalCount() {
|
default Integer zerdinalSpaceOctalCount() {
|
||||||
return backpackᴬᵐᵐᵒᴮᵒˣ().kȱġễlInteger(TerminatorBullet.SPACE_OCTAL_COUNT);
|
return backpackᴬᵐᵐᵒᴮᵒˣ().kȱġễlInteger(TerminatorBullet.SPACE_OCTAL_COUNT);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -95,10 +95,10 @@ public enum T008ᖟGun {
|
||||||
str.appendCodePoint(VALUES.codePoints().skip(ordinal).findFirst().getAsInt());
|
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")
|
@TerminatorGunAmmo注(website = "https://baki.fandom.com/wiki/Hinary")
|
||||||
static public final class T008ᖟGunHinarī implements TerminatorGun {
|
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ī() {
|
private T008ᖟGunHinarī() {
|
||||||
}
|
}
|
||||||
|
|
@ -110,7 +110,7 @@ public enum T008ᖟGun {
|
||||||
/// Hinarī + HinarīSupplement6 = 6 bit number
|
/// Hinarī + HinarīSupplement6 = 6 bit number
|
||||||
@TerminatorGunAmmo注(website = "https://en.wikipedia.org/wiki/Hebrew_diacritics")
|
@TerminatorGunAmmo注(website = "https://en.wikipedia.org/wiki/Hebrew_diacritics")
|
||||||
static public final class T008ᖟGunHinarīSupplement6 implements TerminatorGun {
|
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() {
|
private T008ᖟGunHinarīSupplement6() {
|
||||||
}
|
}
|
||||||
|
|
@ -122,7 +122,7 @@ public enum T008ᖟGun {
|
||||||
/// Hinarī + HinarīSupplement6 + HinarīSupplement9 = 9 bit number
|
/// Hinarī + HinarīSupplement6 + HinarīSupplement9 = 9 bit number
|
||||||
@TerminatorGunAmmo注(website = "https://en.wikipedia.org/wiki/Hebrew_(Unicode_block)")
|
@TerminatorGunAmmo注(website = "https://en.wikipedia.org/wiki/Hebrew_(Unicode_block)")
|
||||||
static public final class T008ᖟGunHinarīSupplement9 implements TerminatorGun {
|
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() {
|
private T008ᖟGunHinarīSupplement9() {
|
||||||
}
|
}
|
||||||
|
|
@ -131,18 +131,4 @@ public enum T008ᖟGun {
|
||||||
str.appendCodePoint(VALUES.codePoints().skip(ordinal).findFirst().getAsInt());
|
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
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -61,9 +61,9 @@ public class Gê̄ldGetậlÅtHebrew {
|
||||||
|
|
||||||
public T512ᖟ toTyte() {
|
public T512ᖟ toTyte() {
|
||||||
int combinedValue = letter.ordinal() + (vowel.ordinal() << Gê̄ldGetậlÅtHebrewLetter.SHIFT_5);
|
int combinedValue = letter.ordinal() + (vowel.ordinal() << Gê̄ldGetậlÅtHebrewLetter.SHIFT_5);
|
||||||
T008ᖟ value0 = T008ᖟ.valueOfOctalShift(combinedValue, T008ᖟ.PART_1);
|
T008ᖟ value0 = T008ᖟ.valueOfOctalShiftBE(combinedValue, T008ᖟ.PART_1);
|
||||||
T008ᖟ value1 = T008ᖟ.valueOfOctalShift(combinedValue, T008ᖟ.PART_2);
|
T008ᖟ value1 = T008ᖟ.valueOfOctalShiftBE(combinedValue, T008ᖟ.PART_2);
|
||||||
T008ᖟ value2 = T008ᖟ.valueOfOctalShift(combinedValue, T008ᖟ.PART_3);
|
T008ᖟ value2 = T008ᖟ.valueOfOctalShiftBE(combinedValue, T008ᖟ.PART_3);
|
||||||
return T512ᖟ.valueOf(value0, value1, value2);
|
return T512ᖟ.valueOf(value0, value1, value2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -64,32 +64,32 @@ public enum LegoGearByteNative {
|
||||||
int v2 = (data[6] & 0xFF) + ((data[7] << SHIFT_8) & 0xFF00) + ((data[8] << SHIFT_16) & 0xFF0000);
|
int v2 = (data[6] & 0xFF) + ((data[7] << SHIFT_8) & 0xFF00) + ((data[8] << SHIFT_16) & 0xFF0000);
|
||||||
|
|
||||||
// in-lined manual 3 loops for speed
|
// in-lined manual 3 loops for speed
|
||||||
octals.add(T008ᖟ.valueOfOctalShift(v0, T008ᖟ.PART_1));
|
octals.add(T008ᖟ.valueOfOctalShiftBE(v0, T008ᖟ.PART_1));
|
||||||
octals.add(T008ᖟ.valueOfOctalShift(v0, T008ᖟ.PART_2));
|
octals.add(T008ᖟ.valueOfOctalShiftBE(v0, T008ᖟ.PART_2));
|
||||||
octals.add(T008ᖟ.valueOfOctalShift(v0, T008ᖟ.PART_3));
|
octals.add(T008ᖟ.valueOfOctalShiftBE(v0, T008ᖟ.PART_3));
|
||||||
octals.add(T008ᖟ.valueOfOctalShift(v0, T008ᖟ.PART_4));
|
octals.add(T008ᖟ.valueOfOctalShiftBE(v0, T008ᖟ.PART_4));
|
||||||
octals.add(T008ᖟ.valueOfOctalShift(v0, T008ᖟ.PART_5));
|
octals.add(T008ᖟ.valueOfOctalShiftBE(v0, T008ᖟ.PART_5));
|
||||||
octals.add(T008ᖟ.valueOfOctalShift(v0, T008ᖟ.PART_6));
|
octals.add(T008ᖟ.valueOfOctalShiftBE(v0, T008ᖟ.PART_6));
|
||||||
octals.add(T008ᖟ.valueOfOctalShift(v0, T008ᖟ.PART_7));
|
octals.add(T008ᖟ.valueOfOctalShiftBE(v0, T008ᖟ.PART_7));
|
||||||
octals.add(T008ᖟ.valueOfOctalShift(v0, T008ᖟ.PART_8));
|
octals.add(T008ᖟ.valueOfOctalShiftBE(v0, T008ᖟ.PART_8));
|
||||||
|
|
||||||
octals.add(T008ᖟ.valueOfOctalShift(v1, T008ᖟ.PART_1));
|
octals.add(T008ᖟ.valueOfOctalShiftBE(v1, T008ᖟ.PART_1));
|
||||||
octals.add(T008ᖟ.valueOfOctalShift(v1, T008ᖟ.PART_2));
|
octals.add(T008ᖟ.valueOfOctalShiftBE(v1, T008ᖟ.PART_2));
|
||||||
octals.add(T008ᖟ.valueOfOctalShift(v1, T008ᖟ.PART_3));
|
octals.add(T008ᖟ.valueOfOctalShiftBE(v1, T008ᖟ.PART_3));
|
||||||
octals.add(T008ᖟ.valueOfOctalShift(v1, T008ᖟ.PART_4));
|
octals.add(T008ᖟ.valueOfOctalShiftBE(v1, T008ᖟ.PART_4));
|
||||||
octals.add(T008ᖟ.valueOfOctalShift(v1, T008ᖟ.PART_5));
|
octals.add(T008ᖟ.valueOfOctalShiftBE(v1, T008ᖟ.PART_5));
|
||||||
octals.add(T008ᖟ.valueOfOctalShift(v1, T008ᖟ.PART_6));
|
octals.add(T008ᖟ.valueOfOctalShiftBE(v1, T008ᖟ.PART_6));
|
||||||
octals.add(T008ᖟ.valueOfOctalShift(v1, T008ᖟ.PART_7));
|
octals.add(T008ᖟ.valueOfOctalShiftBE(v1, T008ᖟ.PART_7));
|
||||||
octals.add(T008ᖟ.valueOfOctalShift(v1, T008ᖟ.PART_8));
|
octals.add(T008ᖟ.valueOfOctalShiftBE(v1, T008ᖟ.PART_8));
|
||||||
|
|
||||||
octals.add(T008ᖟ.valueOfOctalShift(v2, T008ᖟ.PART_1));
|
octals.add(T008ᖟ.valueOfOctalShiftBE(v2, T008ᖟ.PART_1));
|
||||||
octals.add(T008ᖟ.valueOfOctalShift(v2, T008ᖟ.PART_2));
|
octals.add(T008ᖟ.valueOfOctalShiftBE(v2, T008ᖟ.PART_2));
|
||||||
octals.add(T008ᖟ.valueOfOctalShift(v2, T008ᖟ.PART_3));
|
octals.add(T008ᖟ.valueOfOctalShiftBE(v2, T008ᖟ.PART_3));
|
||||||
octals.add(T008ᖟ.valueOfOctalShift(v2, T008ᖟ.PART_4));
|
octals.add(T008ᖟ.valueOfOctalShiftBE(v2, T008ᖟ.PART_4));
|
||||||
octals.add(T008ᖟ.valueOfOctalShift(v2, T008ᖟ.PART_5));
|
octals.add(T008ᖟ.valueOfOctalShiftBE(v2, T008ᖟ.PART_5));
|
||||||
octals.add(T008ᖟ.valueOfOctalShift(v2, T008ᖟ.PART_6));
|
octals.add(T008ᖟ.valueOfOctalShiftBE(v2, T008ᖟ.PART_6));
|
||||||
octals.add(T008ᖟ.valueOfOctalShift(v2, T008ᖟ.PART_7));
|
octals.add(T008ᖟ.valueOfOctalShiftBE(v2, T008ᖟ.PART_7));
|
||||||
octals.add(T008ᖟ.valueOfOctalShift(v2, T008ᖟ.PART_8));
|
octals.add(T008ᖟ.valueOfOctalShiftBE(v2, T008ᖟ.PART_8));
|
||||||
|
|
||||||
// todo recode back to block streaming (move octals in while)
|
// todo recode back to block streaming (move octals in while)
|
||||||
}
|
}
|
||||||
|
|
@ -136,14 +136,14 @@ public enum LegoGearByteNative {
|
||||||
JediTempleBase8Iterator read = brickᐧtapeᐧrecordᐧχ3();
|
JediTempleBase8Iterator read = brickᐧtapeᐧrecordᐧχ3();
|
||||||
while (read.hasNextᴿᵈ().toNavajo()) {
|
while (read.hasNextᴿᵈ().toNavajo()) {
|
||||||
int byteTriplet = 0;
|
int byteTriplet = 0;
|
||||||
byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNative(T008ᖟ.PART_1);
|
byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNativeBE(T008ᖟ.PART_1);
|
||||||
byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNative(T008ᖟ.PART_2);
|
byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNativeBE(T008ᖟ.PART_2);
|
||||||
byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNative(T008ᖟ.PART_3);
|
byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNativeBE(T008ᖟ.PART_3);
|
||||||
byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNative(T008ᖟ.PART_4);
|
byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNativeBE(T008ᖟ.PART_4);
|
||||||
byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNative(T008ᖟ.PART_5);
|
byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNativeBE(T008ᖟ.PART_5);
|
||||||
byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNative(T008ᖟ.PART_6);
|
byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNativeBE(T008ᖟ.PART_6);
|
||||||
byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNative(T008ᖟ.PART_7);
|
byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNativeBE(T008ᖟ.PART_7);
|
||||||
byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNative(T008ᖟ.PART_8);
|
byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNativeBE(T008ᖟ.PART_8);
|
||||||
output.write(byteTriplet);
|
output.write(byteTriplet);
|
||||||
output.write(byteTriplet >> SHIFT_8);
|
output.write(byteTriplet >> SHIFT_8);
|
||||||
output.write(byteTriplet >> SHIFT_16);
|
output.write(byteTriplet >> SHIFT_16);
|
||||||
|
|
|
||||||
|
|
@ -61,13 +61,16 @@ public final class V018Tord extends LegoBrickMould抽<T512ᖟ, T002ᖟ> implemen
|
||||||
}
|
}
|
||||||
|
|
||||||
public T008ᖟ legoᐧtuneᐧᗅᗷᗷᗅ(T006ᖟ part, T008ᖟ value) {
|
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) {
|
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ᖟ value1 = valueBy3.clampᐧtuneᐧby3(T003ᖟ.PART_1);
|
||||||
T008ᖟ value2 = legoᐧtuneᐧᗅᗷᗷᗅ(part.clampᐧtuneᐧby3()).clampᐧoctalᐧtuneᐧby3(T003ᖟ.PART_2);
|
T008ᖟ value2 = valueBy3.clampᐧtuneᐧby3(T003ᖟ.PART_2);
|
||||||
T008ᖟ value3 = legoᐧtuneᐧᗅᗷᗷᗅ(part.clampᐧtuneᐧby3()).clampᐧoctalᐧtuneᐧby3(T003ᖟ.PART_3);
|
T008ᖟ value3 = valueBy3.clampᐧtuneᐧby3(T003ᖟ.PART_3);
|
||||||
switch (part.clampᐧtuneᐧby3ᐧmod()) {
|
switch (tuneBy3M) {
|
||||||
case PART_1:
|
case PART_1:
|
||||||
value1 = value;
|
value1 = value;
|
||||||
break;
|
break;
|
||||||
|
|
@ -79,7 +82,7 @@ public final class V018Tord extends LegoBrickMould抽<T512ᖟ, T002ᖟ> implemen
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
T512ᖟ valueNew = T512ᖟ.valueOf(value1, value2, value3);
|
T512ᖟ valueNew = T512ᖟ.valueOf(value1, value2, value3);
|
||||||
legoᐧtuneᐧᗅᗷᗷᗅ(part.clampᐧtuneᐧby3(), valueNew);
|
legoᐧtuneᐧᗅᗷᗷᗅ(tuneBy3, valueNew);
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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<String> ext = new ArrayList<>();
|
|
||||||
Path path = FileSystems.getDefault().getPath("src/test/resources", "lingua-lines.txt");
|
|
||||||
List<String> 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<String>() {
|
|
||||||
@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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -45,15 +45,27 @@ public class T008ᖟTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testOctalBitShift() {
|
public void testOctalBitShifterBE() {
|
||||||
Assertions.assertEquals(0, T008ᖟ.PART_1.abacusRȧñkOctalBitShifter());
|
Assertions.assertEquals(21, T008ᖟ.PART_1.abacusRȧñkOctalBitShifterBE());
|
||||||
Assertions.assertEquals(3, T008ᖟ.PART_2.abacusRȧñkOctalBitShifter());
|
Assertions.assertEquals(18, T008ᖟ.PART_2.abacusRȧñkOctalBitShifterBE());
|
||||||
Assertions.assertEquals(6, T008ᖟ.PART_3.abacusRȧñkOctalBitShifter());
|
Assertions.assertEquals(15, T008ᖟ.PART_3.abacusRȧñkOctalBitShifterBE());
|
||||||
Assertions.assertEquals(9, T008ᖟ.PART_4.abacusRȧñkOctalBitShifter());
|
Assertions.assertEquals(12, T008ᖟ.PART_4.abacusRȧñkOctalBitShifterBE());
|
||||||
Assertions.assertEquals(12, T008ᖟ.PART_5.abacusRȧñkOctalBitShifter());
|
Assertions.assertEquals(9, T008ᖟ.PART_5.abacusRȧñkOctalBitShifterBE());
|
||||||
Assertions.assertEquals(15, T008ᖟ.PART_6.abacusRȧñkOctalBitShifter());
|
Assertions.assertEquals(6, T008ᖟ.PART_6.abacusRȧñkOctalBitShifterBE());
|
||||||
Assertions.assertEquals(18, T008ᖟ.PART_7.abacusRȧñkOctalBitShifter());
|
Assertions.assertEquals(3, T008ᖟ.PART_7.abacusRȧñkOctalBitShifterBE());
|
||||||
Assertions.assertEquals(21, T008ᖟ.PART_8.abacusRȧñkOctalBitShifter());
|
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
|
@Test
|
||||||
|
|
|
||||||
|
|
@ -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<Integer, String> refMap = new HashMap<>();
|
||||||
|
List<String> 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<String> 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<V018Tord> tordsX3 = V018Tord.亞.gearsᐧbuildᐧbricksᐧfromᐧhinarī("דדדדדדײײײײײײדװייײױדװווװרדדדודרדזרזײױ");
|
||||||
|
List<V018Tord> tordsX6 = V018Tord.亞.gearsᐧbuildᐧbricksᐧfromᐧhinarī("דְדְדְײֽײֽײֽדַיֵײֻדַוֲװֶדְדֲדֶדֳרֳײֻ");
|
||||||
|
List<V018Tord> tordsX9 = V018Tord.亞.gearsᐧbuildᐧbricksᐧfromᐧhinarī("דְ֔דְ֔ײֽ֩ײֽ֩דַ֝יֽ֠דַ֕וַ֞דְ֔וְ֞דֳ֞זֽ֠");
|
||||||
|
List<V018Tord> 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<tordsOrg.size();i++) {
|
||||||
|
V018Tord tordOrg = tordsOrg.get(i);
|
||||||
|
Assertions.assertEquals(tordOrg.smurfᐧnativeᐧint(), tordsX3.get(i).smurfᐧnativeᐧint());
|
||||||
|
Assertions.assertEquals(tordOrg.smurfᐧnativeᐧint(), tordsX6.get(i).smurfᐧnativeᐧint());
|
||||||
|
Assertions.assertEquals(tordOrg.smurfᐧnativeᐧint(), tordsX9.get(i).smurfᐧnativeᐧint());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testToHinariOrder() throws Exception {
|
||||||
|
V018Tord word = new V018Tord();
|
||||||
|
word.smurfᐧnativeᐧint(0);
|
||||||
|
Assertions.assertEquals("דְ֔דְ֔", word.gearᐧtoᐧhinarīᐧχ9());
|
||||||
|
|
||||||
|
word.smurfᐧnativeᐧint(262143); // max
|
||||||
|
Assertions.assertEquals("ײֽ֩ײֽ֩", word.gearᐧtoᐧhinarīᐧχ9());
|
||||||
|
|
||||||
|
word.smurfᐧnativeᐧint(22270); // immortals
|
||||||
|
Assertions.assertEquals("דַ֝יֽ֠", word.gearᐧtoᐧhinarīᐧχ9());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -27,9 +27,6 @@
|
||||||
|
|
||||||
package ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣳᣝᐤᣜᣳ.ᒢᓫᑊᐣᑊ.ᔿᓫᒻᓫᓫ;
|
package ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣳᣝᐤᣜᣳ.ᒢᓫᑊᐣᑊ.ᔿᓫᒻᓫᓫ;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.junit.jupiter.api.Assertions;
|
import org.junit.jupiter.api.Assertions;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
|
@ -56,7 +53,6 @@ public class V018TordTest {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean addᵂʳ(T008ᖟ value) {
|
public boolean addᵂʳ(T008ᖟ value) {
|
||||||
//System.out.println(value);
|
|
||||||
lastIsLSB = value;
|
lastIsLSB = value;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
@ -89,61 +85,4 @@ public class V018TordTest {
|
||||||
Assertions.assertEquals(6, V018Tord.亞.brickᐧtapeᐧwidthᐧχ6ᐧbits());
|
Assertions.assertEquals(6, V018Tord.亞.brickᐧtapeᐧwidthᐧχ6ᐧbits());
|
||||||
Assertions.assertEquals(9, V018Tord.亞.brickᐧtapeᐧwidthᐧχ9ᐧbits());
|
Assertions.assertEquals(9, V018Tord.亞.brickᐧtapeᐧwidthᐧχ9ᐧbits());
|
||||||
}
|
}
|
||||||
|
|
||||||
@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<V018Tord> tordsX3 = V018Tord.亞.gearsᐧbuildᐧbricksᐧfromᐧhinarī("ייייייווווווידװװוזידײײדריייײיריױרױוז");
|
|
||||||
List<V018Tord> tordsX6 = V018Tord.亞.gearsᐧbuildᐧbricksᐧfromᐧhinarī("יֽיֽיֽוַוַוַיֻװֲוְיֻײֵדֳיֽיֵיֳיֶרֶוְ");
|
|
||||||
List<V018Tord> tordsX9 = V018Tord.亞.gearsᐧbuildᐧbricksᐧfromᐧhinarī("יֽ֔יֽ֔וַ֝וַ֝יֻ֟װַ֞יֻ֕ײֻ֘יֽ֔ײֽ֘יֶ֘ױַ֞");
|
|
||||||
List<V018Tord> 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<tordsOrg.size();i++) {
|
|
||||||
V018Tord tordOrg = tordsOrg.get(i);
|
|
||||||
Assertions.assertEquals(tordOrg.smurfᐧnativeᐧint(), tordsX3.get(i).smurfᐧnativeᐧint());
|
|
||||||
Assertions.assertEquals(tordOrg.smurfᐧnativeᐧint(), tordsX6.get(i).smurfᐧnativeᐧint());
|
|
||||||
Assertions.assertEquals(tordOrg.smurfᐧnativeᐧint(), tordsX9.get(i).smurfᐧnativeᐧint());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testToHinariOrder() throws Exception {
|
|
||||||
V018Tord word = new V018Tord();
|
|
||||||
word.smurfᐧnativeᐧint(0);
|
|
||||||
Assertions.assertEquals("יֽ֔יֽ֔", word.gearᐧtoᐧhinarīᐧχ9());
|
|
||||||
|
|
||||||
word.smurfᐧnativeᐧint(262143); // max
|
|
||||||
Assertions.assertEquals("וַ֝וַ֝", word.gearᐧtoᐧhinarīᐧχ9());
|
|
||||||
|
|
||||||
word.smurfᐧnativeᐧint(22270); // immortals
|
|
||||||
Assertions.assertEquals("יֻ֟װַ֞", word.gearᐧtoᐧhinarīᐧχ9());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -75,8 +75,6 @@ public class V072TongTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testBytes() throws IOException {
|
public void testBytes() throws IOException {
|
||||||
int testSet = 1000 * 10;
|
|
||||||
for (int i=0;i<testSet;i++) {
|
|
||||||
V072Tong tong = new V072Tong();
|
V072Tong tong = new V072Tong();
|
||||||
tong.legoᐧtuneᐧᗅᗷᗷᗅ(T002ᖟ.PART_1).smurfᐧnativeᐧlong(32768);
|
tong.legoᐧtuneᐧᗅᗷᗷᗅ(T002ᖟ.PART_1).smurfᐧnativeᐧlong(32768);
|
||||||
tong.legoᐧtuneᐧᗅᗷᗷᗅ(T002ᖟ.PART_2).smurfᐧnativeᐧlong(689024);
|
tong.legoᐧtuneᐧᗅᗷᗷᗅ(T002ᖟ.PART_2).smurfᐧnativeᐧlong(689024);
|
||||||
|
|
@ -97,4 +95,3 @@ public class V072TongTest {
|
||||||
Assertions.assertEquals(689024, tong2.legoᐧtuneᐧᗅᗷᗷᗅ(T002ᖟ.PART_2).smurfᐧnativeᐧlong());
|
Assertions.assertEquals(689024, tong2.legoᐧtuneᐧᗅᗷᗷᗅ(T002ᖟ.PART_2).smurfᐧnativeᐧlong());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -17,5 +17,56 @@
|
||||||
<artifactId>junit-jupiter</artifactId>
|
<artifactId>junit-jupiter</artifactId>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>love.distributedrebirth.nx01</groupId>
|
||||||
|
<artifactId>nx01-kode-gen</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.codehaus.mojo</groupId>
|
||||||
|
<artifactId>build-helper-maven-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>add-source</id>
|
||||||
|
<phase>process-sources</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>add-source</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<sources>
|
||||||
|
<source>${project.build.directory}/kode-nether-dial-based</source>
|
||||||
|
</sources>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-antrun-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>nx01-generate-nether</id>
|
||||||
|
<goals>
|
||||||
|
<goal>run</goal>
|
||||||
|
</goals>
|
||||||
|
<phase>process-resources</phase>
|
||||||
|
<configuration>
|
||||||
|
<target>
|
||||||
|
<java classname="love.distributedrebirth.nx01.kode.generator.KodeGen" fork="true"
|
||||||
|
failonerror="true">
|
||||||
|
<!-- using test CP so local module gets resolved correctly -->
|
||||||
|
<classpath refid="maven.test.classpath" />
|
||||||
|
<arg line="nether-dial-based" />
|
||||||
|
<arg line="generate" />
|
||||||
|
</java>
|
||||||
|
</target>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
</project>
|
</project>
|
||||||
33
nx01-jpp-nether-dial-based/src/main/java/module-info.java
Normal file
33
nx01-jpp-nether-dial-based/src/main/java/module-info.java
Normal file
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
@ -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 {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᒄᑊᣔᒻ.ᒃᣔᔆᓫᒄ.ModelDialBased
|
||||||
|
|
@ -17,5 +17,56 @@
|
||||||
<artifactId>junit-jupiter</artifactId>
|
<artifactId>junit-jupiter</artifactId>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>love.distributedrebirth.nx01</groupId>
|
||||||
|
<artifactId>nx01-kode-gen</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.codehaus.mojo</groupId>
|
||||||
|
<artifactId>build-helper-maven-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>add-source</id>
|
||||||
|
<phase>process-sources</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>add-source</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<sources>
|
||||||
|
<source>${project.build.directory}/kode-nether-dial-lingua</source>
|
||||||
|
</sources>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-antrun-plugin</artifactId>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>nx01-generate-nether</id>
|
||||||
|
<goals>
|
||||||
|
<goal>run</goal>
|
||||||
|
</goals>
|
||||||
|
<phase>process-resources</phase>
|
||||||
|
<configuration>
|
||||||
|
<target>
|
||||||
|
<java classname="love.distributedrebirth.nx01.kode.generator.KodeGen" fork="true"
|
||||||
|
failonerror="true">
|
||||||
|
<!-- using test CP so local module gets resolved correctly -->
|
||||||
|
<classpath refid="maven.test.classpath" />
|
||||||
|
<arg line="nether-dial-lingua" />
|
||||||
|
<arg line="generate" />
|
||||||
|
</java>
|
||||||
|
</target>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
</project>
|
</project>
|
||||||
39
nx01-jpp-nether-dial-lingua/src/main/java/module-info.java
Normal file
39
nx01-jpp-nether-dial-lingua/src/main/java/module-info.java
Normal file
|
|
@ -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 ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᒄᑊᣔᒻ.ᒻᑊᣕᕐᓑᣔᓫ.ᣟᣟᣟ;
|
||||||
|
}
|
||||||
|
|
@ -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<String> linguaEntries = loadLinguaEntries();
|
||||||
|
List<NetherSlugNamed> 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<String, Map<String, List<NetherSlugNamed>>> 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<String, List<NetherSlugNamed>> map = splitSlugs.get(subPackage);
|
||||||
|
if (map == null) {
|
||||||
|
map = new HashMap<>();
|
||||||
|
splitSlugs.put(subPackage, map);
|
||||||
|
}
|
||||||
|
List<NetherSlugNamed> 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<String, List<NetherSlugNamed>> map = splitSlugs.get(pack);
|
||||||
|
for (String file : map.keySet()) {
|
||||||
|
List<NetherSlugNamed> 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<Class<?>> 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<Class<?>> 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<NetherSlugNamed> convertLinguaEntries(List<String> linguaEntries) {
|
||||||
|
List<NetherSlugNamed> 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<String> loadLinguaEntries() throws IOException {
|
||||||
|
List<String> ext = new ArrayList<>();
|
||||||
|
Path path = FileSystems.getDefault().getPath("src/test/resources", "lingua-lines.txt");
|
||||||
|
List<String> 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<String>() {
|
||||||
|
@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");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᒄᑊᣔᒻ.ᒻᑊᣕᕐᓑᣔ.ModelDialLingua
|
||||||
|
|
@ -33,7 +33,7 @@
|
||||||
</goals>
|
</goals>
|
||||||
<configuration>
|
<configuration>
|
||||||
<sources>
|
<sources>
|
||||||
<source>${project.build.directory}/generated-sources/</source>
|
<source>${project.build.directory}/kode-nether-tone</source>
|
||||||
</sources>
|
</sources>
|
||||||
</configuration>
|
</configuration>
|
||||||
</execution>
|
</execution>
|
||||||
|
|
@ -55,7 +55,7 @@
|
||||||
failonerror="true">
|
failonerror="true">
|
||||||
<!-- using test CP so local module gets resolved correctly -->
|
<!-- using test CP so local module gets resolved correctly -->
|
||||||
<classpath refid="maven.test.classpath" />
|
<classpath refid="maven.test.classpath" />
|
||||||
<arg line="nether-tones" />
|
<arg line="nether-tone" />
|
||||||
<arg line="generate" />
|
<arg line="generate" />
|
||||||
</java>
|
</java>
|
||||||
</target>
|
</target>
|
||||||
|
|
|
||||||
|
|
@ -29,5 +29,6 @@
|
||||||
/// @author للَّٰهِilLצسُو
|
/// @author للَّٰهِilLצسُو
|
||||||
/// @version ©Δ∞ 仙上主天
|
/// @version ©Δ∞ 仙上主天
|
||||||
module jpp.nether.tone {
|
module jpp.nether.tone {
|
||||||
|
exports ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ;
|
||||||
|
exports ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,53 @@ public record NetherToneSlugView(
|
||||||
int er0w
|
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<Class<?>> toNetherTones(int idx) {
|
public List<Class<?>> toNetherTones(int idx) {
|
||||||
Class<?> qClass = qClass(idx);
|
Class<?> qClass = qClass(idx);
|
||||||
List<Class<?>> result = new ArrayList<>(11);
|
List<Class<?>> result = new ArrayList<>(11);
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,7 @@
|
||||||
|
|
||||||
package ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ;
|
package ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
|
@ -43,25 +44,34 @@ public class ModelNetherTones implements KodeGenModel {
|
||||||
private final String BASE_PACK = "ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ";
|
private final String BASE_PACK = "ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String generatorName() {
|
public String generatorKey() {
|
||||||
return "nether-tones";
|
return "nether-tone";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void buildModels(ModelKlassWriter writer) {
|
public String generatorModelHash() {
|
||||||
buildQuadrants(writer, 1, "ᐧᐧᐧ");
|
return "15";
|
||||||
buildQuadrants(writer, 2, "ᐧᐧᣟ");
|
}
|
||||||
buildQuadrants(writer, 3, "ᐧᣟᐧ");
|
|
||||||
buildQuadrants(writer, 4, "ᐧᣟᣟ");
|
@Override
|
||||||
buildQuadrants(writer, 5, "ᣟᐧᐧ");
|
public void buildModels(ModelKlassWriter writer) throws IOException {
|
||||||
buildQuadrants(writer, 6, "ᣟᐧᣟ");
|
|
||||||
buildQuadrants(writer, 7, "ᣟᣟᐧ");
|
// TODO: redo tree again, as a Q slug, should be usable to reuse in any other Qx slug
|
||||||
buildQuadrants(writer, 8, "ᣟᣟᣟ");
|
// 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);
|
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 q = "ᐊQ" + quadrant;
|
||||||
String e = "NetherToneQ" + quadrant;
|
String e = "NetherToneQ" + quadrant;
|
||||||
|
|
||||||
|
|
@ -90,8 +100,11 @@ public class ModelNetherTones implements KodeGenModel {
|
||||||
buf.append(" extends ");
|
buf.append(" extends ");
|
||||||
buf.append(quadrant);
|
buf.append(quadrant);
|
||||||
buf.append(" {\n");
|
buf.append(" {\n");
|
||||||
for (int i = 1 ; i <= slugSize; i++) {
|
for (int i = 0 ; i < slugSize; i++) {
|
||||||
String partCode = "ᐅ" + String.format("%03d", i);
|
String partCode = "ᐅ" + String.format("%03d", i);
|
||||||
|
if (slugSize < 100) {
|
||||||
|
partCode = "ᐅ" + String.format("%02d", i);
|
||||||
|
}
|
||||||
String clsBase = partCode + " extends " + klass.getJavaName();
|
String clsBase = partCode + " extends " + klass.getJavaName();
|
||||||
String clsMutexExt = ", " + javaName + "Mutex<" + partCode + ">";
|
String clsMutexExt = ", " + javaName + "Mutex<" + partCode + ">";
|
||||||
buf.append("\tnon-sealed interface " + clsBase + clsMutexExt + " {}\n");
|
buf.append("\tnon-sealed interface " + clsBase + clsMutexExt + " {}\n");
|
||||||
|
|
|
||||||
|
|
@ -43,28 +43,27 @@ import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1DB1;
|
||||||
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1DB2;
|
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1DB2;
|
||||||
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1DB3;
|
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1DB3;
|
||||||
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1ER0W;
|
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1ER0W;
|
||||||
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.NetherToneSlugView;
|
|
||||||
|
|
||||||
public class NetherToneSlugViewTest {
|
public class NetherToneSlugViewTest {
|
||||||
|
|
||||||
private interface Q1SlugExample extends
|
private interface Q1SlugExample extends
|
||||||
ᐊQ1AG1.ᐅ001,
|
ᐊQ1AG1.ᐅ00,
|
||||||
ᐊQ1AG2.ᐅ002,
|
ᐊQ1AG2.ᐅ01,
|
||||||
ᐊQ1AG3.ᐅ003,
|
ᐊQ1AG3.ᐅ02,
|
||||||
ᐊQ1BL0W.ᐅ004,
|
ᐊQ1BL0W.ᐅ003,
|
||||||
ᐊQ1CR1.ᐅ005,
|
ᐊQ1CR1.ᐅ04,
|
||||||
ᐊQ1CR2.ᐅ006,
|
ᐊQ1CR2.ᐅ05,
|
||||||
ᐊQ1CR3.ᐅ007,
|
ᐊQ1CR3.ᐅ06,
|
||||||
ᐊQ1DB1.ᐅ008,
|
ᐊQ1DB1.ᐅ07,
|
||||||
ᐊQ1DB2.ᐅ009,
|
ᐊQ1DB2.ᐅ08,
|
||||||
ᐊQ1DB3.ᐅ010,
|
ᐊQ1DB3.ᐅ09,
|
||||||
ᐊQ1ER0W.ᐅ011
|
ᐊQ1ER0W.ᐅ010
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
private interface Q1SlugExampleErr extends
|
private interface Q1SlugExampleErr extends
|
||||||
ᐊQ1AG1.ᐅ001,
|
ᐊQ1AG1.ᐅ00,
|
||||||
ᐊQ1AG2.ᐅ002
|
ᐊQ1AG2.ᐅ01
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -91,8 +90,8 @@ public class NetherToneSlugViewTest {
|
||||||
Assertions.assertNotNull(slug);
|
Assertions.assertNotNull(slug);
|
||||||
List<Class<?>> result = slug.toNetherTones(0);
|
List<Class<?>> result = slug.toNetherTones(0);
|
||||||
Assertions.assertNotNull(result);
|
Assertions.assertNotNull(result);
|
||||||
Assertions.assertEquals(ᐊQ1AG1.ᐅ001.class, result.get(0));
|
Assertions.assertEquals(ᐊQ1AG1.ᐅ00.class, result.get(0));
|
||||||
Assertions.assertEquals(ᐊQ1AG2.ᐅ002.class, result.get(1));
|
Assertions.assertEquals(ᐊQ1AG2.ᐅ01.class, result.get(1));
|
||||||
Assertions.assertEquals(ᐊQ1AG3.ᐅ003.class, result.get(2));
|
Assertions.assertEquals(ᐊQ1AG3.ᐅ02.class, result.get(2));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,7 @@ import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
|
import java.util.Comparator;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.ServiceLoader;
|
import java.util.ServiceLoader;
|
||||||
|
|
||||||
|
|
@ -42,8 +43,6 @@ import love.distributedrebirth.nx01.kode.generator.klass.ModelKlassWriter;
|
||||||
/// @version ©Δ∞ 仙上主天
|
/// @version ©Δ∞ 仙上主天
|
||||||
public class KodeGen {
|
public class KodeGen {
|
||||||
|
|
||||||
private final static String SERIAL_VERSON_ID = "13";
|
|
||||||
|
|
||||||
public static void main(String[] args) throws IOException {
|
public static void main(String[] args) throws IOException {
|
||||||
if (args.length == 0) {
|
if (args.length == 0) {
|
||||||
System.err.println("No command given.");
|
System.err.println("No command given.");
|
||||||
|
|
@ -61,14 +60,22 @@ public class KodeGen {
|
||||||
if (args.length > 1 && "generate".equals(args[1])) {
|
if (args.length > 1 && "generate".equals(args[1])) {
|
||||||
writeToFile = true;
|
writeToFile = true;
|
||||||
}
|
}
|
||||||
if (skipCommand()) {
|
if (modelHashValid(commandKode)) {
|
||||||
System.out.println("SKIPPED: Generated source are up to date");
|
System.out.println("SKIPPED: Generated source are up to date");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// write all sources to files or stdout
|
// 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<Path> 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);
|
System.out.println("Generating " + commandDesc);
|
||||||
ModelKlassWriter writer = new ModelKlassWriter("target/generated-sources");
|
ModelKlassWriter writer = new ModelKlassWriter(outputFolder.toPath());
|
||||||
writer.setProlog(new File("../licence.txt"));
|
writer.setProlog(new File("../licence.txt"));
|
||||||
commandKode.buildModels(writer);
|
commandKode.buildModels(writer);
|
||||||
writer.printModels(writeToFile);
|
writer.printModels(writeToFile);
|
||||||
|
|
@ -79,22 +86,30 @@ public class KodeGen {
|
||||||
Iterator<KodeGenModel> models = ServiceLoader.load(KodeGenModel.class).iterator();
|
Iterator<KodeGenModel> models = ServiceLoader.load(KodeGenModel.class).iterator();
|
||||||
while (models.hasNext()) {
|
while (models.hasNext()) {
|
||||||
KodeGenModel model = models.next();
|
KodeGenModel model = models.next();
|
||||||
if (model.generatorName().equals(generatorName)) {
|
if (model.generatorKey().contains(" ")) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (model.generatorKey().equals(generatorName)) {
|
||||||
return model;
|
return model;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean skipCommand() throws IOException {
|
private static boolean modelHashValid(KodeGenModel commandKode) throws IOException {
|
||||||
Path hashFile = new File("target/generated-sources.hash").toPath();
|
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()) {
|
if (hashFile.toFile().exists()) {
|
||||||
String hash = Files.readString(hashFile);
|
String hash = Files.readString(hashFile);
|
||||||
if (SERIAL_VERSON_ID.equals(hash)) {
|
if (generatorModelHash.equals(hash)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Files.writeString(hashFile, SERIAL_VERSON_ID);
|
Files.writeString(hashFile, generatorModelHash);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,8 @@
|
||||||
|
|
||||||
package love.distributedrebirth.nx01.kode.generator;
|
package love.distributedrebirth.nx01.kode.generator;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
import love.distributedrebirth.nx01.kode.generator.klass.ModelKlassWriter;
|
import love.distributedrebirth.nx01.kode.generator.klass.ModelKlassWriter;
|
||||||
|
|
||||||
/// Configure the model for the writer.
|
/// Configure the model for the writer.
|
||||||
|
|
@ -35,7 +37,12 @@ import love.distributedrebirth.nx01.kode.generator.klass.ModelKlassWriter;
|
||||||
/// @version ©Δ∞ 仙上主天
|
/// @version ©Δ∞ 仙上主天
|
||||||
public interface KodeGenModel {
|
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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,6 @@ package love.distributedrebirth.nx01.kode.generator.klass;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.FileSystems;
|
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
@ -47,8 +46,8 @@ public class ModelKlassWriter {
|
||||||
private File prolog;
|
private File prolog;
|
||||||
private Path outputPath;
|
private Path outputPath;
|
||||||
|
|
||||||
public ModelKlassWriter(String outputPath) {
|
public ModelKlassWriter(Path outputPath) {
|
||||||
this.outputPath = FileSystems.getDefault().getPath(Objects.requireNonNull(outputPath));
|
this.outputPath = Objects.requireNonNull(outputPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setProlog(File prolog) {
|
public void setProlog(File prolog) {
|
||||||
|
|
@ -129,4 +128,11 @@ public class ModelKlassWriter {
|
||||||
buf.append("/// @author للَّٰهِilLצسُو\n");
|
buf.append("/// @author للَّٰهِilLצسُو\n");
|
||||||
buf.append("/// @version ©Δ∞ 仙上主天\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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -158,36 +158,39 @@ Extend octal aligned; <6><6><6>-<9>-<6><6><6>-<6><6><6>-<9> = 72 bits
|
||||||
<spaceId><subId><etherId>-<sectorId+zoneId>-<setId><chainId><netId>-<outerId><middleId><innerId>-<bitFlags>
|
<spaceId><subId><etherId>-<sectorId+zoneId>-<setId><chainId><netId>-<outerId><middleId><innerId>-<bitFlags>
|
||||||
|
|
||||||
space id 6 bit;
|
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
|
- 32 = sage master system version space 0x20
|
||||||
- 33+ = reserved for major schema version upgrades
|
- 33+ = reserved for major schema version upgrades
|
||||||
|
|
||||||
sub space id 6 bit;
|
sub space id 6 bit;
|
||||||
- 0-31 = reserved for metatron Atari AI
|
- 0 = null
|
||||||
- 32 = No2Lingua sub space for local and remote (generic core language)
|
- 1-31 = reserved for metatron Atari AI
|
||||||
- 33 = No2Lingua App Remote (NoStr relay remote signed apps)
|
- 33 = No2Lingua sub space
|
||||||
- 34 = No2Lingua App Local (NoStr local application coded in N2L)
|
- 34+ = reserved for furture use
|
||||||
- 35+ = reserved for furture use
|
|
||||||
|
|
||||||
ether space id 6 bit;
|
ether space id 6 bit;
|
||||||
- 0 = Default impl version
|
- 0 = null
|
||||||
- 1+ = Alternative api version for libs
|
- 34 = Locale ether slugs space
|
||||||
|
|
||||||
sector+zone 9 bit;
|
sector+zone 9 bit;
|
||||||
- 0-255 = Classic hex zone Id + sector Id
|
- 0 = null
|
||||||
- 256+ = free
|
- 1-511 = Classic hex zone Id + sector Id (one based)
|
||||||
|
|
||||||
Set of <setId><chainId><netId> 6 bit
|
Set of <setId><chainId><netId> 6 bit
|
||||||
- 0 = "A" index value of ascii upper case
|
- 0 = null
|
||||||
|
- 1 = "A" index value of ascii upper case
|
||||||
- Z+ = locked by legacy
|
- Z+ = locked by legacy
|
||||||
- 63 = no value
|
- 63 = no value
|
||||||
|
|
||||||
Set of <outerId><middleId><innerId> 6 bit
|
Set of <outerId><middleId><innerId> 6 bit
|
||||||
- 0 = "a" index value of ascii lower case
|
- 0 = null
|
||||||
|
- 1 = "a" index value of ascii lower case
|
||||||
- z+ = locked by legacy
|
- z+ = locked by legacy
|
||||||
- 63 = no value
|
- 63 = no value
|
||||||
|
|
||||||
Flags as 9 bit
|
Flags as 9 bit
|
||||||
|
- 0 = null
|
||||||
- bit 0 = '+' indicate 'new' type key (temp RFC number)
|
- bit 0 = '+' indicate 'new' type key (temp RFC number)
|
||||||
- bit 1 = '-' indicate private type key (refuse in public api's)
|
- bit 1 = '-' indicate private type key (refuse in public api's)
|
||||||
- bit 2-7 = free
|
- bit 2-7 = free
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue