diff --git a/nx01-x4o-fc18/src/main/java/org/x4o/fc18/cake2/zero33/FCDotCDC1604DashP6.java b/nx01-x4o-fc18/src/main/java/org/x4o/fc18/cake2/zero33/FCDotCDC1604DashP6.java index 68c60f4..e57285c 100644 --- a/nx01-x4o-fc18/src/main/java/org/x4o/fc18/cake2/zero33/FCDotCDC1604DashP6.java +++ b/nx01-x4o-fc18/src/main/java/org/x4o/fc18/cake2/zero33/FCDotCDC1604DashP6.java @@ -38,7 +38,7 @@ import org.x4o.fc18.cake2.FourCornerX00PetitVideCoinCarneFrapperRetrait; /// @version 1.0 Dec 22, 2024 /// public enum FCDotCDC1604DashP6 implements FourCornerDotColleZero33 { - // [__NUL][_ESC6_X1][_ESC6_X2][_ESC6_X3] ‽¿!? <>[] (){} + // [__NUL][_ESC6_X1][_ESC6_X2][_ESC6_X3] ‽¿?! <>[] (){} // ~+-* ,.:; '"`^ =#$% // |_\/ @ABC DEFG HIJK // LMNO PQRS TUVW XYZ& @@ -57,12 +57,12 @@ public enum FCDotCDC1604DashP6 implements FourCornerDotColleZero33 { NS05_RAKA1_UPQUESTION('¿'), /// Use 3 pepper marks, to spice up the escape sequences. - NS06_PEPPER3_EXCLAMATION('!'), - NS07_PEPPER3_QUESTION('?'), + NS06_PEPPER3_QUESTION('?'), + NS07_PEPPER3_EXCLAMATION('!'), - /// Suger Argument Lexer Token, to sweat up the escape sequences. - NS08_SUGER1_COMPARE_LEFT('<'), - NS09_SUGER1_COMPARE_RIGHT('>'), // TODO: make it suger3 + /// Use 3 Super Argument Lexer Token, to sweat up the escape sequences. + NS08_SALT3_COMPARE_LEFT('<'), + NS09_SALT3_COMPARE_RIGHT('>'), /// Second set of number letters. NY27_SQUARE_LEFT('['), @@ -202,40 +202,55 @@ public enum FCDotCDC1604DashP6 implements FourCornerDotColleZero33 { return cakePoint == NS01_ESC3_X1.cakePointDotIndex() || cakePoint == NS02_ESC3_X2.cakePointDotIndex() || cakePoint == NS03_ESC3_X3.cakePointDotIndex(); } - static public boolean isEscapeSugerLeft(int cakePoint) { - return cakePoint == NS08_SUGER1_COMPARE_LEFT.cakePointDotIndex(); - } - - static public boolean isEscapeSugerRight(int cakePoint) { - return cakePoint == NS09_SUGER1_COMPARE_RIGHT.cakePointDotIndex(); - } - static public boolean isEscapePepper(int cakePoint) { - return cakePoint == NS06_PEPPER3_EXCLAMATION.cakePointDotIndex() || cakePoint == NS07_PEPPER3_QUESTION.cakePointDotIndex(); + return cakePoint == NS07_PEPPER3_EXCLAMATION.cakePointDotIndex() || cakePoint == NS06_PEPPER3_QUESTION.cakePointDotIndex(); + } + + static public boolean isEscapeSalt(int cakePoint) { + return cakePoint == NS08_SALT3_COMPARE_LEFT.cakePointDotIndex() || cakePoint == NS09_SALT3_COMPARE_RIGHT.cakePointDotIndex(); } static public int pepper3SequenceRead(FCDotCDC1604DashP6 msb, FCDotCDC1604DashP6 csb, FCDotCDC1604DashP6 lsb) { - int c1 = msb == FCDotCDC1604DashP6.NS06_PEPPER3_EXCLAMATION?0:1; - int c2 = csb == FCDotCDC1604DashP6.NS06_PEPPER3_EXCLAMATION?0:1; - int c3 = lsb == FCDotCDC1604DashP6.NS06_PEPPER3_EXCLAMATION?0:1; + int c1 = msb == FCDotCDC1604DashP6.NS07_PEPPER3_EXCLAMATION?1:0; + int c2 = csb == FCDotCDC1604DashP6.NS07_PEPPER3_EXCLAMATION?1:0; + int c3 = lsb == FCDotCDC1604DashP6.NS07_PEPPER3_EXCLAMATION?1:0; return (c1 << 2) + (c2 << 1) + (c3 << 0); } - static public List pepper3SequenceWritePoints(int mode) { - return pepper3SequenceWrite(mode).stream().map(v -> v.cakePointDotIndex()).toList(); - } - - static public List pepper3SequenceWrite(int mode) { + static public List pepper3SequenceWrite(List out, int mode) { if (mode < 0) { throw new IllegalArgumentException("Negative pepper is illegal"); } if (mode > 7) { throw new IllegalArgumentException("Pepper spray is only 3 bit"); } - return List.of( - ((mode >> 2) & 0b1)==0?NS06_PEPPER3_EXCLAMATION:NS07_PEPPER3_QUESTION, - ((mode >> 1) & 0b1)==0?NS06_PEPPER3_EXCLAMATION:NS07_PEPPER3_QUESTION, - ((mode >> 0) & 0b1)==0?NS06_PEPPER3_EXCLAMATION:NS07_PEPPER3_QUESTION - ); + int pepperZero = NS06_PEPPER3_QUESTION.cakePointDotIndex(); + int pepperOne = NS07_PEPPER3_EXCLAMATION.cakePointDotIndex(); + out.add(((mode >> 2) & 0b1)==0?pepperZero:pepperOne); + out.add(((mode >> 1) & 0b1)==0?pepperZero:pepperOne); + out.add(((mode >> 0) & 0b1)==0?pepperZero:pepperOne); + return out; + } + + static public int salt3SequenceRead(FCDotCDC1604DashP6 msb, FCDotCDC1604DashP6 csb, FCDotCDC1604DashP6 lsb) { + int c1 = msb == FCDotCDC1604DashP6.NS09_SALT3_COMPARE_RIGHT?1:0; + int c2 = csb == FCDotCDC1604DashP6.NS09_SALT3_COMPARE_RIGHT?1:0; + int c3 = lsb == FCDotCDC1604DashP6.NS09_SALT3_COMPARE_RIGHT?1:0; + return (c1 << 2) + (c2 << 1) + (c3 << 0); + } + + static public List salt3SequenceWrite(List out, int mode) { + if (mode < 0) { + throw new IllegalArgumentException("Negative salt is illegal"); + } + if (mode > 7) { + throw new IllegalArgumentException("Salt wash is only 3 bit"); + } + int pepperZero = NS08_SALT3_COMPARE_LEFT.cakePointDotIndex(); + int pepperOne = NS09_SALT3_COMPARE_RIGHT.cakePointDotIndex(); + out.add(((mode >> 2) & 0b1)==0?pepperZero:pepperOne); + out.add(((mode >> 1) & 0b1)==0?pepperZero:pepperOne); + out.add(((mode >> 0) & 0b1)==0?pepperZero:pepperOne); + return out; } } diff --git a/nx01-x4o-fc18/src/main/java/org/x4o/fc18/cake2/zero33/dec1/FCDotCMD5401Dash2D.java b/nx01-x4o-fc18/src/main/java/org/x4o/fc18/cake2/zero33/dec1/FCDotCMD5401Dash2D.java index e2f6588..df912e1 100644 --- a/nx01-x4o-fc18/src/main/java/org/x4o/fc18/cake2/zero33/dec1/FCDotCMD5401Dash2D.java +++ b/nx01-x4o-fc18/src/main/java/org/x4o/fc18/cake2/zero33/dec1/FCDotCMD5401Dash2D.java @@ -50,7 +50,7 @@ public enum FCDotCMD5401Dash2D implements FourCornerX06BaklavaPointSequence, Fou private FCDotCMD5401Dash2D(FCDotCDC1604DashP6 selector) { this.selector = Objects.requireNonNull(selector); - if (selector.ordinal() <= FCDotCDC1604DashP6.NS09_SUGER1_COMPARE_RIGHT.ordinal()) { + if (selector.ordinal() <= FCDotCDC1604DashP6.NS09_SALT3_COMPARE_RIGHT.ordinal()) { throw new IllegalArgumentException("Not used here to keep mind space free"); } } diff --git a/nx01-x4o-fc18/src/main/java/org/x4o/fc18/cake2/zero33/dec1/FCDotINC0801DashP8.java b/nx01-x4o-fc18/src/main/java/org/x4o/fc18/cake2/zero33/dec1/FCDotINC0801DashP8.java index da54013..068a3ef 100644 --- a/nx01-x4o-fc18/src/main/java/org/x4o/fc18/cake2/zero33/dec1/FCDotINC0801DashP8.java +++ b/nx01-x4o-fc18/src/main/java/org/x4o/fc18/cake2/zero33/dec1/FCDotINC0801DashP8.java @@ -40,6 +40,8 @@ import org.x4o.fc18.cake2.zero33.FCDotCDC1604DashP6; */ public enum FCDotINC0801DashP8 implements FourCornerX06BaklavaPointSequence, FourCornerX18CakePointSequence, FourCornerX18CakePointDotName { + // TODO: renumber add CDC1604 first ? and make it duel bank with salt AND pepper so print mixed case does not exit the escape sequence. + /// !!! /// Select LUA page 7A mode. INC_LUA0127_P7A(FourCornerDotCake.FC_LUA0127_P7A), @@ -89,7 +91,7 @@ public enum FCDotINC0801DashP8 implements FourCornerX06BaklavaPointSequence, Fou public List baklavaPointSequence() { List result = new ArrayList<>(); result.addAll(FCDotDEC2701DashPX0.ESC6_INC0801_P8.baklavaPointSequence()); - result.addAll(FCDotCDC1604DashP6.pepper3SequenceWritePoints(ordinal())); + FCDotCDC1604DashP6.pepper3SequenceWrite(result, ordinal()); return result; } diff --git a/nx01-x4o-fc18/src/main/java/org/x4o/fc18/zion7/FourCornerZionStenoLexer.java b/nx01-x4o-fc18/src/main/java/org/x4o/fc18/zion7/FourCornerZionStenoLexer.java index 54b30a5..dd0c860 100644 --- a/nx01-x4o-fc18/src/main/java/org/x4o/fc18/zion7/FourCornerZionStenoLexer.java +++ b/nx01-x4o-fc18/src/main/java/org/x4o/fc18/zion7/FourCornerZionStenoLexer.java @@ -792,20 +792,20 @@ public class FourCornerZionStenoLexer implements FourCornerZionStenoPetroglyphs if (cdcPoint >= FCDotCDC1604DashP6.NY27_SQUARE_LEFT.ordinal() && cdcPoint <= FCDotCDC1604DashP6.NY01_AT.ordinal()) { lexer.cdcDECModePie = FCDotCDC1604DashP6.NY01_AT.ordinal() - cdcPoint; // goto relative return true; // swallow button - } else if (cdcPoint == FCDotCDC1604DashP6.NS06_PEPPER3_EXCLAMATION.ordinal()) { + } else if (cdcPoint == FCDotCDC1604DashP6.NS07_PEPPER3_EXCLAMATION.ordinal()) { if (lexer.cdcDECModePie < 26) { lexer.cdcDECModePie++; } return true; // eat the up pepper - } else if (cdcPoint == FCDotCDC1604DashP6.NS07_PEPPER3_QUESTION.ordinal()) { + } else if (cdcPoint == FCDotCDC1604DashP6.NS06_PEPPER3_QUESTION.ordinal()) { if (lexer.cdcDECModePie > 0) { lexer.cdcDECModePie--; } return true; // eat the down suger - } else if (cdcPoint == FCDotCDC1604DashP6.NS08_SUGER1_COMPARE_LEFT.ordinal()) { + } else if (cdcPoint == FCDotCDC1604DashP6.NS08_SALT3_COMPARE_LEFT.ordinal()) { lexer.cdcDECModePieAlt = false; return true; // eat the left suger - } else if (cdcPoint == FCDotCDC1604DashP6.NS09_SUGER1_COMPARE_RIGHT.ordinal()) { + } else if (cdcPoint == FCDotCDC1604DashP6.NS09_SALT3_COMPARE_RIGHT.ordinal()) { lexer.cdcDECModePieAlt = true; return true; // eat the right suger } else if (cdcPoint == FCDotCDC1604DashP6.NS04_RAKA1_INTERROBANG.ordinal() || cdcPoint == FCDotCDC1604DashP6.NS05_RAKA1_UPQUESTION.ordinal()) { diff --git a/nx01-x4o-fc18/src/test/java/org/x4o/fc18/FourCornerUnicodeDisplayTest.java b/nx01-x4o-fc18/src/test/java/org/x4o/fc18/FourCornerUnicodeDisplayTest.java index b54bb2d..15d2d7d 100644 --- a/nx01-x4o-fc18/src/test/java/org/x4o/fc18/FourCornerUnicodeDisplayTest.java +++ b/nx01-x4o-fc18/src/test/java/org/x4o/fc18/FourCornerUnicodeDisplayTest.java @@ -57,7 +57,7 @@ public class FourCornerUnicodeDisplayTest { cdc.add(FCDotCDC1604DashP6.NY26_SQUARE_RIGHT); // select lower case cdc.add(FCDotCDC1604DashP6.NX10_J); cdc.add(FCDotCDC1604DashP6.NX11_K); - cdc.add(FCDotCDC1604DashP6.NS09_SUGER1_COMPARE_RIGHT); + cdc.add(FCDotCDC1604DashP6.NS09_SALT3_COMPARE_RIGHT); cdc.add(FCDotCDC1604DashP6.NX12_L); cdc.add(FCDotCDC1604DashP6.NX13_M); cdc.add(FCDotDEC2701DashPX0.ESC_STOP); @@ -114,19 +114,19 @@ public class FourCornerUnicodeDisplayTest { cdc.add(FCDotCDC1604DashP6.NX08_H); cdc.add(FCDotCDC1604DashP6.NX15_O); cdc.add(FCDotCDC1604DashP6.NX09_I); - cdc.add(FCDotCDC1604DashP6.NS09_SUGER1_COMPARE_RIGHT); // goto right FC.PIE9D-27 + cdc.add(FCDotCDC1604DashP6.NS09_SALT3_COMPARE_RIGHT); // goto right FC.PIE9D-27 cdc.add(FCDotCDC1604DashP6.NX08_H); cdc.add(FCDotCDC1604DashP6.NX15_O); cdc.add(FCDotCDC1604DashP6.NX09_I); - cdc.add(FCDotCDC1604DashP6.NS07_PEPPER3_QUESTION); // goto up FC.PIE9D-26 + cdc.add(FCDotCDC1604DashP6.NS06_PEPPER3_QUESTION); // goto up FC.PIE9D-26 cdc.add(FCDotCDC1604DashP6.NX08_H); cdc.add(FCDotCDC1604DashP6.NX15_O); cdc.add(FCDotCDC1604DashP6.NX09_I); - cdc.add(FCDotCDC1604DashP6.NS07_PEPPER3_QUESTION); // goto up FC.PIE9D-25 + cdc.add(FCDotCDC1604DashP6.NS06_PEPPER3_QUESTION); // goto up FC.PIE9D-25 cdc.add(FCDotCDC1604DashP6.NX08_H); cdc.add(FCDotCDC1604DashP6.NX15_O); cdc.add(FCDotCDC1604DashP6.NX09_I); - cdc.add(FCDotCDC1604DashP6.NS07_PEPPER3_QUESTION); // goto up FC.PIE9D-24 + cdc.add(FCDotCDC1604DashP6.NS06_PEPPER3_QUESTION); // goto up FC.PIE9D-24 cdc.add(FCDotCDC1604DashP6.NX08_H); cdc.add(FCDotCDC1604DashP6.NX15_O); cdc.add(FCDotCDC1604DashP6.NX09_I); diff --git a/nx01-x4o-fc18/src/test/java/org/x4o/fc18/cake2/zero33/FCDotCDC1604DashP6Test.java b/nx01-x4o-fc18/src/test/java/org/x4o/fc18/cake2/zero33/FCDotCDC1604DashP6Test.java index dd1271a..e9fd77d 100644 --- a/nx01-x4o-fc18/src/test/java/org/x4o/fc18/cake2/zero33/FCDotCDC1604DashP6Test.java +++ b/nx01-x4o-fc18/src/test/java/org/x4o/fc18/cake2/zero33/FCDotCDC1604DashP6Test.java @@ -22,6 +22,8 @@ */ package org.x4o.fc18.cake2.zero33; +import java.util.ArrayList; +import java.util.Collections; import java.util.HashMap; import java.util.Map; @@ -54,26 +56,47 @@ public class FCDotCDC1604DashP6Test { Assertions.assertFalse(duplicate, "Duplicate ascii core value detected"); } - @Test - public void testPepper3Points() throws Exception { - Assertions.assertEquals("!!!", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.pepper3SequenceWritePoints(0))); - Assertions.assertEquals("!!?", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.pepper3SequenceWritePoints(1))); - Assertions.assertEquals("!?!", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.pepper3SequenceWritePoints(2))); - Assertions.assertEquals("!??", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.pepper3SequenceWritePoints(3))); - Assertions.assertEquals("?!!", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.pepper3SequenceWritePoints(4))); - Assertions.assertEquals("?!?", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.pepper3SequenceWritePoints(5))); - Assertions.assertEquals("??!", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.pepper3SequenceWritePoints(6))); - Assertions.assertEquals("???", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.pepper3SequenceWritePoints(7))); + public void testPepper3Sequence() throws Exception { + Assertions.assertEquals("???", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.pepper3SequenceWrite(new ArrayList<>(), 0))); + Assertions.assertEquals("??!", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.pepper3SequenceWrite(new ArrayList<>(), 1))); + Assertions.assertEquals("?!?", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.pepper3SequenceWrite(new ArrayList<>(), 2))); + Assertions.assertEquals("?!!", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.pepper3SequenceWrite(new ArrayList<>(), 3))); + Assertions.assertEquals("!??", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.pepper3SequenceWrite(new ArrayList<>(), 4))); + Assertions.assertEquals("!?!", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.pepper3SequenceWrite(new ArrayList<>(), 5))); + Assertions.assertEquals("!!?", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.pepper3SequenceWrite(new ArrayList<>(), 6))); + Assertions.assertEquals("!!!", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.pepper3SequenceWrite(new ArrayList<>(), 7))); } @Test - public void testPepper3PointsRange() throws Exception { + public void testPepper3SequenceRange() throws Exception { Assertions.assertThrows(IllegalArgumentException.class, () -> { - FCDotCDC1604DashP6.pepper3SequenceWritePoints(-1); + FCDotCDC1604DashP6.pepper3SequenceWrite(Collections.emptyList(), -1); }); Assertions.assertThrows(IllegalArgumentException.class, () -> { - FCDotCDC1604DashP6.pepper3SequenceWritePoints(8); + FCDotCDC1604DashP6.pepper3SequenceWrite(Collections.emptyList(), 8); + }); + } + + @Test + public void testSalt3Sequence() throws Exception { + Assertions.assertEquals("<<<", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.salt3SequenceWrite(new ArrayList<>(), 0))); + Assertions.assertEquals("<<>", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.salt3SequenceWrite(new ArrayList<>(), 1))); + Assertions.assertEquals("<><", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.salt3SequenceWrite(new ArrayList<>(), 2))); + Assertions.assertEquals("<>>", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.salt3SequenceWrite(new ArrayList<>(), 3))); + Assertions.assertEquals("><<", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.salt3SequenceWrite(new ArrayList<>(), 4))); + Assertions.assertEquals("><>", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.salt3SequenceWrite(new ArrayList<>(), 5))); + Assertions.assertEquals(">><", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.salt3SequenceWrite(new ArrayList<>(), 6))); + Assertions.assertEquals(">>>", FourCornerUnicodeDisplay.text().renderFromInt18(FCDotCDC1604DashP6.salt3SequenceWrite(new ArrayList<>(), 7))); + } + + @Test + public void testSalt3SequenceRange() throws Exception { + Assertions.assertThrows(IllegalArgumentException.class, () -> { + FCDotCDC1604DashP6.salt3SequenceWrite(Collections.emptyList(), -1); + }); + Assertions.assertThrows(IllegalArgumentException.class, () -> { + FCDotCDC1604DashP6.salt3SequenceWrite(Collections.emptyList(), 8); }); } } diff --git a/nx01-x4o-fc18/src/test/java/org/x4o/fc18/cake2/zero33/dec1/FCDotINC0801DashP8Test.java b/nx01-x4o-fc18/src/test/java/org/x4o/fc18/cake2/zero33/dec1/FCDotINC0801DashP8Test.java index 279c2ae..7ba70c4 100644 --- a/nx01-x4o-fc18/src/test/java/org/x4o/fc18/cake2/zero33/dec1/FCDotINC0801DashP8Test.java +++ b/nx01-x4o-fc18/src/test/java/org/x4o/fc18/cake2/zero33/dec1/FCDotINC0801DashP8Test.java @@ -49,8 +49,8 @@ public class FCDotINC0801DashP8Test { Assertions.assertEquals(FCDotCDC1604DashP6.NS02_ESC3_X2.ordinal(), seq.get(0)); Assertions.assertEquals(FCDotCDC1604DashP6.NS03_ESC3_X3.ordinal(), seq.get(1)); Assertions.assertEquals(FCDotCDC1604DashP6.NS01_ESC3_X1.ordinal(), seq.get(2)); - Assertions.assertEquals(FCDotCDC1604DashP6.NS06_PEPPER3_EXCLAMATION.ordinal(), seq.get(3)); - Assertions.assertEquals(FCDotCDC1604DashP6.NS07_PEPPER3_QUESTION.ordinal(), seq.get(4)); - Assertions.assertEquals(FCDotCDC1604DashP6.NS07_PEPPER3_QUESTION.ordinal(), seq.get(5)); + Assertions.assertEquals(FCDotCDC1604DashP6.NS06_PEPPER3_QUESTION.ordinal(), seq.get(3)); + Assertions.assertEquals(FCDotCDC1604DashP6.NS07_PEPPER3_EXCLAMATION.ordinal(), seq.get(4)); + Assertions.assertEquals(FCDotCDC1604DashP6.NS07_PEPPER3_EXCLAMATION.ordinal(), seq.get(5)); } }