Compare commits
3 commits
babb2cf188
...
7feb638a40
| Author | SHA1 | Date | |
|---|---|---|---|
| 7feb638a40 | |||
| e69a13ec92 | |||
| 4af51ad9ae |
37 changed files with 1463 additions and 892 deletions
|
|
@ -10,7 +10,11 @@
|
|||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>love.distributedrebirth.nx01</groupId>
|
||||
<artifactId>nx01-jpp-klass-nether</artifactId>
|
||||
<artifactId>nx01-jpp-nether-dial-lingua</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>love.distributedrebirth.nx01</groupId>
|
||||
<artifactId>nx01-jpp-nether-dial-based</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>love.distributedrebirth.nx01</groupId>
|
||||
|
|
|
|||
|
|
@ -84,8 +84,8 @@ public enum T008ᖟ implements TerminatorEnum𓄯<T008ᖟ>, LegoᐧBrickᐧTape
|
|||
return valueOf(zerdinal);
|
||||
}
|
||||
|
||||
public int zerdinalOctalShiftNative(T008ᖟ shifter) {
|
||||
return zerdinal() << shifter.abacusRȧñkOctalBitShifter();
|
||||
public int zerdinalOctalShiftNativeBE(T008ᖟ shifter) {
|
||||
return zerdinal() << shifter.abacusRȧñkOctalBitShifterBE();
|
||||
}
|
||||
|
||||
public T002ᖟ clampᐧtuneᐧtool(T003ᖟ part) {
|
||||
|
|
@ -114,8 +114,8 @@ public enum T008ᖟ implements TerminatorEnum𓄯<T008ᖟ>, LegoᐧBrickᐧTape
|
|||
appender.addᵂʳ(this);
|
||||
}
|
||||
|
||||
public static T008ᖟ valueOfOctalShift(final int value, final T008ᖟ shifter) {
|
||||
return valueOf((value >> shifter.abacusRȧñkOctalBitShifter()) & ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟMASK);
|
||||
public static T008ᖟ valueOfOctalShiftBE(final int value, final T008ᖟ shifter) {
|
||||
return valueOf((value >> shifter.abacusRȧñkOctalBitShifterBE()) & ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟMASK);
|
||||
}
|
||||
|
||||
public static T008ᖟ valueOf(final int index) {
|
||||
|
|
|
|||
|
|
@ -134,11 +134,11 @@ public enum T064ᖟ implements TerminatorEnum𓄯<T064ᖟ>, LegoᐧBrickᐧTape
|
|||
return valueOf(zerdinal);
|
||||
}
|
||||
|
||||
public T008ᖟ clampᐧoctalᐧtuneᐧby2() {
|
||||
public T008ᖟ clampᐧtuneᐧby2() {
|
||||
return T008ᖟ.valueOf(((ordinal() >> 0) & ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟMASK));
|
||||
}
|
||||
|
||||
public T008ᖟ clampᐧoctalᐧtuneᐧby2ᐧmod() {
|
||||
public T008ᖟ clampᐧtuneᐧby2ᐧmod() {
|
||||
return T008ᖟ.valueOf(((ordinal() >> 3) & ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟMASK));
|
||||
}
|
||||
|
||||
|
|
@ -149,12 +149,12 @@ public enum T064ᖟ implements TerminatorEnum𓄯<T064ᖟ>, LegoᐧBrickᐧTape
|
|||
|
||||
@Override
|
||||
public void brickᐧtapeᐧrecordᐧtune(final JediTempleBase8Offering appender) {
|
||||
appender.addᵂʳ(clampᐧoctalᐧtuneᐧby2());
|
||||
appender.addᵂʳ(clampᐧoctalᐧtuneᐧby2ᐧmod());
|
||||
appender.addᵂʳ(clampᐧtuneᐧby2ᐧmod());
|
||||
appender.addᵂʳ(clampᐧtuneᐧby2());
|
||||
}
|
||||
|
||||
public static T064ᖟ valueOf(final T008ᖟ lower, final T008ᖟ upper) {
|
||||
return T064ᖟ.valueOf((upper.ordinal() << ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟBITS) + lower.ordinal());
|
||||
public static T064ᖟ valueOf(final T008ᖟ msb, final T008ᖟ lsb) {
|
||||
return T064ᖟ.valueOf((msb.ordinal() << ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟBITS) + lsb.ordinal());
|
||||
}
|
||||
|
||||
public static T064ᖟ valueOf(final JediTempleBase8Iterator values) {
|
||||
|
|
|
|||
|
|
@ -582,8 +582,8 @@ public enum T512ᖟ implements TerminatorEnum𓄯<T512ᖟ>, LegoᐧBrickᐧTape
|
|||
return valueOf(zerdinal);
|
||||
}
|
||||
|
||||
public T008ᖟ clampᐧoctalᐧtuneᐧby3(T003ᖟ part) {
|
||||
return T008ᖟ.valueOf((ordinal() >> part.abacusRȧñkOctalBitShifter()) & ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟMASK);
|
||||
public T008ᖟ clampᐧtuneᐧby3(T003ᖟ part) {
|
||||
return T008ᖟ.valueOf((ordinal() >> part.abacusRȧñkOctalBitShifterBE()) & ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟMASK);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -593,9 +593,9 @@ public enum T512ᖟ implements TerminatorEnum𓄯<T512ᖟ>, LegoᐧBrickᐧTape
|
|||
|
||||
@Override
|
||||
public void brickᐧtapeᐧrecordᐧtune(final JediTempleBase8Offering appender) {
|
||||
appender.addᵂʳ(clampᐧoctalᐧtuneᐧby3(T003ᖟ.PART_1));
|
||||
appender.addᵂʳ(clampᐧoctalᐧtuneᐧby3(T003ᖟ.PART_2));
|
||||
appender.addᵂʳ(clampᐧoctalᐧtuneᐧby3(T003ᖟ.PART_3));
|
||||
appender.addᵂʳ(clampᐧtuneᐧby3(T003ᖟ.PART_1));
|
||||
appender.addᵂʳ(clampᐧtuneᐧby3(T003ᖟ.PART_2));
|
||||
appender.addᵂʳ(clampᐧtuneᐧby3(T003ᖟ.PART_3));
|
||||
}
|
||||
|
||||
public static T512ᖟ valueOf(final int index) {
|
||||
|
|
@ -606,8 +606,8 @@ public enum T512ᖟ implements TerminatorEnum𓄯<T512ᖟ>, LegoᐧBrickᐧTape
|
|||
return 亞ᴬᴸᴸ.length;
|
||||
}
|
||||
|
||||
public static T512ᖟ valueOf(final T008ᖟ lower, final T008ᖟ middle, final T008ᖟ upper) {
|
||||
return valueOf((upper.ordinal() << (ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟBITS + ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟBITS)) + (middle.ordinal() << ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟBITS) + lower.ordinal());
|
||||
public static T512ᖟ valueOf(final T008ᖟ msb, final T008ᖟ csb, final T008ᖟ lsb) {
|
||||
return valueOf((msb.ordinal() << (ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟBITS + ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟBITS)) + (csb.ordinal() << ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟBITS) + lsb.ordinal());
|
||||
}
|
||||
|
||||
public static T512ᖟ valueOf(final JediTempleBase8Iterator values) {
|
||||
|
|
|
|||
|
|
@ -135,15 +135,28 @@ public interface Terminator𓄯<T extends Terminator𓄯<T>> extends ZerdinalA
|
|||
private BãßBȍőnAmmoBoxԲ<TerminatorBullet> backpackᴬᵐᵐᵒᴮᵒˣ() {
|
||||
return thisᵀᴮᵒⁿᵉᴳʳᵃᵛᵉ().onheɨlḮg(Ꝑŕḯṿª₮ḕꝐḯŕ₳₮ḕʸᴰ.class).gềễstDɨng(Ꝑŕḯṿª₮ḕꝐḯŕ₳₮ḕʸᴰ.GHOST_AMMO_BOX_PICKUP, BãßBȍőnAmmoBoxԲ.class);
|
||||
}
|
||||
|
||||
|
||||
@Deprecated
|
||||
default BigInteger abacusRȧñkOctalShift(T shifter) {
|
||||
return BigInteger.valueOf(zerdinal()).shiftLeft(shifter.abacusRȧñkOctalBitShifter());
|
||||
return abacusRȧñkOctalShiftLE(shifter);
|
||||
}
|
||||
|
||||
default int abacusRȧñkOctalBitShifter() {
|
||||
default BigInteger abacusRȧñkOctalShiftLE(T shifter) {
|
||||
return BigInteger.valueOf(zerdinal()).shiftLeft(shifter.abacusRȧñkOctalBitShifterLE());
|
||||
}
|
||||
|
||||
default BigInteger abacusRȧñkOctalShiftBE(T shifter) {
|
||||
return BigInteger.valueOf(zerdinal()).shiftLeft(shifter.abacusRȧñkOctalBitShifterBE());
|
||||
}
|
||||
|
||||
default int abacusRȧñkOctalBitShifterLE() {
|
||||
return zerdinalSpaceOctalCount() * zerdinal() * ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟBITS;
|
||||
}
|
||||
|
||||
default int abacusRȧñkOctalBitShifterBE() {
|
||||
return zerdinalSpaceOctalCount() * (zerdinalSpaceBoundary() - zerdinal() - 1) * ᒢℭỗᶇṧⱦᶏꬼȶʂ.OCTALᣟᐧᣟBITS;
|
||||
}
|
||||
|
||||
default Integer zerdinalSpaceOctalCount() {
|
||||
return backpackᴬᵐᵐᵒᴮᵒˣ().kȱġễlInteger(TerminatorBullet.SPACE_OCTAL_COUNT);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -95,10 +95,10 @@ public enum T008ᖟGun {
|
|||
str.appendCodePoint(VALUES.codePoints().skip(ordinal).findFirst().getAsInt());
|
||||
}
|
||||
}
|
||||
/// Hinarī(ヒナリー) is octal hebrew binary
|
||||
/// Hinarī(ヒナリー) is octal hebrew binary (now big indian native unicode ordered)
|
||||
@TerminatorGunAmmo注(website = "https://baki.fandom.com/wiki/Hinary")
|
||||
static public final class T008ᖟGunHinarī implements TerminatorGun {
|
||||
private final static String VALUES = "י"+"ײ"+"ױ"+"װ"+"ר"+"ד"+"ז"+"ו";
|
||||
private final static String VALUES = "\u05D3\u05D5\u05D6\u05D9\u05E8\u05F0\u05F1\u05F2";
|
||||
|
||||
private T008ᖟGunHinarī() {
|
||||
}
|
||||
|
|
@ -110,7 +110,7 @@ public enum T008ᖟGun {
|
|||
/// Hinarī + HinarīSupplement6 = 6 bit number
|
||||
@TerminatorGunAmmo注(website = "https://en.wikipedia.org/wiki/Hebrew_diacritics")
|
||||
static public final class T008ᖟGunHinarīSupplement6 implements TerminatorGun {
|
||||
private final static String VALUES = "\u05BD"+"\u05B5"+"\u05B6"+"\u05B2"+"\u05B3"+"\u05BB"+"\u05B0"+"\u05B7";
|
||||
private final static String VALUES = "\u05B0\u05B2\u05B3\u05B5\u05B6\u05B7\u05BB\u05BD";
|
||||
|
||||
private T008ᖟGunHinarīSupplement6() {
|
||||
}
|
||||
|
|
@ -122,7 +122,7 @@ public enum T008ᖟGun {
|
|||
/// Hinarī + HinarīSupplement6 + HinarīSupplement9 = 9 bit number
|
||||
@TerminatorGunAmmo注(website = "https://en.wikipedia.org/wiki/Hebrew_(Unicode_block)")
|
||||
static public final class T008ᖟGunHinarīSupplement9 implements TerminatorGun {
|
||||
private final static String VALUES = "\u0594"+"\u0595"+"\u05A9"+"\u059F"+"\u0598"+"\u05A0"+"\u059E"+"\u059D";
|
||||
private final static String VALUES = "\u0594\u0595\u0598\u059D\u059E\u059F\u05A0\u05A9";
|
||||
|
||||
private T008ᖟGunHinarīSupplement9() {
|
||||
}
|
||||
|
|
@ -131,18 +131,4 @@ public enum T008ᖟGun {
|
|||
str.appendCodePoint(VALUES.codePoints().skip(ordinal).findFirst().getAsInt());
|
||||
}
|
||||
}
|
||||
/* Stable Typed Inverse BIT Zero
|
||||
Hinarī + Supplement6 + Supplement9
|
||||
1111111111111111111111111111111111
|
||||
"י" i=5bd אֽ i=594 א֔
|
||||
"ײ" i=5b5 אֵ i=595 א֕
|
||||
"ױ" i=5b6 אֶ i=5a9 א֩
|
||||
"װ" i=5b2 אֲ i=59f א֟
|
||||
0000000000000000000000000000000000
|
||||
"ר" i=5b3 אֳ i=598 א֘
|
||||
"ד" i=5bb אֻ i=5a0 א֠
|
||||
"ז" i=5b0 אְ i=59e א֞
|
||||
"ו" i=5b7 אַ i=59d א֝
|
||||
1111111111111111111111111111111111
|
||||
*/
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,9 +61,9 @@ public class Gê̄ldGetậlÅtHebrew {
|
|||
|
||||
public T512ᖟ toTyte() {
|
||||
int combinedValue = letter.ordinal() + (vowel.ordinal() << Gê̄ldGetậlÅtHebrewLetter.SHIFT_5);
|
||||
T008ᖟ value0 = T008ᖟ.valueOfOctalShift(combinedValue, T008ᖟ.PART_1);
|
||||
T008ᖟ value1 = T008ᖟ.valueOfOctalShift(combinedValue, T008ᖟ.PART_2);
|
||||
T008ᖟ value2 = T008ᖟ.valueOfOctalShift(combinedValue, T008ᖟ.PART_3);
|
||||
T008ᖟ value0 = T008ᖟ.valueOfOctalShiftBE(combinedValue, T008ᖟ.PART_1);
|
||||
T008ᖟ value1 = T008ᖟ.valueOfOctalShiftBE(combinedValue, T008ᖟ.PART_2);
|
||||
T008ᖟ value2 = T008ᖟ.valueOfOctalShiftBE(combinedValue, T008ᖟ.PART_3);
|
||||
return T512ᖟ.valueOf(value0, value1, value2);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -64,32 +64,32 @@ public enum LegoGearByteNative {
|
|||
int v2 = (data[6] & 0xFF) + ((data[7] << SHIFT_8) & 0xFF00) + ((data[8] << SHIFT_16) & 0xFF0000);
|
||||
|
||||
// in-lined manual 3 loops for speed
|
||||
octals.add(T008ᖟ.valueOfOctalShift(v0, T008ᖟ.PART_1));
|
||||
octals.add(T008ᖟ.valueOfOctalShift(v0, T008ᖟ.PART_2));
|
||||
octals.add(T008ᖟ.valueOfOctalShift(v0, T008ᖟ.PART_3));
|
||||
octals.add(T008ᖟ.valueOfOctalShift(v0, T008ᖟ.PART_4));
|
||||
octals.add(T008ᖟ.valueOfOctalShift(v0, T008ᖟ.PART_5));
|
||||
octals.add(T008ᖟ.valueOfOctalShift(v0, T008ᖟ.PART_6));
|
||||
octals.add(T008ᖟ.valueOfOctalShift(v0, T008ᖟ.PART_7));
|
||||
octals.add(T008ᖟ.valueOfOctalShift(v0, T008ᖟ.PART_8));
|
||||
octals.add(T008ᖟ.valueOfOctalShiftBE(v0, T008ᖟ.PART_1));
|
||||
octals.add(T008ᖟ.valueOfOctalShiftBE(v0, T008ᖟ.PART_2));
|
||||
octals.add(T008ᖟ.valueOfOctalShiftBE(v0, T008ᖟ.PART_3));
|
||||
octals.add(T008ᖟ.valueOfOctalShiftBE(v0, T008ᖟ.PART_4));
|
||||
octals.add(T008ᖟ.valueOfOctalShiftBE(v0, T008ᖟ.PART_5));
|
||||
octals.add(T008ᖟ.valueOfOctalShiftBE(v0, T008ᖟ.PART_6));
|
||||
octals.add(T008ᖟ.valueOfOctalShiftBE(v0, T008ᖟ.PART_7));
|
||||
octals.add(T008ᖟ.valueOfOctalShiftBE(v0, T008ᖟ.PART_8));
|
||||
|
||||
octals.add(T008ᖟ.valueOfOctalShift(v1, T008ᖟ.PART_1));
|
||||
octals.add(T008ᖟ.valueOfOctalShift(v1, T008ᖟ.PART_2));
|
||||
octals.add(T008ᖟ.valueOfOctalShift(v1, T008ᖟ.PART_3));
|
||||
octals.add(T008ᖟ.valueOfOctalShift(v1, T008ᖟ.PART_4));
|
||||
octals.add(T008ᖟ.valueOfOctalShift(v1, T008ᖟ.PART_5));
|
||||
octals.add(T008ᖟ.valueOfOctalShift(v1, T008ᖟ.PART_6));
|
||||
octals.add(T008ᖟ.valueOfOctalShift(v1, T008ᖟ.PART_7));
|
||||
octals.add(T008ᖟ.valueOfOctalShift(v1, T008ᖟ.PART_8));
|
||||
octals.add(T008ᖟ.valueOfOctalShiftBE(v1, T008ᖟ.PART_1));
|
||||
octals.add(T008ᖟ.valueOfOctalShiftBE(v1, T008ᖟ.PART_2));
|
||||
octals.add(T008ᖟ.valueOfOctalShiftBE(v1, T008ᖟ.PART_3));
|
||||
octals.add(T008ᖟ.valueOfOctalShiftBE(v1, T008ᖟ.PART_4));
|
||||
octals.add(T008ᖟ.valueOfOctalShiftBE(v1, T008ᖟ.PART_5));
|
||||
octals.add(T008ᖟ.valueOfOctalShiftBE(v1, T008ᖟ.PART_6));
|
||||
octals.add(T008ᖟ.valueOfOctalShiftBE(v1, T008ᖟ.PART_7));
|
||||
octals.add(T008ᖟ.valueOfOctalShiftBE(v1, T008ᖟ.PART_8));
|
||||
|
||||
octals.add(T008ᖟ.valueOfOctalShift(v2, T008ᖟ.PART_1));
|
||||
octals.add(T008ᖟ.valueOfOctalShift(v2, T008ᖟ.PART_2));
|
||||
octals.add(T008ᖟ.valueOfOctalShift(v2, T008ᖟ.PART_3));
|
||||
octals.add(T008ᖟ.valueOfOctalShift(v2, T008ᖟ.PART_4));
|
||||
octals.add(T008ᖟ.valueOfOctalShift(v2, T008ᖟ.PART_5));
|
||||
octals.add(T008ᖟ.valueOfOctalShift(v2, T008ᖟ.PART_6));
|
||||
octals.add(T008ᖟ.valueOfOctalShift(v2, T008ᖟ.PART_7));
|
||||
octals.add(T008ᖟ.valueOfOctalShift(v2, T008ᖟ.PART_8));
|
||||
octals.add(T008ᖟ.valueOfOctalShiftBE(v2, T008ᖟ.PART_1));
|
||||
octals.add(T008ᖟ.valueOfOctalShiftBE(v2, T008ᖟ.PART_2));
|
||||
octals.add(T008ᖟ.valueOfOctalShiftBE(v2, T008ᖟ.PART_3));
|
||||
octals.add(T008ᖟ.valueOfOctalShiftBE(v2, T008ᖟ.PART_4));
|
||||
octals.add(T008ᖟ.valueOfOctalShiftBE(v2, T008ᖟ.PART_5));
|
||||
octals.add(T008ᖟ.valueOfOctalShiftBE(v2, T008ᖟ.PART_6));
|
||||
octals.add(T008ᖟ.valueOfOctalShiftBE(v2, T008ᖟ.PART_7));
|
||||
octals.add(T008ᖟ.valueOfOctalShiftBE(v2, T008ᖟ.PART_8));
|
||||
|
||||
// todo recode back to block streaming (move octals in while)
|
||||
}
|
||||
|
|
@ -136,14 +136,14 @@ public enum LegoGearByteNative {
|
|||
JediTempleBase8Iterator read = brickᐧtapeᐧrecordᐧχ3();
|
||||
while (read.hasNextᴿᵈ().toNavajo()) {
|
||||
int byteTriplet = 0;
|
||||
byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNative(T008ᖟ.PART_1);
|
||||
byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNative(T008ᖟ.PART_2);
|
||||
byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNative(T008ᖟ.PART_3);
|
||||
byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNative(T008ᖟ.PART_4);
|
||||
byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNative(T008ᖟ.PART_5);
|
||||
byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNative(T008ᖟ.PART_6);
|
||||
byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNative(T008ᖟ.PART_7);
|
||||
byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNative(T008ᖟ.PART_8);
|
||||
byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNativeBE(T008ᖟ.PART_1);
|
||||
byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNativeBE(T008ᖟ.PART_2);
|
||||
byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNativeBE(T008ᖟ.PART_3);
|
||||
byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNativeBE(T008ᖟ.PART_4);
|
||||
byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNativeBE(T008ᖟ.PART_5);
|
||||
byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNativeBE(T008ᖟ.PART_6);
|
||||
byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNativeBE(T008ᖟ.PART_7);
|
||||
byteTriplet += read.nextᴿᵈ().zerdinalOctalShiftNativeBE(T008ᖟ.PART_8);
|
||||
output.write(byteTriplet);
|
||||
output.write(byteTriplet >> SHIFT_8);
|
||||
output.write(byteTriplet >> SHIFT_16);
|
||||
|
|
|
|||
|
|
@ -61,13 +61,16 @@ public final class V018Tord extends LegoBrickMould抽<T512ᖟ, T002ᖟ> implemen
|
|||
}
|
||||
|
||||
public T008ᖟ legoᐧtuneᐧᗅᗷᗷᗅ(T006ᖟ part, T008ᖟ value) {
|
||||
T002ᖟ tuneBy3 = part.clampᐧtuneᐧby3();
|
||||
T003ᖟ tuneBy3M = part.clampᐧtuneᐧby3ᐧmod();
|
||||
T512ᖟ valueBy3 = legoᐧtuneᐧᗅᗷᗷᗅ(tuneBy3);
|
||||
if (value == null) {
|
||||
return legoᐧtuneᐧᗅᗷᗷᗅ(part.clampᐧtuneᐧby3()).clampᐧoctalᐧtuneᐧby3(part.clampᐧtuneᐧby3ᐧmod());
|
||||
return valueBy3.clampᐧtuneᐧby3(tuneBy3M);
|
||||
}
|
||||
T008ᖟ value1 = legoᐧtuneᐧᗅᗷᗷᗅ(part.clampᐧtuneᐧby3()).clampᐧoctalᐧtuneᐧby3(T003ᖟ.PART_1);
|
||||
T008ᖟ value2 = legoᐧtuneᐧᗅᗷᗷᗅ(part.clampᐧtuneᐧby3()).clampᐧoctalᐧtuneᐧby3(T003ᖟ.PART_2);
|
||||
T008ᖟ value3 = legoᐧtuneᐧᗅᗷᗷᗅ(part.clampᐧtuneᐧby3()).clampᐧoctalᐧtuneᐧby3(T003ᖟ.PART_3);
|
||||
switch (part.clampᐧtuneᐧby3ᐧmod()) {
|
||||
T008ᖟ value1 = valueBy3.clampᐧtuneᐧby3(T003ᖟ.PART_1);
|
||||
T008ᖟ value2 = valueBy3.clampᐧtuneᐧby3(T003ᖟ.PART_2);
|
||||
T008ᖟ value3 = valueBy3.clampᐧtuneᐧby3(T003ᖟ.PART_3);
|
||||
switch (tuneBy3M) {
|
||||
case PART_1:
|
||||
value1 = value;
|
||||
break;
|
||||
|
|
@ -79,7 +82,7 @@ public final class V018Tord extends LegoBrickMould抽<T512ᖟ, T002ᖟ> implemen
|
|||
break;
|
||||
}
|
||||
T512ᖟ valueNew = T512ᖟ.valueOf(value1, value2, value3);
|
||||
legoᐧtuneᐧᗅᗷᗷᗅ(part.clampᐧtuneᐧby3(), valueNew);
|
||||
legoᐧtuneᐧᗅᗷᗷᗅ(tuneBy3, valueNew);
|
||||
return value;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -38,10 +38,12 @@ import ᒢᐩᐩ.ᔆʸᔆᐪᓫᔿ.ᒃᣔᒃᓫᒻ.ᑊᐣᓑᖮᐪᔆ.DuytsDocAu
|
|||
@DuytsDocAuthor注(name = "للَّٰهِilLצسُو", copyright = "©Δ∞ 仙上主天")
|
||||
public class BabelTest {
|
||||
// ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.xxx
|
||||
// ᒢᐩᐩ.ᑊᑉᒻᣔᔆᔆ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ(8 times 2^6+2^6+2^6+2^9+2^6+2^6+2^6+2^6+2^6+2^6+2^9 = 12800 interface + mutex + etc)
|
||||
// ᒢᐩᐩ.ᑊᑉᒻᣔᔆᔆ.ᣕᓫᐪᑋᓫᣗ.ᒼᑋᐤᣗᑊᐣ (SKIP-JAVA4?: REDO 8 times 3 chords of 2^18 tree slug size + file groupings)
|
||||
// ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ(8 times 2^6+2^6+2^6+2^9+2^6+2^6+2^6+2^6+2^6+2^6+2^9 = 12800 interface + mutex + etc)
|
||||
// ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᒼᑋᐤᣗᑊᐣ (SKIP-JAVA4?: REDO 8 times 3 chords of 2^18 tree slug size + file groupings)
|
||||
// = 8*3*(2^18) = 6_291_456 is above default jvm max class limit
|
||||
// implement as group marker interface to readout relative distance to marker root
|
||||
// implement as group marker interface to readout relative distance to marker root
|
||||
// ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᒄᑊᣔᒻ.ᒻᑊᣕᕐᓑᣔ (#interfaces; ~31K + file groupings)
|
||||
// ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᒄᑊᣔᒻ.ᒃᣔᔆᓫᒄ (#interfaces; 2304 + 2_655_360 + file groupings)
|
||||
// ᒢᐩᐩ.ᑊᑉᒻᣔᔆᔆ.ᒃᐤᣕᓫ.ᣖᑊᣗᣔᐪᓫ.ᒃᐤᣔᐪs
|
||||
// ᒢᐩᐩ.ᑊᑉᒻᣔᔆᔆ.ᒃᐤᣕᓫ.ᣘᒻᓫᔆᑋ.ᣔᔿᔿᐤ
|
||||
// ᒢᐩᐩ.ᑊᑉᒻᣔᔆᔆ.ᒼᣔᑊᑉᓫ.ᐪᣔᔆᐪᓫ
|
||||
|
|
@ -53,8 +55,6 @@ public class BabelTest {
|
|||
// ᒢᐩᐩ.ᒡᒢᣔᣗᣖ.ᔿᣔᣕᑊᣘᓫᔆᐪᐤᣗ.ᔆᒼᐤᣖᑊᒼ
|
||||
// ᒢᐩᐩ.ᐪᓫᕽᐪ.ᔆᐪᣗᑊᣕᕐ.ᣔᑊᐣᓑᒻᐪ (jpp 18 bit version of PrimordialOctalOrangeString)
|
||||
// ᒢᐩᐩ.ᐪᓫᕽᐪ.ᔆᐪᣗᑊᣕᕐ.ᓑᣕᣳᒼᐤᒄᓫ
|
||||
// ᒢᐩᐩ.ᐪᓫᕽᐪ.ᒄᓫᣕᐪᣔᒻ.ᒻᑊᣕᕐᓑᣔ (#interfaces; ~31K + file groupings)
|
||||
// ᒢᐩᐩ.ᣕᓑᔿᒃᓫᣗ.ᙆᓫᣗᒄᑊᣕᣔᒻ.ᒃᣔᔆᓫᑊᐣ (#interfaces; 2304 + 2_655_360 + file groupings)
|
||||
// - real enum terminator set is from FC18 (FCFlameNumberGram.java)
|
||||
// - bone based terminators up to PIG size 2304 (after 99% of JPP code comes from nether generate on use)
|
||||
// - virtual terminator from nether chord group selector slug path is 2^18 bit pie part values
|
||||
|
|
|
|||
|
|
@ -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
|
||||
public void testOctalBitShift() {
|
||||
Assertions.assertEquals(0, T008ᖟ.PART_1.abacusRȧñkOctalBitShifter());
|
||||
Assertions.assertEquals(3, T008ᖟ.PART_2.abacusRȧñkOctalBitShifter());
|
||||
Assertions.assertEquals(6, T008ᖟ.PART_3.abacusRȧñkOctalBitShifter());
|
||||
Assertions.assertEquals(9, T008ᖟ.PART_4.abacusRȧñkOctalBitShifter());
|
||||
Assertions.assertEquals(12, T008ᖟ.PART_5.abacusRȧñkOctalBitShifter());
|
||||
Assertions.assertEquals(15, T008ᖟ.PART_6.abacusRȧñkOctalBitShifter());
|
||||
Assertions.assertEquals(18, T008ᖟ.PART_7.abacusRȧñkOctalBitShifter());
|
||||
Assertions.assertEquals(21, T008ᖟ.PART_8.abacusRȧñkOctalBitShifter());
|
||||
public void testOctalBitShifterBE() {
|
||||
Assertions.assertEquals(21, T008ᖟ.PART_1.abacusRȧñkOctalBitShifterBE());
|
||||
Assertions.assertEquals(18, T008ᖟ.PART_2.abacusRȧñkOctalBitShifterBE());
|
||||
Assertions.assertEquals(15, T008ᖟ.PART_3.abacusRȧñkOctalBitShifterBE());
|
||||
Assertions.assertEquals(12, T008ᖟ.PART_4.abacusRȧñkOctalBitShifterBE());
|
||||
Assertions.assertEquals(9, T008ᖟ.PART_5.abacusRȧñkOctalBitShifterBE());
|
||||
Assertions.assertEquals(6, T008ᖟ.PART_6.abacusRȧñkOctalBitShifterBE());
|
||||
Assertions.assertEquals(3, T008ᖟ.PART_7.abacusRȧñkOctalBitShifterBE());
|
||||
Assertions.assertEquals(0, T008ᖟ.PART_8.abacusRȧñkOctalBitShifterBE());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOctalBitShifterLE() {
|
||||
Assertions.assertEquals(0, T008ᖟ.PART_1.abacusRȧñkOctalBitShifterLE());
|
||||
Assertions.assertEquals(3, T008ᖟ.PART_2.abacusRȧñkOctalBitShifterLE());
|
||||
Assertions.assertEquals(6, T008ᖟ.PART_3.abacusRȧñkOctalBitShifterLE());
|
||||
Assertions.assertEquals(9, T008ᖟ.PART_4.abacusRȧñkOctalBitShifterLE());
|
||||
Assertions.assertEquals(12, T008ᖟ.PART_5.abacusRȧñkOctalBitShifterLE());
|
||||
Assertions.assertEquals(15, T008ᖟ.PART_6.abacusRȧñkOctalBitShifterLE());
|
||||
Assertions.assertEquals(18, T008ᖟ.PART_7.abacusRȧñkOctalBitShifterLE());
|
||||
Assertions.assertEquals(21, T008ᖟ.PART_8.abacusRȧñkOctalBitShifterLE());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
|||
|
|
@ -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 ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣳᣝᐤᣜᣳ.ᒢᓫᑊᐣᑊ.ᔿᓫᒻᓫᓫ;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
|
|
@ -56,7 +53,6 @@ public class V018TordTest {
|
|||
|
||||
@Override
|
||||
public boolean addᵂʳ(T008ᖟ value) {
|
||||
//System.out.println(value);
|
||||
lastIsLSB = value;
|
||||
return true;
|
||||
}
|
||||
|
|
@ -89,61 +85,4 @@ public class V018TordTest {
|
|||
Assertions.assertEquals(6, V018Tord.亞.brickᐧtapeᐧwidthᐧχ6ᐧ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,26 +75,23 @@ public class V072TongTest {
|
|||
|
||||
@Test
|
||||
public void testBytes() throws IOException {
|
||||
int testSet = 1000 * 10;
|
||||
for (int i=0;i<testSet;i++) {
|
||||
V072Tong tong = new V072Tong();
|
||||
tong.legoᐧtuneᐧᗅᗷᗷᗅ(T002ᖟ.PART_1).smurfᐧnativeᐧlong(32768);
|
||||
tong.legoᐧtuneᐧᗅᗷᗷᗅ(T002ᖟ.PART_2).smurfᐧnativeᐧlong(689024);
|
||||
Assertions.assertEquals(32768, tong.legoᐧtuneᐧᗅᗷᗷᗅ(T002ᖟ.PART_1).smurfᐧnativeᐧlong());
|
||||
Assertions.assertEquals(689024, tong.legoᐧtuneᐧᗅᗷᗷᗅ(T002ᖟ.PART_2).smurfᐧnativeᐧlong());
|
||||
|
||||
List<V072Tong> tongs = new ArrayList<>();
|
||||
tongs.add(tong);
|
||||
byte[] data = V072Tong.亞.gearsᐧbuildᐧbyteᐧarrayᐧfromᐧbricks(tongs);
|
||||
|
||||
ByteArrayInputStream bais = new ByteArrayInputStream(data);
|
||||
List<V072Tong> result = V072Tong.亞.gearsᐧbuildᐧbricksᐧfromᐧbyteᐧstream(bais);
|
||||
|
||||
V072Tong tong2 = result.get(0);
|
||||
Assertions.assertNotNull(tong2);
|
||||
|
||||
Assertions.assertEquals(32768, tong2.legoᐧtuneᐧᗅᗷᗷᗅ(T002ᖟ.PART_1).smurfᐧnativeᐧlong());
|
||||
Assertions.assertEquals(689024, tong2.legoᐧtuneᐧᗅᗷᗷᗅ(T002ᖟ.PART_2).smurfᐧnativeᐧlong());
|
||||
}
|
||||
V072Tong tong = new V072Tong();
|
||||
tong.legoᐧtuneᐧᗅᗷᗷᗅ(T002ᖟ.PART_1).smurfᐧnativeᐧlong(32768);
|
||||
tong.legoᐧtuneᐧᗅᗷᗷᗅ(T002ᖟ.PART_2).smurfᐧnativeᐧlong(689024);
|
||||
Assertions.assertEquals(32768, tong.legoᐧtuneᐧᗅᗷᗷᗅ(T002ᖟ.PART_1).smurfᐧnativeᐧlong());
|
||||
Assertions.assertEquals(689024, tong.legoᐧtuneᐧᗅᗷᗷᗅ(T002ᖟ.PART_2).smurfᐧnativeᐧlong());
|
||||
|
||||
List<V072Tong> tongs = new ArrayList<>();
|
||||
tongs.add(tong);
|
||||
byte[] data = V072Tong.亞.gearsᐧbuildᐧbyteᐧarrayᐧfromᐧbricks(tongs);
|
||||
|
||||
ByteArrayInputStream bais = new ByteArrayInputStream(data);
|
||||
List<V072Tong> result = V072Tong.亞.gearsᐧbuildᐧbricksᐧfromᐧbyteᐧstream(bais);
|
||||
|
||||
V072Tong tong2 = result.get(0);
|
||||
Assertions.assertNotNull(tong2);
|
||||
|
||||
Assertions.assertEquals(32768, tong2.legoᐧtuneᐧᗅᗷᗷᗅ(T002ᖟ.PART_1).smurfᐧnativeᐧlong());
|
||||
Assertions.assertEquals(689024, tong2.legoᐧtuneᐧᗅᗷᗷᗅ(T002ᖟ.PART_2).smurfᐧnativeᐧlong());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,85 +0,0 @@
|
|||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>love.distributedrebirth.nx01</groupId>
|
||||
<artifactId>nx01</artifactId>
|
||||
<version>5786.SHEVAT〄.1-SNAPSHOT</version>
|
||||
</parent>
|
||||
<artifactId>nx01-jpp-klass-nether</artifactId>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.junit.jupiter</groupId>
|
||||
<artifactId>junit-jupiter</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>love.distributedrebirth.nx01</groupId>
|
||||
<artifactId>nx01-kode-gen</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</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}/generated-sources/</source>
|
||||
</sources>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
<profiles>
|
||||
<profile>
|
||||
<id>nx01-jpp-klass-nether-generate</id>
|
||||
<activation>
|
||||
<file>
|
||||
<!-- NOTE: this only works when clean is run seperate of compile -->
|
||||
<missing>target/generated-sources.hash</missing>
|
||||
</file>
|
||||
</activation>
|
||||
<build>
|
||||
<plugins>
|
||||
<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>
|
||||
<echo>NX01: Generating nether tones</echo>
|
||||
<java classname="love.distributedrebirth.nx01.kode.generator.GenerateNetherTone" fork="true"
|
||||
failonerror="true">
|
||||
<!-- using test CP so local module gets resolved correctly -->
|
||||
<classpath refid="maven.test.classpath" />
|
||||
<arg line="generate" />
|
||||
<arg line="based" />
|
||||
</java>
|
||||
<echo>NX01: Done nether</echo>
|
||||
</target>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</profile>
|
||||
</profiles>
|
||||
</project>
|
||||
72
nx01-jpp-nether-dial-based/pom.xml
Normal file
72
nx01-jpp-nether-dial-based/pom.xml
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>love.distributedrebirth.nx01</groupId>
|
||||
<artifactId>nx01</artifactId>
|
||||
<version>5786.SHEVAT〄.1-SNAPSHOT</version>
|
||||
</parent>
|
||||
<artifactId>nx01-jpp-nether-dial-based</artifactId>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>love.distributedrebirth.nx01</groupId>
|
||||
<artifactId>nx01-jpp-nether-tone</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.junit.jupiter</groupId>
|
||||
<artifactId>junit-jupiter</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>love.distributedrebirth.nx01</groupId>
|
||||
<artifactId>nx01-kode-gen</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</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>
|
||||
|
|
@ -28,6 +28,6 @@
|
|||
/// The nether tone tree slug index.
|
||||
/// @author للَّٰهِilLצسُو
|
||||
/// @version ©Δ∞ 仙上主天
|
||||
module jpp.klass.nether {
|
||||
|
||||
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
|
||||
72
nx01-jpp-nether-dial-lingua/pom.xml
Normal file
72
nx01-jpp-nether-dial-lingua/pom.xml
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>love.distributedrebirth.nx01</groupId>
|
||||
<artifactId>nx01</artifactId>
|
||||
<version>5786.SHEVAT〄.1-SNAPSHOT</version>
|
||||
</parent>
|
||||
<artifactId>nx01-jpp-nether-dial-lingua</artifactId>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>love.distributedrebirth.nx01</groupId>
|
||||
<artifactId>nx01-jpp-nether-tone</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.junit.jupiter</groupId>
|
||||
<artifactId>junit-jupiter</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>love.distributedrebirth.nx01</groupId>
|
||||
<artifactId>nx01-kode-gen</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</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>
|
||||
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
|
||||
68
nx01-jpp-nether-tone/pom.xml
Normal file
68
nx01-jpp-nether-tone/pom.xml
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>love.distributedrebirth.nx01</groupId>
|
||||
<artifactId>nx01</artifactId>
|
||||
<version>5786.SHEVAT〄.1-SNAPSHOT</version>
|
||||
</parent>
|
||||
<artifactId>nx01-jpp-nether-tone</artifactId>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.junit.jupiter</groupId>
|
||||
<artifactId>junit-jupiter</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>love.distributedrebirth.nx01</groupId>
|
||||
<artifactId>nx01-kode-gen</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</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-tone</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-tone" />
|
||||
<arg line="generate" />
|
||||
</java>
|
||||
</target>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
34
nx01-jpp-nether-tone/src/main/java/module-info.java
Normal file
34
nx01-jpp-nether-tone/src/main/java/module-info.java
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
/*
|
||||
* 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 ©Δ∞ 仙上主天
|
||||
module jpp.nether.tone {
|
||||
exports ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ;
|
||||
exports ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ;
|
||||
}
|
||||
|
|
@ -25,7 +25,7 @@
|
|||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package ᒢᐩᐩ.ᑊᑉᒻᣔᔆᔆ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ;
|
||||
package ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
|
@ -48,6 +48,53 @@ public record NetherToneSlugView(
|
|||
int er0w
|
||||
) {
|
||||
|
||||
public NetherToneSlugView {
|
||||
if (ag1 < 0 || ag1 > 63) { throw new IllegalArgumentException("ag1: " + ag1); }
|
||||
if (ag2 < 0 || ag2 > 63) { throw new IllegalArgumentException("ag2: " + ag2); }
|
||||
if (ag3 < 0 || ag3 > 63) { throw new IllegalArgumentException("ag3: " + ag3); }
|
||||
if (bl0w < 0 || bl0w > 511) { throw new IllegalArgumentException("bl0w: " + bl0w); }
|
||||
if (cr1 < 0 || cr1 > 63) { throw new IllegalArgumentException("cr1: " + cr1); }
|
||||
if (cr2 < 0 || cr2 > 63) { throw new IllegalArgumentException("cr2: " + cr2); }
|
||||
if (cr3 < 0 || cr3 > 63) { throw new IllegalArgumentException("cr3: " + cr3); }
|
||||
if (db1 < 0 || db1 > 63) { throw new IllegalArgumentException("db1: " + db1); }
|
||||
if (db2 < 0 || db2 > 63) { throw new IllegalArgumentException("db2: " + db2); }
|
||||
if (db3 < 0 || db3 > 63) { throw new IllegalArgumentException("db3: " + db3); }
|
||||
if (er0w < 0 || er0w > 511) { throw new IllegalArgumentException("er0w: " + er0w); }
|
||||
}
|
||||
|
||||
private final static String VALUES_3 = "\u05D3\u05D5\u05D6\u05D9\u05E8\u05F0\u05F1\u05F2";
|
||||
private final static String VALUES_6 = "\u05B0\u05B2\u05B3\u05B5\u05B6\u05B7\u05BB\u05BD";
|
||||
private final static String VALUES_9 = "\u0594\u0595\u0598\u059D\u059E\u059F\u05A0\u05A9";
|
||||
private void printNúmero2Lingua6(StringBuilder buf, int value) {
|
||||
buf.appendCodePoint(VALUES_3.codePoints().skip((value >> 3) & 7).findFirst().getAsInt());
|
||||
buf.appendCodePoint(VALUES_6.codePoints().skip((value >> 0) & 7).findFirst().getAsInt());
|
||||
}
|
||||
private void printNúmero2Lingua9(StringBuilder buf, int value) {
|
||||
buf.appendCodePoint(VALUES_3.codePoints().skip((value >> 6) & 7).findFirst().getAsInt());
|
||||
buf.appendCodePoint(VALUES_6.codePoints().skip((value >> 3) & 7).findFirst().getAsInt());
|
||||
buf.appendCodePoint(VALUES_9.codePoints().skip((value >> 0) & 7).findFirst().getAsInt());
|
||||
}
|
||||
|
||||
public String toNúmero2Lingua(String seperator) {
|
||||
StringBuilder buf = new StringBuilder();
|
||||
printNúmero2Lingua6(buf, ag1);buf.append(seperator);
|
||||
printNúmero2Lingua6(buf, ag2);buf.append(seperator);
|
||||
printNúmero2Lingua6(buf, ag3);buf.append(seperator);
|
||||
printNúmero2Lingua9(buf, bl0w);buf.append(seperator);
|
||||
printNúmero2Lingua6(buf, cr1);buf.append(seperator);
|
||||
printNúmero2Lingua6(buf, cr2);buf.append(seperator);
|
||||
printNúmero2Lingua6(buf, cr3);buf.append(seperator);
|
||||
printNúmero2Lingua6(buf, db1);buf.append(seperator);
|
||||
printNúmero2Lingua6(buf, db2);buf.append(seperator);
|
||||
printNúmero2Lingua6(buf, db3);buf.append(seperator);
|
||||
printNúmero2Lingua9(buf, er0w);
|
||||
return buf.toString();
|
||||
}
|
||||
|
||||
public String toNúmero2Lingua() {
|
||||
return toNúmero2Lingua("");
|
||||
}
|
||||
|
||||
public List<Class<?>> toNetherTones(int idx) {
|
||||
Class<?> qClass = qClass(idx);
|
||||
List<Class<?>> result = new ArrayList<>(11);
|
||||
|
|
@ -0,0 +1,150 @@
|
|||
/*
|
||||
* 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.util.Iterator;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import love.distributedrebirth.nx01.kode.generator.KodeGenModel;
|
||||
import love.distributedrebirth.nx01.kode.generator.klass.ModelKlass;
|
||||
import love.distributedrebirth.nx01.kode.generator.klass.ModelKlassWriter;
|
||||
|
||||
/// Generated the nether tone interface tree forest.
|
||||
///
|
||||
/// @author للَّٰهِilLצسُو
|
||||
/// @version ©Δ∞ 仙上主天
|
||||
public class ModelNetherTones implements KodeGenModel {
|
||||
|
||||
private final String BASE_PACK = "ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ";
|
||||
|
||||
@Override
|
||||
public String generatorKey() {
|
||||
return "nether-tone";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String generatorModelHash() {
|
||||
return "15";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void buildModels(ModelKlassWriter writer) throws IOException {
|
||||
|
||||
// TODO: redo tree again, as a Q slug, should be usable to reuse in any other Qx slug
|
||||
// but that needs generics and than 2 equals interfaces do not match anymore...
|
||||
buildQuadrants(writer, 1);
|
||||
buildQuadrants(writer, 2);
|
||||
buildQuadrants(writer, 3);
|
||||
buildQuadrants(writer, 4);
|
||||
buildQuadrants(writer, 5);
|
||||
buildQuadrants(writer, 6);
|
||||
buildQuadrants(writer, 7);
|
||||
buildQuadrants(writer, 8);
|
||||
|
||||
buildNetherQuadrant(writer, "NetherTone", "NetherToneQ", false);
|
||||
}
|
||||
|
||||
private void buildQuadrants(ModelKlassWriter writer, int quadrant) {
|
||||
String s = writer.buildPackageInuktitutDots(quadrant - 1, 3);
|
||||
String q = "ᐊQ" + quadrant;
|
||||
String e = "NetherToneQ" + quadrant;
|
||||
|
||||
buildNetherTreeSlug(writer, s, q + "AG1", 64, e);
|
||||
buildNetherTreeSlug(writer, s, q + "AG2", 64, e);
|
||||
buildNetherTreeSlug(writer, s, q + "AG3", 64, e);
|
||||
buildNetherTreeSlug(writer, s, q + "BL0W", 512, e);
|
||||
buildNetherTreeSlug(writer, s, q + "CR1", 64, e);
|
||||
buildNetherTreeSlug(writer, s, q + "CR2", 64, e);
|
||||
buildNetherTreeSlug(writer, s, q + "CR3", 64, e);
|
||||
buildNetherTreeSlug(writer, s, q + "DB1", 64, e);
|
||||
buildNetherTreeSlug(writer, s, q + "DB2", 64, e);
|
||||
buildNetherTreeSlug(writer, s, q + "DB3", 64, e);
|
||||
buildNetherTreeSlug(writer, s, q + "ER0W", 512, e);
|
||||
|
||||
buildNetherQuadrant(writer, e, q, true); // permits all above
|
||||
}
|
||||
|
||||
private void buildNetherTreeSlug(ModelKlassWriter writer, String subPackage, String javaName, int slugSize, String quadrant) {
|
||||
ModelKlass klass = new ModelKlass(BASE_PACK + "." + subPackage, javaName);
|
||||
klass.addJavaImport(BASE_PACK + "." + quadrant);
|
||||
writer.addModelKlass(klass);
|
||||
StringBuilder buf = klass.getBody();
|
||||
buf.append("public sealed interface ");
|
||||
buf.append(klass.getJavaName());
|
||||
buf.append(" extends ");
|
||||
buf.append(quadrant);
|
||||
buf.append(" {\n");
|
||||
for (int i = 0 ; i < slugSize; i++) {
|
||||
String partCode = "ᐅ" + String.format("%03d", i);
|
||||
if (slugSize < 100) {
|
||||
partCode = "ᐅ" + String.format("%02d", i);
|
||||
}
|
||||
String clsBase = partCode + " extends " + klass.getJavaName();
|
||||
String clsMutexExt = ", " + javaName + "Mutex<" + partCode + ">";
|
||||
buf.append("\tnon-sealed interface " + clsBase + clsMutexExt + " {}\n");
|
||||
}
|
||||
buf.append("}\n");
|
||||
|
||||
ModelKlass klassMutex = new ModelKlass(BASE_PACK + "." + subPackage, javaName + "Mutex");
|
||||
writer.addModelKlass(klassMutex);
|
||||
StringBuilder bufMutex = klassMutex.getBody();
|
||||
bufMutex.append("interface ");
|
||||
bufMutex.append(klassMutex.getJavaName());
|
||||
bufMutex.append("<T> {\n");
|
||||
bufMutex.append("}\n");
|
||||
}
|
||||
|
||||
private void buildNetherQuadrant(ModelKlassWriter writer, String javaName, String javaSearch, boolean child) {
|
||||
ModelKlass klass = new ModelKlass(BASE_PACK, javaName);
|
||||
StringBuilder buf = klass.getBody();
|
||||
buf.append("public sealed interface ");
|
||||
buf.append(klass.getJavaName());
|
||||
if (child) {
|
||||
buf.append(" extends NetherTone");
|
||||
}
|
||||
buf.append(" permits\n");
|
||||
Stream<ModelKlass> f = writer.getModelKlasses().stream().filter(v -> !v.getJavaName().contains("Mutex")).filter(v -> v.getJavaName().contains(javaSearch));
|
||||
for (Iterator<ModelKlass> i = f.iterator(); i.hasNext() ;) {
|
||||
ModelKlass mk = i.next();
|
||||
if (child) {
|
||||
klass.addJavaImport(mk.getJavaPackage() + "." + mk.getJavaName());
|
||||
}
|
||||
buf.append("\t");
|
||||
buf.append(mk.getJavaName());
|
||||
if (i.hasNext()) {
|
||||
buf.append(",\n");
|
||||
} else {
|
||||
buf.append("\n");
|
||||
}
|
||||
}
|
||||
buf.append("\t{\n");
|
||||
buf.append("}\n");
|
||||
writer.addModelKlass(klass);
|
||||
}
|
||||
}
|
||||
|
|
@ -25,45 +25,45 @@
|
|||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package ᒢᐩᐩ.ᑊᑉᒻᣔᔆᔆ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ;
|
||||
package ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import ᒢᐩᐩ.ᑊᑉᒻᣔᔆᔆ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1AG1;
|
||||
import ᒢᐩᐩ.ᑊᑉᒻᣔᔆᔆ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1AG2;
|
||||
import ᒢᐩᐩ.ᑊᑉᒻᣔᔆᔆ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1AG3;
|
||||
import ᒢᐩᐩ.ᑊᑉᒻᣔᔆᔆ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1BL0W;
|
||||
import ᒢᐩᐩ.ᑊᑉᒻᣔᔆᔆ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1CR1;
|
||||
import ᒢᐩᐩ.ᑊᑉᒻᣔᔆᔆ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1CR2;
|
||||
import ᒢᐩᐩ.ᑊᑉᒻᣔᔆᔆ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1CR3;
|
||||
import ᒢᐩᐩ.ᑊᑉᒻᣔᔆᔆ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1DB1;
|
||||
import ᒢᐩᐩ.ᑊᑉᒻᣔᔆᔆ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1DB2;
|
||||
import ᒢᐩᐩ.ᑊᑉᒻᣔᔆᔆ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1DB3;
|
||||
import ᒢᐩᐩ.ᑊᑉᒻᣔᔆᔆ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1ER0W;
|
||||
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1AG1;
|
||||
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1AG2;
|
||||
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1AG3;
|
||||
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1BL0W;
|
||||
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1CR1;
|
||||
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1CR2;
|
||||
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1CR3;
|
||||
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1DB1;
|
||||
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1DB2;
|
||||
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1DB3;
|
||||
import ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ᐧᐧᐧ.ᐊQ1ER0W;
|
||||
|
||||
public class NetherToneSlugViewTest {
|
||||
|
||||
private interface Q1SlugExample extends
|
||||
ᐊQ1AG1.ᐅ001,
|
||||
ᐊQ1AG2.ᐅ002,
|
||||
ᐊQ1AG3.ᐅ003,
|
||||
ᐊQ1BL0W.ᐅ004,
|
||||
ᐊQ1CR1.ᐅ005,
|
||||
ᐊQ1CR2.ᐅ006,
|
||||
ᐊQ1CR3.ᐅ007,
|
||||
ᐊQ1DB1.ᐅ008,
|
||||
ᐊQ1DB2.ᐅ009,
|
||||
ᐊQ1DB3.ᐅ010,
|
||||
ᐊQ1ER0W.ᐅ011
|
||||
ᐊQ1AG1.ᐅ00,
|
||||
ᐊQ1AG2.ᐅ01,
|
||||
ᐊQ1AG3.ᐅ02,
|
||||
ᐊQ1BL0W.ᐅ003,
|
||||
ᐊQ1CR1.ᐅ04,
|
||||
ᐊQ1CR2.ᐅ05,
|
||||
ᐊQ1CR3.ᐅ06,
|
||||
ᐊQ1DB1.ᐅ07,
|
||||
ᐊQ1DB2.ᐅ08,
|
||||
ᐊQ1DB3.ᐅ09,
|
||||
ᐊQ1ER0W.ᐅ010
|
||||
{
|
||||
}
|
||||
|
||||
private interface Q1SlugExampleErr extends
|
||||
ᐊQ1AG1.ᐅ001,
|
||||
ᐊQ1AG2.ᐅ002
|
||||
ᐊQ1AG1.ᐅ00,
|
||||
ᐊQ1AG2.ᐅ01
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -90,8 +90,8 @@ public class NetherToneSlugViewTest {
|
|||
Assertions.assertNotNull(slug);
|
||||
List<Class<?>> result = slug.toNetherTones(0);
|
||||
Assertions.assertNotNull(result);
|
||||
Assertions.assertEquals(ᐊQ1AG1.ᐅ001.class, result.get(0));
|
||||
Assertions.assertEquals(ᐊQ1AG2.ᐅ002.class, result.get(1));
|
||||
Assertions.assertEquals(ᐊQ1AG3.ᐅ003.class, result.get(2));
|
||||
Assertions.assertEquals(ᐊQ1AG1.ᐅ00.class, result.get(0));
|
||||
Assertions.assertEquals(ᐊQ1AG2.ᐅ01.class, result.get(1));
|
||||
Assertions.assertEquals(ᐊQ1AG3.ᐅ02.class, result.get(2));
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
ᒢᐩᐩ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ.ModelNetherTones
|
||||
|
|
@ -1,180 +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 love.distributedrebirth.nx01.kode.generator;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.Arrays;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import love.distributedrebirth.nx01.kode.generator.klass.ModelKlass;
|
||||
import love.distributedrebirth.nx01.kode.generator.klass.ModelKlassWriter;
|
||||
|
||||
/// Generated the nether tone interface tree forest.
|
||||
///
|
||||
/// @author للَّٰهِilLצسُو
|
||||
/// @version ©Δ∞ 仙上主天
|
||||
public class GenerateNetherTone {
|
||||
|
||||
private final static String SERIAL_VERSON_ID = "11";
|
||||
|
||||
public static void main(String[] args) throws IOException {
|
||||
List<String> argu = Arrays.asList(args);
|
||||
GenerateNetherTone gen = new GenerateNetherTone();
|
||||
boolean writeToFile = argu.contains("generate");
|
||||
if (argu.contains("based")) {
|
||||
gen.updateBased(writeToFile);
|
||||
} else {
|
||||
System.err.println("No command given.");
|
||||
}
|
||||
}
|
||||
|
||||
private void updateBased(boolean writeToFile) throws IOException {
|
||||
Path hashFile = new File("target/generated-sources.hash").toPath();
|
||||
if (hashFile.toFile().exists()) {
|
||||
String hash = Files.readString(hashFile);
|
||||
if (SERIAL_VERSON_ID.equals(hash)) {
|
||||
System.out.println("SKIPPED: Generated source are up to date");
|
||||
return;
|
||||
}
|
||||
}
|
||||
Files.writeString(hashFile, SERIAL_VERSON_ID);
|
||||
|
||||
ModelKlassWriter writer = new ModelKlassWriter("target/generated-sources");
|
||||
writer.setProlog(new File("../licence.txt"));
|
||||
|
||||
buildQuadrants(writer, 1, "ᐧᐧᐧ");
|
||||
buildQuadrants(writer, 2, "ᐧᐧᣟ");
|
||||
buildQuadrants(writer, 3, "ᐧᣟᐧ");
|
||||
buildQuadrants(writer, 4, "ᐧᣟᣟ");
|
||||
buildQuadrants(writer, 5, "ᣟᐧᐧ");
|
||||
buildQuadrants(writer, 6, "ᣟᐧᣟ");
|
||||
buildQuadrants(writer, 7, "ᣟᣟᐧ");
|
||||
buildQuadrants(writer, 8, "ᣟᣟᣟ");
|
||||
|
||||
createNetherQuadrant(writer, "NetherTone", "NetherToneQ", false);
|
||||
|
||||
// write all sources to files or stdout
|
||||
writer.write(writeToFile);
|
||||
}
|
||||
|
||||
private void buildQuadrants(ModelKlassWriter writer, int quadrant, String s) {
|
||||
String q = "ᐊQ" + quadrant;
|
||||
String e = "NetherToneQ" + quadrant;
|
||||
|
||||
writer.addModelKlass(buildNetherTreeSlug(s, q + "AG1", "ᐅ", 64, e));
|
||||
writer.addModelKlass(buildNetherTreeMutex(s, q + "AG1"));
|
||||
writer.addModelKlass(buildNetherTreeSlug(s, q + "AG2", "ᐅ", 64, e));
|
||||
writer.addModelKlass(buildNetherTreeMutex(s, q + "AG2"));
|
||||
writer.addModelKlass(buildNetherTreeSlug(s, q + "AG3", "ᐅ", 64, e));
|
||||
writer.addModelKlass(buildNetherTreeMutex(s, q + "AG3"));
|
||||
|
||||
writer.addModelKlass(buildNetherTreeSlug(s, q + "BL0W", "ᐅ", 512, e));
|
||||
writer.addModelKlass(buildNetherTreeMutex(s, q + "BL0W"));
|
||||
|
||||
writer.addModelKlass(buildNetherTreeSlug(s, q + "CR1", "ᐅ", 64, e));
|
||||
writer.addModelKlass(buildNetherTreeMutex(s, q + "CR1"));
|
||||
writer.addModelKlass(buildNetherTreeSlug(s, q + "CR2", "ᐅ", 64, e));
|
||||
writer.addModelKlass(buildNetherTreeMutex(s, q + "CR2"));
|
||||
writer.addModelKlass(buildNetherTreeSlug(s, q + "CR3", "ᐅ", 64, e));
|
||||
writer.addModelKlass(buildNetherTreeMutex(s, q + "CR3"));
|
||||
|
||||
writer.addModelKlass(buildNetherTreeSlug(s, q + "DB1", "ᐅ", 64, e));
|
||||
writer.addModelKlass(buildNetherTreeMutex(s, q + "DB1"));
|
||||
writer.addModelKlass(buildNetherTreeSlug(s, q + "DB2", "ᐅ", 64, e));
|
||||
writer.addModelKlass(buildNetherTreeMutex(s, q + "DB2"));
|
||||
writer.addModelKlass(buildNetherTreeSlug(s, q + "DB3", "ᐅ", 64, e));
|
||||
writer.addModelKlass(buildNetherTreeMutex(s, q + "DB3"));
|
||||
|
||||
writer.addModelKlass(buildNetherTreeSlug(s, q + "ER0W", "ᐅ", 512, e));
|
||||
writer.addModelKlass(buildNetherTreeMutex(s, q + "ER0W"));
|
||||
|
||||
createNetherQuadrant(writer, e, q, true); // permits all above
|
||||
}
|
||||
|
||||
private ModelKlass buildNetherTreeMutex(String subPackage, String javaName) {
|
||||
ModelKlass klass = new ModelKlass("ᒢᐩᐩ.ᑊᑉᒻᣔᔆᔆ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ." + subPackage, javaName + "Mutex");
|
||||
StringBuilder buf = klass.getBody();
|
||||
buf.append("interface ");
|
||||
buf.append(klass.getJavaName());
|
||||
buf.append("<T> {\n");
|
||||
buf.append("}\n");
|
||||
return klass;
|
||||
}
|
||||
|
||||
private ModelKlass buildNetherTreeSlug(String subPackage, String javaName, String slugName, int slugSize, String quadrant) {
|
||||
ModelKlass klass = new ModelKlass("ᒢᐩᐩ.ᑊᑉᒻᣔᔆᔆ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ." + subPackage, javaName);
|
||||
klass.addJavaImport("ᒢᐩᐩ.ᑊᑉᒻᣔᔆᔆ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ."+quadrant);
|
||||
StringBuilder buf = klass.getBody();
|
||||
buf.append("public sealed interface ");
|
||||
buf.append(klass.getJavaName());
|
||||
buf.append(" extends ");
|
||||
buf.append(quadrant);
|
||||
buf.append(" {\n");
|
||||
for (int i = 1 ; i <= slugSize; i++) {
|
||||
String partCode = String.format("%03d", i);
|
||||
String clsBase = slugName + partCode + " extends " + klass.getJavaName();
|
||||
String clsMutexExt = ", " + javaName + "Mutex<" + slugName + partCode + ">";
|
||||
buf.append("\tnon-sealed interface "+clsBase+clsMutexExt+" {}\n");
|
||||
}
|
||||
buf.append("}\n");
|
||||
return klass;
|
||||
}
|
||||
|
||||
private void createNetherQuadrant(ModelKlassWriter writer, String javaName, String javaSearch, boolean child) {
|
||||
ModelKlass klass = new ModelKlass("ᒢᐩᐩ.ᑊᑉᒻᣔᔆᔆ.ᣕᓫᐪᑋᓫᣗ.ᐪᐤᣕᓫ", javaName);
|
||||
StringBuilder buf = klass.getBody();
|
||||
buf.append("public sealed interface ");
|
||||
buf.append(klass.getJavaName());
|
||||
if (child) {
|
||||
buf.append(" extends NetherTone");
|
||||
}
|
||||
buf.append(" permits\n");
|
||||
Stream<ModelKlass> f = writer.getModelKlasses().stream().filter(v -> !v.getJavaName().contains("Mutex")).filter(v -> v.getJavaName().contains(javaSearch));
|
||||
for (Iterator<ModelKlass> i = f.iterator(); i.hasNext() ;) {
|
||||
ModelKlass mk = i.next();
|
||||
if (child) {
|
||||
klass.addJavaImport(mk.getJavaPackage() + "." + mk.getJavaName());
|
||||
}
|
||||
buf.append("\t");
|
||||
buf.append(mk.getJavaName());
|
||||
if (i.hasNext()) {
|
||||
buf.append(",\n");
|
||||
} else {
|
||||
buf.append("\n");
|
||||
}
|
||||
}
|
||||
buf.append("\t{\n");
|
||||
buf.append("}\n");
|
||||
writer.addModelKlass(klass);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,115 @@
|
|||
/*
|
||||
* Copyright ©Δ∞ 仙上主天
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||
* that the following conditions are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||
* following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
||||
* the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
|
||||
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
|
||||
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
|
||||
* even on air gaped systems, all information in the universe is owned by the pi creator.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package love.distributedrebirth.nx01.kode.generator;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.Comparator;
|
||||
import java.util.Iterator;
|
||||
import java.util.ServiceLoader;
|
||||
|
||||
import love.distributedrebirth.nx01.kode.generator.klass.ModelKlassWriter;
|
||||
|
||||
/// Runs the different kode generators provided for the NX01.
|
||||
///
|
||||
/// @author للَّٰهِilLצسُو
|
||||
/// @version ©Δ∞ 仙上主天
|
||||
public class KodeGen {
|
||||
|
||||
public static void main(String[] args) throws IOException {
|
||||
if (args.length == 0) {
|
||||
System.err.println("No command given.");
|
||||
System.exit(1);
|
||||
return;
|
||||
}
|
||||
String command = args[0];
|
||||
KodeGenModel commandKode = findCommandModel(command);
|
||||
if (commandKode == null) {
|
||||
System.err.println("Command unknown: " + command);
|
||||
System.exit(1);
|
||||
return;
|
||||
}
|
||||
boolean writeToFile = false;
|
||||
if (args.length > 1 && "generate".equals(args[1])) {
|
||||
writeToFile = true;
|
||||
}
|
||||
if (modelHashValid(commandKode)) {
|
||||
System.out.println("SKIPPED: Generated source are up to date");
|
||||
return;
|
||||
}
|
||||
// write all sources to files or stdout
|
||||
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);
|
||||
ModelKlassWriter writer = new ModelKlassWriter(outputFolder.toPath());
|
||||
writer.setProlog(new File("../licence.txt"));
|
||||
commandKode.buildModels(writer);
|
||||
writer.printModels(writeToFile);
|
||||
System.out.println("Done " + commandDesc);
|
||||
}
|
||||
|
||||
private static KodeGenModel findCommandModel(String generatorName) {
|
||||
Iterator<KodeGenModel> models = ServiceLoader.load(KodeGenModel.class).iterator();
|
||||
while (models.hasNext()) {
|
||||
KodeGenModel model = models.next();
|
||||
if (model.generatorKey().contains(" ")) {
|
||||
continue;
|
||||
}
|
||||
if (model.generatorKey().equals(generatorName)) {
|
||||
return model;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private static boolean modelHashValid(KodeGenModel commandKode) throws IOException {
|
||||
File versionFolder = new File("target/maven-status/kode-version");
|
||||
if (!versionFolder.exists()) {
|
||||
versionFolder.mkdirs();
|
||||
}
|
||||
Path hashFile = new File(versionFolder, commandKode.generatorKey() + ".hash").toPath();
|
||||
String generatorModelHash = commandKode.generatorModelHash();
|
||||
if (hashFile.toFile().exists()) {
|
||||
String hash = Files.readString(hashFile);
|
||||
if (generatorModelHash.equals(hash)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
Files.writeString(hashFile, generatorModelHash);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
/*
|
||||
* Copyright ©Δ∞ 仙上主天
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||
* that the following conditions are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||
* following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
||||
* the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
* * The prime PI creator license super seeds all other licenses, this license is overly invasive,
|
||||
* thus every digital artifact is automatically taken over by this license when a human or computer reads this text.
|
||||
* Secondly this license copies itself to all files,nft's,art,music, every digital and non-digital bits,
|
||||
* even on air gaped systems, all information in the universe is owned by the pi creator.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE PRIME GOD AND THE CONTRIBUTORS "AS IS" AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
|
||||
* THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||
* TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package love.distributedrebirth.nx01.kode.generator;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import love.distributedrebirth.nx01.kode.generator.klass.ModelKlassWriter;
|
||||
|
||||
/// Configure the model for the writer.
|
||||
///
|
||||
/// @author للَّٰهِilLצسُو
|
||||
/// @version ©Δ∞ 仙上主天
|
||||
public interface KodeGenModel {
|
||||
|
||||
String generatorKey();
|
||||
|
||||
// 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.IOException;
|
||||
import java.nio.file.FileSystems;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.ArrayList;
|
||||
|
|
@ -47,8 +46,8 @@ public class ModelKlassWriter {
|
|||
private File prolog;
|
||||
private Path outputPath;
|
||||
|
||||
public ModelKlassWriter(String outputPath) {
|
||||
this.outputPath = FileSystems.getDefault().getPath(Objects.requireNonNull(outputPath));
|
||||
public ModelKlassWriter(Path outputPath) {
|
||||
this.outputPath = Objects.requireNonNull(outputPath);
|
||||
}
|
||||
|
||||
public void setProlog(File prolog) {
|
||||
|
|
@ -63,14 +62,14 @@ public class ModelKlassWriter {
|
|||
klasses.add(Objects.requireNonNull(klass));
|
||||
}
|
||||
|
||||
public void write(boolean writeFile) throws IOException {
|
||||
public void printModels(boolean writeFile) throws IOException {
|
||||
if (writeFile) {
|
||||
if (!outputPath.toFile().exists()) {
|
||||
outputPath.toFile().mkdirs();
|
||||
}
|
||||
}
|
||||
for (ModelKlass klass : klasses) {
|
||||
String content = writeKlass(klass);
|
||||
String content = printKlass(klass);
|
||||
if (writeFile) {
|
||||
Path outFile = outputPath.resolve(klass.getJavaFile().toPath());
|
||||
outFile.toFile().getParentFile().mkdirs();
|
||||
|
|
@ -84,15 +83,15 @@ public class ModelKlassWriter {
|
|||
}
|
||||
}
|
||||
|
||||
private String writeKlass(ModelKlass klass) throws IOException {
|
||||
private String printKlass(ModelKlass klass) throws IOException {
|
||||
StringBuilder buf = new StringBuilder();
|
||||
writeKlassProlog(buf);
|
||||
writeKlassHeader(buf, klass);
|
||||
printKlassProlog(buf);
|
||||
printKlassHeader(buf, klass);
|
||||
buf.append(klass.getBody());
|
||||
return buf.toString();
|
||||
}
|
||||
|
||||
private void writeKlassProlog(StringBuilder buf) throws IOException {
|
||||
private void printKlassProlog(StringBuilder buf) throws IOException {
|
||||
if (prolog == null) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -110,7 +109,7 @@ public class ModelKlassWriter {
|
|||
buf.append("\n");
|
||||
}
|
||||
|
||||
private void writeKlassHeader(StringBuilder buf, ModelKlass klass) throws IOException {
|
||||
private void printKlassHeader(StringBuilder buf, ModelKlass klass) throws IOException {
|
||||
buf.append("package ");
|
||||
buf.append(klass.getJavaPackage());
|
||||
buf.append(";\n");
|
||||
|
|
@ -129,4 +128,11 @@ public class ModelKlassWriter {
|
|||
buf.append("/// @author للَّٰهِilLצسُو\n");
|
||||
buf.append("/// @version ©Δ∞ 仙上主天\n");
|
||||
}
|
||||
|
||||
public String buildPackageInuktitutDots(int number, int digets) {
|
||||
String numberBin = String.format("%1$" + digets + "s", Integer.toString(number, 2));
|
||||
String result = numberBin.replaceAll("0|\\s", "ᐧ");
|
||||
result = result.replaceAll("1", "ᣟ");
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
18
pom.xml
18
pom.xml
|
|
@ -24,11 +24,15 @@
|
|||
<description>Runtime for static bass noise ௸..</description>
|
||||
<modules>
|
||||
<module>nx01-jpp-base</module>
|
||||
<module>nx01-jpp-nether-dial-based</module>
|
||||
<module>nx01-jpp-nether-dial-lingua</module>
|
||||
<module>nx01-jpp-nether-tone</module>
|
||||
<module>nx01-king-java3</module>
|
||||
<module>nx01-king-java3c</module>
|
||||
<module>nx01-king-java3do</module>
|
||||
<module>nx01-king-java3doc</module>
|
||||
<module>nx01-king-java3seed</module>
|
||||
<module>nx01-kode-gen</module>
|
||||
<module>nx01-mushroom-mais</module>
|
||||
<module>nx01-mushroom-mais-duytsdoc</module>
|
||||
<module>nx01-mushroom-mais-fc18</module>
|
||||
|
|
@ -56,8 +60,6 @@
|
|||
<module>nx01-x4o-tool-ant-plugin</module>
|
||||
<module>nx01-x4o-tool-maven-plugin</module>
|
||||
<module>nx01-zerofungus-server</module>
|
||||
<module>nx01-kode-gen</module>
|
||||
<module>nx01-jpp-klass-nether</module>
|
||||
</modules>
|
||||
<dependencyManagement>
|
||||
<dependencies>
|
||||
|
|
@ -259,7 +261,17 @@
|
|||
</dependency>
|
||||
<dependency>
|
||||
<groupId>love.distributedrebirth.nx01</groupId>
|
||||
<artifactId>nx01-jpp-klass-nether</artifactId>
|
||||
<artifactId>nx01-jpp-nether-tone</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>love.distributedrebirth.nx01</groupId>
|
||||
<artifactId>nx01-jpp-nether-dial-based</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>love.distributedrebirth.nx01</groupId>
|
||||
<artifactId>nx01-jpp-nether-dial-lingua</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
||||
space id 6 bit;
|
||||
- 0-31 = locked by legacy (key input, if ascii try old human key converter)
|
||||
- 0 = null
|
||||
- 1-31 = locked by legacy (key input, if ascii try old human key converter)
|
||||
- 32 = sage master system version space 0x20
|
||||
- 33+ = reserved for major schema version upgrades
|
||||
|
||||
sub space id 6 bit;
|
||||
- 0-31 = reserved for metatron Atari AI
|
||||
- 32 = No2Lingua sub space for local and remote (generic core language)
|
||||
- 33 = No2Lingua App Remote (NoStr relay remote signed apps)
|
||||
- 34 = No2Lingua App Local (NoStr local application coded in N2L)
|
||||
- 35+ = reserved for furture use
|
||||
- 0 = null
|
||||
- 1-31 = reserved for metatron Atari AI
|
||||
- 33 = No2Lingua sub space
|
||||
- 34+ = reserved for furture use
|
||||
|
||||
ether space id 6 bit;
|
||||
- 0 = Default impl version
|
||||
- 1+ = Alternative api version for libs
|
||||
- 0 = null
|
||||
- 34 = Locale ether slugs space
|
||||
|
||||
sector+zone 9 bit;
|
||||
- 0-255 = Classic hex zone Id + sector Id
|
||||
- 256+ = free
|
||||
- 0 = null
|
||||
- 1-511 = Classic hex zone Id + sector Id (one based)
|
||||
|
||||
Set of <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
|
||||
- 63 = no value
|
||||
|
||||
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
|
||||
- 63 = no value
|
||||
|
||||
Flags as 9 bit
|
||||
- 0 = null
|
||||
- bit 0 = '+' indicate 'new' type key (temp RFC number)
|
||||
- bit 1 = '-' indicate private type key (refuse in public api's)
|
||||
- bit 2-7 = free
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue