Cleaned lexer DEC modes and removed some pepper and found tab space

This commit is contained in:
Willem Cazander 2025-01-24 19:34:37 +01:00
parent 365505afc6
commit 8c7cd6e81a
33 changed files with 506 additions and 393 deletions

View file

@ -139,12 +139,17 @@ public class FourCornerUnicodeDisplay {
if (FourCornerDotCake.FC_DEC2701_PX0.equals(slice)) {
output.appendCodePoint(FCDotPIE9DDash09.IMG_ESC_DEC.codePointDotIndex());
}
// TODO: rm after file loading
if (FourCornerDotCake.FC_UWU0101_S1.equals(slice)) {
output.appendCodePoint(' '); // TMP hack
output.append("__\t \t__.:=UWU=:.__\t \t__"); // user defined tab space
return true;
}
if (FourCornerDotCake.FC_TTY0001_NL.equals(slice)) {
output.appendCodePoint('\n'); // TMP hack
if (FourCornerDotCake.FC_F4TXT0001_SP.equals(slice)) {
output.appendCodePoint(' ');
return true;
}
if (FourCornerDotCake.FC_F4TTY0001_NL.equals(slice)) {
output.appendCodePoint('\n');
return true;
}
return false;

View file

@ -34,10 +34,9 @@ import org.x4o.fc18.cake2.FourCornerX06BaklavaPointSequence;
import org.x4o.fc18.cake2.FourCornerX08MuffinPointSequence;
import org.x4o.fc18.cake2.FourCornerX18CakePointSequence;
import org.x4o.fc18.cake2.zero33.FCDotCDC1604DashP6;
import org.x4o.fc18.cake2.zero33.FCDotDEC0801DashE10;
import org.x4o.fc18.cake2.zero33.FCDotDEC0801DashE16;
import org.x4o.fc18.cake2.zero33.FCDotDEC0801DashE19;
import org.x4o.fc18.cake2.zero33.FCDotDEC2701DashPX0;
import org.x4o.fc18.cake2.zero33.dec1.FCDotCMD5401Dash2D;
import org.x4o.fc18.cake2.zero33.dec1.FCDotDEC2701DashPX0;
import org.x4o.fc18.cake2.zero33.dec1.FCDotINC0801DashP8;
/// Imports unicode as four corner BASIC text from the "FC.CDC1604-P6" code page.
///
@ -152,8 +151,7 @@ public class FourCornerUnicodeImport {
private boolean handleDataGramWordSpacerTypes(ImportState ctx) {
if (' ' == ctx.codePoint) {
ctx.reset();
ctx.output.add(FCDotDEC2701DashPX0.ESC_DEC0801_E10);
ctx.output.add(FCDotDEC0801DashE10.E10_UWU0101_S1);
ctx.output.add(FCDotCMD5401Dash2D.CMD_F4TXT0001_SP);
return true;
}
if (convertWhitespaces == false) {
@ -161,8 +159,7 @@ public class FourCornerUnicodeImport {
}
if (WHITE_SPACES.contains(ctx.codePoint)) {
ctx.reset();
ctx.output.add(FCDotDEC2701DashPX0.ESC_DEC0801_E10);
ctx.output.add(FCDotDEC0801DashE10.E10_UWU0101_S1);
ctx.output.add(FCDotCMD5401Dash2D.CMD_F4TXT0001_SP);
return true;
}
return false;
@ -170,8 +167,7 @@ public class FourCornerUnicodeImport {
private void sendTypeWriterNewLine(ImportState ctx) {
ctx.reset();
ctx.output.add(FCDotDEC2701DashPX0.ESC68_DEC0801_E19);
ctx.output.add(FCDotDEC0801DashE19.TYPE_WRITER_TTY0001_NL);
ctx.output.add(FCDotCMD5401Dash2D.CMD_F4TTY0001_NL);
}
private boolean handleTypeWriterStructureTypes(ImportState ctx) {
@ -270,9 +266,9 @@ public class FourCornerUnicodeImport {
if (ctx.codePoint >= '0' && ctx.codePoint <= '9') {
if (!FCDotCDC1604DashP6.NX10_J.equals(ctx.cdcNumberTerminator)) {
if (ctx.bits == 6) {
ctx.output.addAll(toX06BaklavaPoints(FCDotDEC0801DashE16.ESC68_PIE, FCDotCDC1604DashP6.NX10_J));
ctx.output.addAll(toX06BaklavaPoints(FCDotCDC1604DashP6.NX10_J));
} else {
ctx.output.addAll(toX08MuffinPoints(FCDotDEC0801DashE16.ESC68_PIE, FCDotCDC1604DashP6.NX10_J));
ctx.output.addAll(toX08MuffinPoints(FCDotCDC1604DashP6.NX10_J));
}
ctx.cdcNumberTerminator = FCDotCDC1604DashP6.NX10_J;
}
@ -299,9 +295,9 @@ public class FourCornerUnicodeImport {
if (ctx.codePoint >= 'a' && ctx.codePoint <= 'z') {
if (!FCDotCDC1604DashP6.NX26_Z.equals(ctx.cdcCaseTerminator)) {
if (ctx.bits == 6) {
ctx.output.addAll(toX06BaklavaPoints(FCDotDEC0801DashE16.ESC68_PIE, FCDotCDC1604DashP6.NX26_Z));
ctx.output.addAll(toX06BaklavaPoints(FCDotCDC1604DashP6.NX26_Z));
} else {
ctx.output.addAll(toX08MuffinPoints(FCDotDEC0801DashE16.ESC68_PIE, FCDotCDC1604DashP6.NX26_Z));
ctx.output.addAll(toX08MuffinPoints(FCDotCDC1604DashP6.NX26_Z));
}
ctx.cdcCaseTerminator = FCDotCDC1604DashP6.NX26_Z;
}
@ -327,20 +323,18 @@ public class FourCornerUnicodeImport {
return result;
}
private List<FourCornerX08MuffinPointSequence> toX08MuffinPoints(FCDotDEC0801DashE16 py1, FCDotCDC1604DashP6... letters) {
private List<FourCornerX08MuffinPointSequence> toX08MuffinPoints(FCDotCDC1604DashP6... letters) {
List<FourCornerX08MuffinPointSequence> result = new ArrayList<>();
result.add(FCDotDEC2701DashPX0.ESC68_DEC0801_E16);
result.addAll(py1.muffinPointSequence().stream().map(v -> FCDotCDC1604DashP6.valueOf(v)).toList());
result.add(FCDotDEC2701DashPX0.ESC68_2PIE);
for (FCDotCDC1604DashP6 letter : letters) {
result.add(letter);
}
return result;
}
private List<FourCornerX06BaklavaPointSequence> toX06BaklavaPoints(FCDotDEC0801DashE16 py1, FCDotCDC1604DashP6... letters) {
private List<FourCornerX06BaklavaPointSequence> toX06BaklavaPoints(FCDotCDC1604DashP6... letters) {
List<FourCornerX06BaklavaPointSequence> result = new ArrayList<>();
result.addAll(FCDotDEC2701DashPX0.ESC68_DEC0801_E16.baklavaPointSequence().stream().map(v -> FCDotCDC1604DashP6.valueOf(v)).toList());
result.addAll(py1.baklavaPointSequence().stream().map(v -> FCDotCDC1604DashP6.valueOf(v)).toList());
result.add(FCDotDEC2701DashPX0.ESC68_2PIE);
for (FCDotCDC1604DashP6 letter : letters) {
result.add(letter);
}
@ -439,7 +433,7 @@ public class FourCornerUnicodeImport {
return FCDotCDC1604DashP6.NX26_Z;
}
if (" ⅋ 🙰 🙱 🙲 🙳 🙴 🙵".contains(codePoint)) {
return FCDotCDC1604DashP6.NX27_AMPERSAND;
return FCDotCDC1604DashP6.NX27_AMP;
}
return null;
}

View file

@ -41,7 +41,7 @@ import org.x4o.fc18.cake2.pie9c.FCDotPIE9CDash10;
import org.x4o.fc18.cake2.pie9c.FCDotPIE9CDash11;
import org.x4o.fc18.cake2.pie9c.FCDotPIE9CDash20;
import org.x4o.fc18.cake2.zero33.FCDotCDC1604DashP6;
import org.x4o.fc18.cake2.zero33.FCDotDEC2701DashPX0;
import org.x4o.fc18.cake2.zero33.dec1.FCDotDEC2701DashPX0;
/// Holds conversion maps between four corner int18 and unicode int21 points.
///

View file

@ -52,6 +52,8 @@ import org.x4o.fc18.cake2.clk1k.FCDotCLK1KDashW;
import org.x4o.fc18.cake2.clk1k.FCDotCLK1KDashX;
import org.x4o.fc18.cake2.clk1k.FCDotCLK1KDashY;
import org.x4o.fc18.cake2.clk1k.FCDotCLK1KDashZ;
import org.x4o.fc18.cake2.flag4.FCDotF4TTY0001DashNL;
import org.x4o.fc18.cake2.flag4.FCDotF4TXT0001DashSP;
import org.x4o.fc18.cake2.gram5.FCDotAMD0110DashSA;
import org.x4o.fc18.cake2.gram5.FCDotBIP0039Dash2K;
import org.x4o.fc18.cake2.gram5.FCDotBMW0102DashS2;
@ -121,7 +123,6 @@ import org.x4o.fc18.cake2.pie9d.FCDotPIE9DDash24;
import org.x4o.fc18.cake2.pie9d.FCDotPIE9DDash25;
import org.x4o.fc18.cake2.pie9d.FCDotPIE9DDash26;
import org.x4o.fc18.cake2.pie9d.FCDotPIE9DDash27;
import org.x4o.fc18.cake2.tty00.FCDotTTY0001DashNL;
import org.x4o.fc18.cake2.zero33.FCDotAPL0127DashP7A;
import org.x4o.fc18.cake2.zero33.FCDotAPL0127DashP7B;
import org.x4o.fc18.cake2.zero33.FCDotAPL0127DashP7C;
@ -129,7 +130,7 @@ import org.x4o.fc18.cake2.zero33.FCDotBYD0127DashP7D;
import org.x4o.fc18.cake2.zero33.FCDotBYD0127DashP7E;
import org.x4o.fc18.cake2.zero33.FCDotBYD0127DashP7F;
import org.x4o.fc18.cake2.zero33.FCDotCDC1604DashP6;
import org.x4o.fc18.cake2.zero33.FCDotDEC2701DashPX0;
import org.x4o.fc18.cake2.zero33.dec1.FCDotDEC2701DashPX0;
/// The dot cake index of four corner 18 bit words in cake slices which holds the cake points.
///
@ -307,11 +308,15 @@ public enum FourCornerDotCake {
// =========== Allow structures,sandworms and legacy unicode an pieve of the cake
/// Tele Type Ytructure00 zero one New Line
FC_TTY0001_NL(0x026C00, 1, FCDotTTY0001DashNL.values(), "TTY00 zero one New Line"),
/// Tele Type Ytructure00 zero one Spanish Peace
/// The "normal" space, An undefined UWU points to here, as that is a custom space like tab space.
FC_F4TXT0001_SP(0x026C00, 1, FCDotF4TXT0001DashSP.values(), "TXT00 zero one Spanish Peace"),
/// Tele Type Ytructure00 zero one Nether Line
FC_F4TTY0001_NL(0x026C01, 1, FCDotF4TTY0001DashNL.values(), "TTY00 zero one Nether Line"),
/// Reserved tele type ytructure controls.
__RESERVED_TTY00(0x026C00 + 1, 0x026DC0 - 0x026C00 - 1, "Reserved for TTY00"),
__RESERVED_TTY00(0x026C00 + 2, 0x026DC0 - 0x026C00 - 2, "Reserved for TTY00"),
/// Preamble of a sand worm body as a identifiable type header or an Número2 Lingua tree key.
/// Octal worm encoding are 192 unique octals in ordered sequence and have allowed length of 24/48/96 or 192.

View file

@ -26,6 +26,6 @@ package org.x4o.fc18.cake2;
///
/// @author Willem Cazander
/// @version 1.0 Jan 22, 2025
public interface FourCornerDotColleTTY extends FourCornerX18CakePointDotIndex {
public interface FourCornerDotColleFlag4 extends FourCornerX18CakePointDotIndex {
}

View file

@ -26,8 +26,7 @@ import java.util.ArrayList;
import java.util.List;
import org.x4o.fc18.cake2.zero33.FCDotCDC1604DashP6;
import org.x4o.fc18.cake2.zero33.FCDotDEC0801DashE16;
import org.x4o.fc18.cake2.zero33.FCDotDEC2701DashPX0;
import org.x4o.fc18.cake2.zero33.dec1.FCDotDEC2701DashPX0;
/// Parent interface for all PIE9C and PIE9D enum.
///
@ -63,8 +62,7 @@ public interface FourCornerDotCollePie9 extends FourCornerX06BaklavaPointSequenc
default List<Integer> baklavaPointsPIE9C(FCDotCDC1604DashP6 letter, int offset) {
List<Integer> result = new ArrayList<>();
result.addAll(FCDotDEC2701DashPX0.ESC68_DEC0801_E16.baklavaPointSequence());
result.addAll(FCDotDEC0801DashE16.ESC68_PIE.baklavaPointSequence());
result.addAll(FCDotDEC2701DashPX0.ESC68_2PIE.baklavaPointSequence());
result.add(letter.baklavaPointDotIndex());
result.add(FCDotCDC1604DashP6.NX01_A.ordinal() + offset);
//result.add(FCDotCDC1604DashP6.SEQ_SALAH__EXCLAMATION.cakePointDotIndex()); // TODO: add api layer snake for head
@ -73,10 +71,10 @@ public interface FourCornerDotCollePie9 extends FourCornerX06BaklavaPointSequenc
default List<Integer> baklavaPointsPIE9D(FCDotCDC1604DashP6 letter, int offset) {
List<Integer> result = new ArrayList<>();
result.addAll(FCDotDEC2701DashPX0.ESC68_DEC0801_E16.baklavaPointSequence());
result.addAll(FCDotDEC0801DashE16.ESC68_PIE.baklavaPointSequence());
result.addAll(FCDotDEC2701DashPX0.ESC68_2PIE.baklavaPointSequence());
result.add(letter.baklavaPointDotIndex());
result.add(FCDotCDC1604DashP6.NY01_AT.ordinal() - offset);
result.add(FCDotCDC1604DashP6._SALT_COMPARE_RIGHT.baklavaPointDotIndex());
result.add(FCDotCDC1604DashP6.NX01_A.ordinal() - offset);
//result.add(FCDotCDC1604DashP6.SEQ_SALAH__EXCLAMATION.cakePointDotIndex()); // TODO: add api layer snake for head
return result;
}

View file

@ -26,7 +26,7 @@ import java.util.ArrayList;
import java.util.List;
import org.x4o.fc18.cake2.zero33.FCDotCDC1604DashP6;
import org.x4o.fc18.cake2.zero33.FCDotDEC2701DashPX0;
import org.x4o.fc18.cake2.zero33.dec1.FCDotDEC2701DashPX0;
/// Glue interface for the command VT enums.
///

View file

@ -20,24 +20,24 @@
* 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 org.x4o.fc18.cake2.tty00;
package org.x4o.fc18.cake2.flag4;
import org.x4o.fc18.cake2.FourCornerDotCake;
import org.x4o.fc18.cake2.FourCornerDotColleTTY;
import org.x4o.fc18.cake2.FourCornerDotColleFlag4;
/**
* "FC.TYY0001-NL" Four Corner Tele Type Ytucture00 zero one New Line with automatic carriage return.
* "FC.F4TTY0001-NL" Four Corner Flag 4 Tele Type Ytucture00 zero one New Line with automatic carriage return.
*
* @author Willem Cazander
* @version 1.0 Jan 22, 2025
*/
public enum FCDotTTY0001DashNL implements FourCornerDotColleTTY {
public enum FCDotF4TTY0001DashNL implements FourCornerDotColleFlag4 {
NEW_LINE,
NETHER_LINE,
;
@Override
public int cakePointDotIndex() {
return FourCornerDotCake.FC_TTY0001_NL.getStart() + ordinal();
return FourCornerDotCake.FC_F4TTY0001_NL.getStart() + ordinal();
}
}

View file

@ -20,24 +20,24 @@
* 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 org.x4o.fc18.cake2.zero33;
package org.x4o.fc18.cake2.flag4;
import org.x4o.fc18.cake2.FourCornerDotCake;
import org.x4o.fc18.cake2.FourCornerDotColleFlag4;
/**
* "FC.DEC0901-EU" Four Corner dot Directly Escaped Control of 9 Extra User control codes.
* "FC.F4TXT0001-SP" Four Corner Flag 4 Tele Type Ytucture00 zero one Spanish Peace empty space indicator for text.
*
* @author Willem Cazander
* @version 1.0 Jan 21, 2025
* @version 1.0 Jan 22, 2025
*/
public enum FCDotDEC0901DashEU {
public enum FCDotF4TXT0001DashSP implements FourCornerDotColleFlag4 {
ESC_USER_1,
ESC_USER_2,
ESC_USER_3,
ESC_USER_4,
ESC_USER_5,
ESC_USER_6,
ESC_USER_7,
ESC_USER_8,
ESC_USER_9,
SPANISH_PEACE,
;
@Override
public int cakePointDotIndex() {
return FourCornerDotCake.FC_F4TXT0001_SP.getStart() + ordinal();
}
}

View file

@ -27,4 +27,4 @@
*
* @since 1.0
*/
package org.x4o.fc18.cake2.tty00;
package org.x4o.fc18.cake2.flag4;

View file

@ -73,7 +73,7 @@ public enum FCDotPIE9CDash27 implements FourCornerDotCollePie9 {
@Override
public List<Integer> baklavaPointSequence() {
return baklavaPointsPIE9C(FCDotCDC1604DashP6.NX27_AMPERSAND, ordinal());
return baklavaPointsPIE9C(FCDotCDC1604DashP6.NX27_AMP, ordinal());
}
@Override

View file

@ -26,6 +26,7 @@ import java.util.List;
import org.x4o.fc18.cake2.FourCornerDotCake;
import org.x4o.fc18.cake2.FourCornerDotColleZero33;
import org.x4o.fc18.cake2.zero33.dec1.FCDotINC0801DashP8;
/// "FC.APL0127-P7A" Four Corner A Programming Language symbols cake slice of cake points.
///
@ -114,7 +115,7 @@ public enum FCDotAPL0127DashP7A implements FourCornerDotColleZero33 {
@Override
public List<Integer> baklavaPointSequence() {
return FCDotDEC0801DashE16.ESC6_APL0127_P7A.baklavaPointsE16(ordinal());
return FCDotINC0801DashP8.INC_APL0127_P7A.baklavaPointsE16(ordinal());
}
@Override

View file

@ -26,6 +26,7 @@ import java.util.List;
import org.x4o.fc18.cake2.FourCornerDotCake;
import org.x4o.fc18.cake2.FourCornerDotColleZero33;
import org.x4o.fc18.cake2.zero33.dec1.FCDotINC0801DashP8;
/// "FC.APL0127-P7B" Four Corner A Programming Language symbols cake slice of cake points.
///
@ -118,7 +119,7 @@ public enum FCDotAPL0127DashP7B implements FourCornerDotColleZero33 {
@Override
public List<Integer> baklavaPointSequence() {
return FCDotDEC0801DashE16.ESC6_APL0127_P7B.baklavaPointsE16(ordinal());
return FCDotINC0801DashP8.INC_APL0127_P7B.baklavaPointsE16(ordinal());
}
@Override

View file

@ -26,6 +26,7 @@ import java.util.List;
import org.x4o.fc18.cake2.FourCornerDotCake;
import org.x4o.fc18.cake2.FourCornerDotColleZero33;
import org.x4o.fc18.cake2.zero33.dec1.FCDotINC0801DashP8;
/// "FC.APL0127-P7C" Four Corner A Programming Language symbols cake slice of cake points.
///
@ -120,7 +121,7 @@ public enum FCDotAPL0127DashP7C implements FourCornerDotColleZero33 {
@Override
public List<Integer> baklavaPointSequence() {
return FCDotDEC0801DashE16.ESC6_APL0127_P7A.baklavaPointsE16(ordinal());
return FCDotINC0801DashP8.INC_APL0127_P7A.baklavaPointsE16(ordinal());
}
@Override

View file

@ -26,6 +26,7 @@ import java.util.List;
import org.x4o.fc18.cake2.FourCornerDotCake;
import org.x4o.fc18.cake2.FourCornerDotColleZero33;
import org.x4o.fc18.cake2.zero33.dec1.FCDotINC0801DashP8;
/// "FC.BYD0127-P7D" Four Corner Block Your Display terminal application.
///
@ -72,7 +73,7 @@ public enum FCDotBYD0127DashP7D implements FourCornerDotColleZero33 {
@Override
public List<Integer> baklavaPointSequence() {
return FCDotDEC0801DashE16.ESC6_BYD0127_P7D.baklavaPointsE16(ordinal());
return FCDotINC0801DashP8.INC_BYD0127_P7D.baklavaPointsE16(ordinal());
}
@Override

View file

@ -26,6 +26,7 @@ import java.util.List;
import org.x4o.fc18.cake2.FourCornerDotCake;
import org.x4o.fc18.cake2.FourCornerDotColleZero33;
import org.x4o.fc18.cake2.zero33.dec1.FCDotINC0801DashP8;
/// "FC.BYD0127-P7E" Four Corner Block Your Display terminal application.
///
@ -74,7 +75,7 @@ public enum FCDotBYD0127DashP7E implements FourCornerDotColleZero33 {
@Override
public List<Integer> baklavaPointSequence() {
return FCDotDEC0801DashE16.ESC6_BYD0127_P7E.baklavaPointsE16(ordinal());
return FCDotINC0801DashP8.INC_BYD0127_P7E.baklavaPointsE16(ordinal());
}
@Override

View file

@ -26,6 +26,7 @@ import java.util.List;
import org.x4o.fc18.cake2.FourCornerDotCake;
import org.x4o.fc18.cake2.FourCornerDotColleZero33;
import org.x4o.fc18.cake2.zero33.dec1.FCDotINC0801DashP8;
/// "FC.BYD0127-P7F" Four Corner Block Your Display terminal application.
///
@ -76,7 +77,7 @@ public enum FCDotBYD0127DashP7F implements FourCornerDotColleZero33 {
@Override
public List<Integer> baklavaPointSequence() {
return FCDotDEC0801DashE16.ESC6_BYD0127_P7F.baklavaPointsE16(ordinal());
return FCDotINC0801DashP8.INC_BYD0127_P7F.baklavaPointsE16(ordinal());
}
@Override

View file

@ -127,7 +127,7 @@ public enum FCDotCDC1604DashP6 implements FourCornerDotColleZero33 {
NX25_Y('Y'),
NX26_Z('Z'),
/// The 27th letter is at the end of the old english alphabet.
NX27_AMPERSAND('&'),
NX27_AMP('&'),
;
static final private FCDotCDC1604DashP6[] VALUES = values(); // values() is slow method

View file

@ -20,51 +20,48 @@
* 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 org.x4o.fc18.cake2.zero33;
package org.x4o.fc18.cake2.zero33.dec1;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import org.x4o.fc18.cake2.FourCornerX06BaklavaPointSequence;
import org.x4o.fc18.cake2.FourCornerX08MuffinPointSequence;
import org.x4o.fc18.cake2.FourCornerX18CakePointSequence;
import org.x4o.fc18.cake2.zero33.FCDotCDC1604DashP6;
/**
* "FC.DEC0801-E19" Four Corner dot Directly Escaped Control of 8 embedded control codes.
* "FC.CMD5401-2D" Four Corner dot Command for 54 embedded control codes.
*
* @author Willem Cazander
* @version 1.0 Jan 21, 2025
*/
public enum FCDotDEC0801DashE19 implements FourCornerX06BaklavaPointSequence, FourCornerX08MuffinPointSequence, FourCornerX18CakePointSequence {
public enum FCDotCMD5401Dash2D implements FourCornerX06BaklavaPointSequence, FourCornerX08MuffinPointSequence, FourCornerX18CakePointSequence {
/// ¡¡¡
/// Write out an basic structure NEXT token, also called a line feed with automatic carriage return.
TYPE_WRITER_TTY0001_NL,
/// Write out an basic spanish peace sign, a virtual none-excisting symbol.
CMD_F4TXT0001_SP(FCDotCDC1604DashP6.NX01_A),
/// ¡¡¿
__RESERVED_2,
/// ¡¿¡
__RESERVED_3,
/// ¡¿¿
__RESERVED_4,
/// ¿¡¿
__RESERVED_5,
/// ¿¡¿
__RESERVED_6,
/// ¿¡¡
__RESERVED_7,
/// ¿¿¿
__RESERVED_8,
/// Write out an nether line which goes to the line below, also called a line feed with automatic carriage return.
CMD_F4TTY0001_NL(FCDotCDC1604DashP6.NX02_B),
;
private final FCDotCDC1604DashP6 selector;
private FCDotCMD5401Dash2D(FCDotCDC1604DashP6 selector) {
this.selector = Objects.requireNonNull(selector);
if (selector.ordinal() <= FCDotCDC1604DashP6._SALT_COMPARE_RIGHT.ordinal()) {
throw new IllegalArgumentException("Not used here to keep mind space free");
}
}
@Override
public List<Integer> baklavaPointSequence() {
return FCDotCDC1604DashP6.pepper3SequenceWritePoints(ordinal());
List<Integer> result = new ArrayList<>();
result.addAll(FCDotDEC2701DashPX0.ESC68_CMD5401_2D.baklavaPointSequence());
result.add(selector.baklavaPointDotIndex());
return result;
}
@Override
@ -76,4 +73,13 @@ public enum FCDotDEC0801DashE19 implements FourCornerX06BaklavaPointSequence, Fo
public List<Integer> cakePointSequence() {
return baklavaPointSequence();
}
static public Optional<FCDotCMD5401Dash2D> valueOfCDC(int cdcPoint) {
for (FCDotCMD5401Dash2D value : values()) {
if (value.selector.baklavaPointDotIndex() == cdcPoint) {
return Optional.of(value);
}
}
return Optional.empty();
}
}

View file

@ -20,7 +20,7 @@
* 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 org.x4o.fc18.cake2.zero33;
package org.x4o.fc18.cake2.zero33.dec1;
import java.util.ArrayList;
import java.util.List;
@ -28,6 +28,7 @@ import java.util.List;
import org.x4o.fc18.cake2.FourCornerX06BaklavaPointSequence;
import org.x4o.fc18.cake2.FourCornerX08MuffinPointSequence;
import org.x4o.fc18.cake2.FourCornerX18CakePointSequence;
import org.x4o.fc18.cake2.zero33.FCDotCDC1604DashP6;
/**
* "FC.DEC0801-E10" Four Corner dot Directly Escaped Control of 8 embedded control codes.

View file

@ -20,7 +20,7 @@
* 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 org.x4o.fc18.cake2.zero33;
package org.x4o.fc18.cake2.zero33.dec1;
import java.util.List;
@ -28,6 +28,7 @@ import org.x4o.fc18.cake2.FourCornerDotCake;
import org.x4o.fc18.cake2.FourCornerX06BaklavaPointSequence;
import org.x4o.fc18.cake2.FourCornerX08MuffinPointSequence;
import org.x4o.fc18.cake2.FourCornerX18CakePointDotIndex;
import org.x4o.fc18.cake2.zero33.FCDotCDC1604DashP6;
/**
* "FC.DEC2701-PX0" Four Corner dot Direct or Escaped Control in grid of 1 by 27 of dashed CDC invisible page X Zero codes.
@ -107,11 +108,16 @@ public enum FCDotDEC2701DashPX0 implements FourCornerX06BaklavaPointSequence, Fo
__ESC_RESERVED_B5,
/// _ESC6_X2 _ESC6_X2 _ESC6_X3 = 15
__ESC_RESERVED_B6,
/// Select psacked pie terminator symbol on 6 and 8 bit systems.
/// A = 1, first P6 is terminator select, than next P6 _A++ select pie part 1-27, until other P6 stops it.
/// Example ascii "012" is
/// 012 = __PIE NX10_J NX01_A NX02_B NX02_C
/// TODO: Add negative AT for -1 to -27 as P6 symbols to select PIE9D + map in __RESERVED_PIE_SYMBOLS
ESC68_2PIE,
/// _ESC6_X2 _ESC6_X3 _ESC6_X1 = 16
/// Embed symbol mode starts in CDC, use sequence of 3 UPDOWN letters to select mode and end with !
ESC68_DEC0801_E16,
ESC68_INC0801_P8,
/// _ESC6_X2 _ESC6_X3 _ESC6_X2 = 17
/// Select packed pie terminator number for 6 and 8 bit systems.
@ -127,8 +133,8 @@ public enum FCDotDEC2701DashPX0 implements FourCornerX06BaklavaPointSequence, Fo
// =========== Internal control sequences
/// _ESC6_X3 _ESC6_X1 _ESC6_X1 = 19
/// Extra sequence selector for type writer signals.
ESC68_DEC0801_E19,
/// Command for type writer signals shortcuts.
ESC68_CMD5401_2D,
/// _ESC6_X3 _ESC6_X1 _ESC6_X2 = 20
__ESC_RESERVED_C2,

View file

@ -20,7 +20,7 @@
* 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 org.x4o.fc18.cake2.zero33;
package org.x4o.fc18.cake2.zero33.dec1;
import java.util.ArrayList;
import java.util.List;
@ -28,50 +28,47 @@ import java.util.List;
import org.x4o.fc18.cake2.FourCornerX06BaklavaPointSequence;
import org.x4o.fc18.cake2.FourCornerX08MuffinPointSequence;
import org.x4o.fc18.cake2.FourCornerX18CakePointSequence;
import org.x4o.fc18.cake2.zero33.FCDotCDC1604DashP6;
/**
* "FC.DEC0801-E16" Four Corner dot Directly Escaped Control of 8 symbols modes.
* "FC.INC0801-P8" Four Corner dot escaped Incremented 8 controls of the Page modes.
*
* @author Willem Cazander
* @version 1.0 Jan 21, 2025
*/
public enum FCDotDEC0801DashE16 implements FourCornerX06BaklavaPointSequence, FourCornerX08MuffinPointSequence, FourCornerX18CakePointSequence {
public enum FCDotINC0801DashP8 implements FourCornerX06BaklavaPointSequence, FourCornerX08MuffinPointSequence, FourCornerX18CakePointSequence {
/// ¡¡¡
/// Return back to P6 mode.
ESC68_CDC1604_P6,
/// Select italic mode.
INC_PIE9D_27,
/// ¡¡¿
/// Select APL page 7A mode.
ESC6_APL0127_P7A,
INC_APL0127_P7A,
/// ¡¿¡
/// Select APL page 7B mode.
ESC6_APL0127_P7B,
INC_APL0127_P7B,
/// ¡¿¿
/// Select APL page 7C mode.
ESC6_APL0127_P7C,
INC_APL0127_P7C,
/// ¿¡¿
/// Select BYD page 7D mode.
ESC6_BYD0127_P7D,
INC_BYD0127_P7D,
/// ¿¡¿
/// Select BYD page 7E mode.
ESC6_BYD0127_P7E,
INC_BYD0127_P7E,
/// ¿¡¡
/// Select BYD page 7F mode.
ESC6_BYD0127_P7F,
INC_BYD0127_P7F,
/// ¿¿¿
/// Select packed pie terminator symbol on 6 and 8 bit systems.
/// A = 1, first P6 is terminator select, than next P6 _A++ select pie part 1-27, until other P6 stops it.
/// Example ascii "012" is
/// 012 = __PIE NX10_J NX01_A NX02_B NX02_C
/// TODO: Add negative AT for -1 to -27 as P6 symbols to select PIE9D + map in __RESERVED_PIE_SYMBOLS
ESC68_PIE,
// Select lower case mode.
INC_PIE9C_26,
;
@Override
@ -91,7 +88,7 @@ public enum FCDotDEC0801DashE16 implements FourCornerX06BaklavaPointSequence, Fo
public List<Integer> baklavaPointsE16(int offset) {
List<Integer> result = new ArrayList<>();
result.addAll(FCDotDEC2701DashPX0.ESC68_DEC0801_E16.baklavaPointSequence());
result.addAll(FCDotDEC2701DashPX0.ESC68_INC0801_P8.baklavaPointSequence());
result.addAll(baklavaPointSequence());
result.add(FCDotCDC1604DashP6.NX01_A.ordinal() + offset);
//result.add(FCDotCDC1604DashP6.SEQ_SALAH__EXCLAMATION.cakePointDotIndex()); // TODO: add api layer snake for head

View file

@ -20,7 +20,7 @@
* 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 org.x4o.fc18.cake2.zero33.vt06;
package org.x4o.fc18.cake2.zero33.dec1.vt06;
import java.util.Objects;

View file

@ -20,7 +20,7 @@
* 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 org.x4o.fc18.cake2.zero33.vt06;
package org.x4o.fc18.cake2.zero33.dec1.vt06;
import java.util.List;
import java.util.Objects;

View file

@ -20,7 +20,7 @@
* 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 org.x4o.fc18.cake2.zero33.vt06;
package org.x4o.fc18.cake2.zero33.dec1.vt06;
import java.util.List;
import java.util.Objects;

View file

@ -24,7 +24,7 @@ package org.x4o.fc18.zion7;
import java.util.List;
import org.x4o.fc18.cake2.zero33.FCDotDEC0901DashEU;
import org.x4o.fc18.cake2.zero33.dec1.FCDotDEC2701DashPX0;
/// Handles the lexer salah sequence strobes.
///
@ -32,5 +32,5 @@ import org.x4o.fc18.cake2.zero33.FCDotDEC0901DashEU;
/// @version 1.0 Jan 11, 2025
public interface FourCornerZion7SalahSequence extends FourCornerZion7Candlelier {
void strobeSalahSequence(FCDotDEC0901DashEU type, List<List<Integer>> arguments);
void strobeSalahSequence(FCDotDEC2701DashPX0 type, List<List<Integer>> arguments);
}

View file

@ -28,15 +28,15 @@ import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.PrimitiveIterator;
import org.x4o.fc18.cake2.FourCornerDotCake;
import org.x4o.fc18.cake2.zero33.FCDotCDC1604DashP6;
import org.x4o.fc18.cake2.zero33.FCDotDEC0801DashE10;
import org.x4o.fc18.cake2.zero33.FCDotDEC0801DashE16;
import org.x4o.fc18.cake2.zero33.FCDotDEC0801DashE19;
import org.x4o.fc18.cake2.zero33.FCDotDEC0901DashEU;
import org.x4o.fc18.cake2.zero33.FCDotDEC2701DashPX0;
import org.x4o.fc18.cake2.zero33.dec1.FCDotCMD5401Dash2D;
import org.x4o.fc18.cake2.zero33.dec1.FCDotDEC0801DashE10;
import org.x4o.fc18.cake2.zero33.dec1.FCDotDEC2701DashPX0;
import org.x4o.fc18.cake2.zero33.dec1.FCDotINC0801DashP8;
/// Parsed FC text and calls the handler methods for the classified strobe lights.
///
@ -472,12 +472,13 @@ public class FourCornerZionStenoLexer {
static class StenoScannerCDCDEC extends StenoScanner {
// TODO: remove state here
private int scanIndex = 0;
private int scanIndexEnd = 0;
private Integer ncrMode = null;
private Integer pieMode = null;
private FCDotDEC2701DashPX0 decMode = null;
private Integer pepperMode = null;
private int cdcDECScanIndex = 0;
private int cdcDECScanIndexEnd = 0;
private FCDotDEC2701DashPX0 cdcDECMode = null;
private FCDotINC0801DashP8 cdcDECModeInc = null;
private FCDotDEC0801DashE10 cdcDECModeE10 = null;
private Integer cdcDECModeNcr = null;
private Integer cdcDECModePie = null;
public StenoScannerCDCDEC() {
super(FourCornerDotCake.FC_CDC1604_P6.getStart(), FourCornerDotCake.FC_DEC2701_PX0.getStop());
@ -485,20 +486,17 @@ public class FourCornerZionStenoLexer {
@Override
public void process(FourCornerZionStenoLexer lexer, int idxFirst, int idxLast) {
decMode = null;
ncrMode = null;
pieMode = null;
pepperMode = null;
scanIndex = idxFirst;
scanIndexEnd = idxLast;
for (scanIndex = idxFirst; scanIndex <= scanIndexEnd; scanIndex++) {
decModeReset();
cdcDECScanIndex = idxFirst;
cdcDECScanIndexEnd = idxLast;
for (cdcDECScanIndex = idxFirst; cdcDECScanIndex <= cdcDECScanIndexEnd; cdcDECScanIndex++) {
if (handleEscape(lexer)) {
continue;
}
if (decMode != null && handleDECMode(lexer)) {
if (cdcDECMode != null && handleDECMode(lexer)) {
continue;
}
int cdcDECPoint = lexer.input.get(scanIndex);
int cdcDECPoint = lexer.input.get(cdcDECScanIndex);
if (FourCornerDotCake.FC_DEC2701_PX0.contains(cdcDECPoint)) {
lexer.handler.strobeWord(FourCornerDotCake.FC_DEC2701_PX0, cdcDECPoint - FourCornerDotCake.FC_DEC2701_PX0.getStart());
} else {
@ -507,65 +505,46 @@ public class FourCornerZionStenoLexer {
}
}
private void cleanOldDECMode() {
pepperMode = null;
ncrMode = null;
pieMode = null;
private void decModeReset() {
cdcDECMode = null;
cdcDECModeInc = null;
cdcDECModeE10 = null;
cdcDECModeNcr = null;
cdcDECModePie = null;
}
private boolean handleEscape(FourCornerZionStenoLexer lexer) {
if (!lexer.handlerEscape) {
return false; // disable escape handing
}
int cdcDECPoint = lexer.input.get(scanIndex);
int cdcDECPoint = lexer.input.get(cdcDECScanIndex);
if (FourCornerDotCake.FC_DEC2701_PX0.contains(cdcDECPoint)) {
decMode = FCDotDEC2701DashPX0.valueOfCakePoint(cdcDECPoint);
cleanOldDECMode();
decModeReset();
cdcDECMode = FCDotDEC2701DashPX0.valueOfCakePoint(cdcDECPoint);
return true;
} else if (FCDotCDC1604DashP6.isEscape6(cdcDECPoint)) {
decMode = readEscape6(lexer);
cleanOldDECMode();
return true;
}
// TODO: move this code where used
if (FCDotCDC1604DashP6.isEscapePepper(cdcDECPoint)) {
pepperMode = readEscapePepper3(lexer);
// pepper is allowed to be last char of stream of ending with new line ending
if (FCDotDEC2701DashPX0.ESC68_DEC0801_E19.equals(decMode)) {
FCDotDEC0801DashE19 e19Mode = FCDotDEC0801DashE19.values()[pepperMode];
if (e19Mode == FCDotDEC0801DashE19.TYPE_WRITER_TTY0001_NL) {
decMode = null;
pepperMode = null;
lexer.currLine++;
lexer.currCol = 0;
lexer.fireSignals.fireStateLine(lexer.currLine);
lexer.fireSignals.fireStateColumn(lexer.currCol);
lexer.handler.strobeWord(FourCornerDotCake.FC_TTY0001_NL, 0); // new line
return true;
}
lexer.smokeSignals.burnUnsupported(lexer.currLine, lexer.currCol, pepperMode);
}
decModeReset();
cdcDECMode = readEscape6(lexer);
return true;
}
return false;
}
private FCDotDEC2701DashPX0 readEscape6(FourCornerZionStenoLexer lexer) {
int cdcPoint1 = lexer.input.get(scanIndex);
if (scanIndex >= scanIndexEnd) {
int cdcPoint1 = lexer.input.get(cdcDECScanIndex);
if (cdcDECScanIndex >= cdcDECScanIndexEnd) {
return null;
}
scanIndex++;
int cdcPoint2 = lexer.input.get(scanIndex);
cdcDECScanIndex++;
int cdcPoint2 = lexer.input.get(cdcDECScanIndex);
if (!FCDotCDC1604DashP6.isEscape6(cdcPoint2)) {
return null;
}
if (scanIndex >= scanIndexEnd) {
if (cdcDECScanIndex >= cdcDECScanIndexEnd) {
return null;
}
scanIndex++;
int cdcPoint3 = lexer.input.get(scanIndex);
cdcDECScanIndex++;
int cdcPoint3 = lexer.input.get(cdcDECScanIndex);
if (!FCDotCDC1604DashP6.isEscape6(cdcPoint3)) {
return null;
}
@ -576,20 +555,20 @@ public class FourCornerZionStenoLexer {
}
private Integer readEscapePepper3(FourCornerZionStenoLexer lexer) {
int cdcPoint1 = lexer.input.get(scanIndex);
if (scanIndex >= scanIndexEnd) {
int cdcPoint1 = lexer.input.get(cdcDECScanIndex);
if (cdcDECScanIndex >= cdcDECScanIndexEnd) {
return null;
}
scanIndex++;
int cdcPoint2 = lexer.input.get(scanIndex);
cdcDECScanIndex++;
int cdcPoint2 = lexer.input.get(cdcDECScanIndex);
if (!FCDotCDC1604DashP6.isEscapePepper(cdcPoint2)) {
return null;
}
if (scanIndex >= scanIndexEnd) {
if (cdcDECScanIndex >= cdcDECScanIndexEnd) {
return null;
}
scanIndex++;
int cdcPoint3 = lexer.input.get(scanIndex);
cdcDECScanIndex++;
int cdcPoint3 = lexer.input.get(cdcDECScanIndex);
if (!FCDotCDC1604DashP6.isEscapePepper(cdcPoint3)) {
return null;
}
@ -600,120 +579,266 @@ public class FourCornerZionStenoLexer {
}
private boolean handleDECMode(FourCornerZionStenoLexer lexer) {
if (FCDotDEC2701DashPX0.ESC_STOP.equals(decMode)) {
cleanOldDECMode();
decMode = null;
if (FCDotDEC2701DashPX0.ESC_STOP.equals(cdcDECMode)) {
decModeReset();
return false; // print current char
}
if (decMode.isExternal()) {
if (cdcDECMode.isExternal() || FCDotDEC2701DashPX0.ESC_VT06.equals(cdcDECMode)) {
decModeReset();
List<List<Integer>> args = new ArrayList<>();
boolean readOK = scanSalahRakaAt(lexer, args);
if (readOK == false) {
return true; // point is eaten
}
if (lexer.handlerSalahSequence != null) {
FCDotDEC0901DashEU salahMode = FCDotDEC0901DashEU.values()[decMode.ordinal()];
lexer.handlerSalahSequence.strobeSalahSequence(salahMode, args);
lexer.handlerSalahSequence.strobeSalahSequence(cdcDECMode, args);
}
return true;
}
if (pepperMode != null) {
return handlePepper(lexer);
if (FCDotDEC2701DashPX0.ESC68_2PIE.equals(cdcDECMode)) {
return handlePIE(lexer);
}
if (FCDotDEC2701DashPX0.ESC68_NCR.equals(decMode)) {
if (FCDotDEC2701DashPX0.ESC68_CMD5401_2D.equals(cdcDECMode)) {
return handleCMD(lexer);
}
if (FCDotDEC2701DashPX0.ESC68_NCR.equals(cdcDECMode)) {
return handleNCR(lexer); // TODO: add small bank switching ?
}
if (FCDotDEC2701DashPX0.ESC68_FC18.equals(decMode)) {
decMode = null;
if (FCDotDEC2701DashPX0.ESC68_FC18.equals(cdcDECMode)) {
return handleFC18(lexer);
}
if (FCDotDEC2701DashPX0.ESC_VT06.equals(decMode)) {
// TODO: impl
if (FCDotDEC2701DashPX0.ESC_DEC0801_E10.equals(cdcDECMode)) {
return handleE10(lexer);
}
if (FCDotDEC2701DashPX0.ESC_KANJI.equals(decMode)) {
if (FCDotDEC2701DashPX0.ESC68_INC0801_P8.equals(cdcDECMode)) {
return handleINC(lexer);
}
if (FCDotDEC2701DashPX0.ESC_KANJI.equals(cdcDECMode)) {
// TODO: impl
}
return false;
}
private boolean handlePepper(FourCornerZionStenoLexer lexer) {
int cdcPoint = lexer.input.get(scanIndex);
if (FCDotDEC2701DashPX0.ESC_DEC0801_E10.equals(decMode)) {
FCDotDEC0801DashE10 e10Mode = FCDotDEC0801DashE10.values()[pepperMode];
if (e10Mode == FCDotDEC0801DashE10.E10_UWU0101_S1) {
decMode = null;
pepperMode = null;
lexer.handler.strobeWord(FourCornerDotCake.FC_UWU0101_S1, 0); // white space
return false; // print current char, which is the next....
}
lexer.smokeSignals.burnUnsupported(lexer.currLine, lexer.currCol, cdcPoint);
private boolean handleINC(FourCornerZionStenoLexer lexer) {
int cdcPoint = lexer.input.get(cdcDECScanIndex);
if (FCDotCDC1604DashP6.isEscapePepper(cdcPoint)) {
cdcDECModeInc = FCDotINC0801DashP8.values()[readEscapePepper3(lexer)];
return true;
}
if (cdcDECModeInc == null) {
decModeReset();
return false;
}
if (FCDotDEC2701DashPX0.ESC68_DEC0801_E16.equals(decMode)) {
FCDotDEC0801DashE16 e10Mode = FCDotDEC0801DashE16.values()[pepperMode];
if (e10Mode == FCDotDEC0801DashE16.ESC68_CDC1604_P6) {
pepperMode = null;
return true;
}
// TODO: add PIE left/right + elevator button support
if (cdcPoint < FCDotCDC1604DashP6.NX01_A.ordinal()) {
pepperMode = null;
// if (cdcPoint < FCDotCDC1604DashP6.NX01_A.ordinal()) {
// decModeReset();
// return false;
// }
if (FCDotINC0801DashP8.INC_PIE9D_27.equals(cdcDECModeInc)) {
if (cdcPoint < FCDotCDC1604DashP6.NX01_A.ordinal() || cdcPoint > FCDotCDC1604DashP6.NX27_AMP.ordinal()) {
decModeReset();
return false;
}
if (e10Mode == FCDotDEC0801DashE16.ESC6_APL0127_P7A) {
lexer.handler.strobeWord(FourCornerDotCake.FC_APL0127_P7A, cdcPoint - FCDotCDC1604DashP6.NX01_A.ordinal());
return true;
}
if (e10Mode == FCDotDEC0801DashE16.ESC6_APL0127_P7B) {
lexer.handler.strobeWord(FourCornerDotCake.FC_APL0127_P7B, cdcPoint - FCDotCDC1604DashP6.NX01_A.ordinal());
return true;
}
if (e10Mode == FCDotDEC0801DashE16.ESC6_APL0127_P7C) {
lexer.handler.strobeWord(FourCornerDotCake.FC_APL0127_P7C, cdcPoint - FCDotCDC1604DashP6.NX01_A.ordinal());
return true;
}
if (e10Mode == FCDotDEC0801DashE16.ESC6_BYD0127_P7D) {
lexer.handler.strobeWord(FourCornerDotCake.FC_BYD0127_P7D, cdcPoint - FCDotCDC1604DashP6.NX01_A.ordinal());
return true;
}
if (e10Mode == FCDotDEC0801DashE16.ESC6_BYD0127_P7E) {
lexer.handler.strobeWord(FourCornerDotCake.FC_BYD0127_P7E, cdcPoint - FCDotCDC1604DashP6.NX01_A.ordinal());
return true;
}
if (e10Mode == FCDotDEC0801DashE16.ESC6_BYD0127_P7F) {
lexer.handler.strobeWord(FourCornerDotCake.FC_BYD0127_P7F, cdcPoint - FCDotCDC1604DashP6.NX01_A.ordinal());
return true;
}
if (e10Mode == FCDotDEC0801DashE16.ESC68_PIE) {
return handlePIE(lexer);
}
lexer.handler.strobeWord(FourCornerDotCake.FC_PIE9C_27, cdcPoint - FCDotCDC1604DashP6.NX01_A.ordinal());
return true;
}
if (FCDotINC0801DashP8.INC_APL0127_P7A.equals(cdcDECModeInc)) {
if (cdcPoint < FCDotCDC1604DashP6.NX01_A.ordinal() || cdcPoint > FCDotCDC1604DashP6.NX27_AMP.ordinal()) {
decModeReset();
return false;
}
lexer.handler.strobeWord(FourCornerDotCake.FC_APL0127_P7A, cdcPoint - FCDotCDC1604DashP6.NX01_A.ordinal());
return true;
}
if (FCDotINC0801DashP8.INC_APL0127_P7B.equals(cdcDECModeInc)) {
if (cdcPoint < FCDotCDC1604DashP6.NX01_A.ordinal() || cdcPoint > FCDotCDC1604DashP6.NX27_AMP.ordinal()) {
decModeReset();
return false;
}
lexer.handler.strobeWord(FourCornerDotCake.FC_APL0127_P7B, cdcPoint - FCDotCDC1604DashP6.NX01_A.ordinal());
return true;
}
if (FCDotINC0801DashP8.INC_APL0127_P7C.equals(cdcDECModeInc)) {
if (cdcPoint < FCDotCDC1604DashP6.NX01_A.ordinal() || cdcPoint > FCDotCDC1604DashP6.NX27_AMP.ordinal()) {
decModeReset();
return false;
}
lexer.handler.strobeWord(FourCornerDotCake.FC_APL0127_P7C, cdcPoint - FCDotCDC1604DashP6.NX01_A.ordinal());
return true;
}
if (FCDotINC0801DashP8.INC_BYD0127_P7D.equals(cdcDECModeInc)) {
if (cdcPoint < FCDotCDC1604DashP6.NX01_A.ordinal() || cdcPoint > FCDotCDC1604DashP6.NX27_AMP.ordinal()) {
decModeReset();
return false;
}
lexer.handler.strobeWord(FourCornerDotCake.FC_BYD0127_P7D, cdcPoint - FCDotCDC1604DashP6.NX01_A.ordinal());
return true;
}
if (FCDotINC0801DashP8.INC_BYD0127_P7E.equals(cdcDECModeInc)) {
if (cdcPoint < FCDotCDC1604DashP6.NX01_A.ordinal() || cdcPoint > FCDotCDC1604DashP6.NX27_AMP.ordinal()) {
decModeReset();
return false;
}
lexer.handler.strobeWord(FourCornerDotCake.FC_BYD0127_P7E, cdcPoint - FCDotCDC1604DashP6.NX01_A.ordinal());
return true;
}
if (FCDotINC0801DashP8.INC_BYD0127_P7F.equals(cdcDECModeInc)) {
if (cdcPoint < FCDotCDC1604DashP6.NX01_A.ordinal() || cdcPoint > FCDotCDC1604DashP6.NX27_AMP.ordinal()) {
decModeReset();
return false;
}
lexer.handler.strobeWord(FourCornerDotCake.FC_BYD0127_P7F, cdcPoint - FCDotCDC1604DashP6.NX01_A.ordinal());
return true;
}
if (FCDotINC0801DashP8.INC_PIE9C_26.equals(cdcDECModeInc)) {
if (cdcPoint < FCDotCDC1604DashP6.NX01_A.ordinal() || cdcPoint > FCDotCDC1604DashP6.NX26_Z.ordinal()) {
decModeReset();
return false;
}
lexer.handler.strobeWord(FourCornerDotCake.FC_PIE9C_26, cdcPoint - FCDotCDC1604DashP6.NX01_A.ordinal());
return true;
}
return false;
}
private boolean handleE10(FourCornerZionStenoLexer lexer) {
int cdcPoint = lexer.input.get(cdcDECScanIndex);
if (FCDotCDC1604DashP6.isEscapePepper(cdcPoint)) {
cdcDECModeE10 = FCDotDEC0801DashE10.values()[readEscapePepper3(lexer)];
return true;
}
if (FCDotCDC1604DashP6._SALAH_EXCLAMATION.baklavaPointDotIndex() == cdcPoint) {
decModeReset();
return true; // end E10 mode, so no print
}
// if (FCDotCDC1604DashP6._RAKA_QUESTION.baklavaPointDotIndex() == cdcPoint) {
// decModeE10DeckLevel = 0;
// }
// if (FCDotCDC1604DashP6._SALT_COMPARE_LEFT.baklavaPointDotIndex() == cdcPoint) {
// decModeE10DeckLevel = 1;
// return true;
// }
// if (FCDotCDC1604DashP6._SALT_COMPARE_RIGHT.baklavaPointDotIndex() == cdcPoint) {
// decModeE10DeckLevel = 2;
// return true;
// }
if (FCDotDEC0801DashE10.E10_CDC1604_P6.equals(cdcDECModeE10)) {
lexer.handler.strobeWord(FourCornerDotCake.FC_CDC1604_P6, cdcPoint);
return true;
}
if (FCDotDEC0801DashE10.E10_BMW0102_S2.equals(cdcDECModeE10)) {
if (cdcPoint < FCDotCDC1604DashP6.NX01_A.ordinal() || cdcPoint > FCDotCDC1604DashP6.NX02_B.ordinal()) {
decModeReset();
return false;
}
lexer.handler.strobeWord(FourCornerDotCake.FC_BMW0102_S2, cdcPoint - FCDotCDC1604DashP6.NX01_A.ordinal());
return true;
}
if (FCDotDEC0801DashE10.E10_AMD0110_SA.equals(cdcDECModeE10)) {
if (cdcPoint < FCDotCDC1604DashP6.NX01_A.ordinal() || cdcPoint > FCDotCDC1604DashP6.NX10_J.ordinal()) {
decModeReset();
return false;
}
lexer.handler.strobeWord(FourCornerDotCake.FC_AMD0110_SA, cdcPoint);
return true;
}
if (FCDotDEC0801DashE10.E10_NES0127_9C.equals(cdcDECModeE10)) {
if (cdcPoint < FCDotCDC1604DashP6.NX01_A.ordinal() || cdcPoint > FCDotCDC1604DashP6.NX27_AMP.ordinal()) {
decModeReset();
return false;
}
lexer.handler.strobeWord(FourCornerDotCake.FC_NES0127_9C, cdcPoint);
return true;
}
if (FCDotDEC0801DashE10.E10_NXP0103_S3.equals(cdcDECModeE10)) {
if (cdcPoint < FCDotCDC1604DashP6.NX01_A.ordinal() || cdcPoint > FCDotCDC1604DashP6.NX03_C.ordinal()) {
decModeReset();
return false;
}
lexer.handler.strobeWord(FourCornerDotCake.FC_NXP0103_S3, cdcPoint);
return true;
}
if (FCDotDEC0801DashE10.E10_UWU0101_S1.equals(cdcDECModeE10)) {
if (cdcPoint < FCDotCDC1604DashP6.NX01_A.ordinal() || cdcPoint > FCDotCDC1604DashP6.NX01_A.ordinal()) {
decModeReset();
return false;
}
lexer.handler.strobeWord(FourCornerDotCake.FC_UWU0101_S1, 0); // white space
return true;
}
if (FCDotDEC0801DashE10.E10_ICL0126_9B.equals(cdcDECModeE10)) {
if (cdcPoint < FCDotCDC1604DashP6.NX01_A.ordinal() || cdcPoint > FCDotCDC1604DashP6.NX26_Z.ordinal()) {
decModeReset();
return false;
}
lexer.handler.strobeWord(FourCornerDotCake.FC_ICL0126_9B, cdcPoint);
return true;
}
if (FCDotDEC0801DashE10.E10_OCE0801_H3.equals(cdcDECModeE10)) {
if (cdcPoint < FCDotCDC1604DashP6.NX01_A.ordinal() || cdcPoint > FCDotCDC1604DashP6.NX08_H.ordinal()) {
decModeReset();
return false;
}
lexer.handler.strobeWord(FourCornerDotCake.FC_OCE0801_H3, cdcPoint);
return true;
}
decModeReset();
lexer.smokeSignals.burnUnsupported(lexer.currLine, lexer.currCol, cdcPoint);
return false;
}
private boolean handleCMD(FourCornerZionStenoLexer lexer) {
int cdcPoint = lexer.input.get(cdcDECScanIndex);
Optional<FCDotCMD5401Dash2D> cmdModeOpt = FCDotCMD5401Dash2D.valueOfCDC(cdcPoint);
if (cmdModeOpt.isEmpty()) {
decModeReset();
lexer.smokeSignals.burnUnsupported(lexer.currLine, lexer.currCol, cdcPoint);
return false; // TODO: add smoke for unkown cmd
}
FCDotCMD5401Dash2D cmdMode = cmdModeOpt.get();
if (FCDotCMD5401Dash2D.CMD_F4TXT0001_SP.equals(cmdMode)) {
decModeReset();
lexer.handler.strobeWord(FourCornerDotCake.FC_F4TXT0001_SP, 0); // white space
return true;
}
if (FCDotCMD5401Dash2D.CMD_F4TTY0001_NL.equals(cmdMode)) {
decModeReset();
lexer.currLine++;
lexer.currCol = 0;
lexer.fireSignals.fireStateLine(lexer.currLine);
lexer.fireSignals.fireStateColumn(lexer.currCol);
lexer.handler.strobeWord(FourCornerDotCake.FC_F4TTY0001_NL, 0); // new line
return true;
}
decModeReset();
lexer.smokeSignals.burnUnsupported(lexer.currLine, lexer.currCol, cdcPoint);
return false;
}
private boolean handlePIE(FourCornerZionStenoLexer lexer) {
int cdcPoint = lexer.input.get(scanIndex);
int cdcPoint = lexer.input.get(cdcDECScanIndex);
if (pieMode == null) {
pieMode = cdcPoint;
if (pieMode < FCDotCDC1604DashP6.NX01_A.ordinal()) {
pieMode = null; // invalid selector, thus stop
// TODO: add PIE left/right + elevator button support
if (cdcDECModePie == null) {
cdcDECModePie = cdcPoint;
if (cdcDECModePie < FCDotCDC1604DashP6.NX01_A.ordinal()) {
decModeReset();
return false; // print char
} else {
return true;
}
}
if (pieMode != null) {
if (cdcDECModePie != null) {
if (cdcPoint < FCDotCDC1604DashP6.NX01_A.ordinal()) {
pieMode = null;
decModeReset();
return false;
}
if (cdcPoint > pieMode) {
pieMode = null;
if (cdcPoint > cdcDECModePie) {
decModeReset();
return false;
}
}
int terminatorOffZero = pieMode - FCDotCDC1604DashP6.NX01_A.ordinal();
int terminatorOffZero = cdcDECModePie - FCDotCDC1604DashP6.NX01_A.ordinal();
int numberIdxOffZero = cdcPoint - FCDotCDC1604DashP6.NX01_A.ordinal();
FourCornerDotCake slice = FourCornerDotCake.values()[terminatorOffZero + FourCornerDotCake.FC_PIE9C_01.ordinal()];
lexer.handler.strobeWord(slice, numberIdxOffZero);
@ -721,28 +846,28 @@ public class FourCornerZionStenoLexer {
}
private boolean handleNCR(FourCornerZionStenoLexer lexer) {
int cdcPoint = lexer.input.get(scanIndex);
int cdcPoint = lexer.input.get(cdcDECScanIndex);
if (ncrMode == null) {
ncrMode = cdcPoint;
if (ncrMode < FCDotCDC1604DashP6.NX01_A.ordinal()) {
ncrMode = null; // invalid selector, thus stop
if (cdcDECModeNcr == null) {
cdcDECModeNcr = cdcPoint;
if (cdcDECModeNcr < FCDotCDC1604DashP6.NX01_A.ordinal()) {
decModeReset();
return false; // print char
} else {
return true;
}
}
if (ncrMode != null) {
if (cdcDECModeNcr != null) {
if (cdcPoint < FCDotCDC1604DashP6.NX01_A.ordinal()) {
ncrMode = null;
decModeReset();
return false;
}
if (cdcPoint > ncrMode) {
ncrMode = null;
if (cdcPoint > cdcDECModeNcr) {
decModeReset();
return false;
}
}
int terminatorOff = ncrMode - FCDotCDC1604DashP6.NX01_A.ordinal() + 1;
int terminatorOff = cdcDECModeNcr - FCDotCDC1604DashP6.NX01_A.ordinal() + 1;
int numberIdxOff = cdcPoint - FCDotCDC1604DashP6.NX01_A.ordinal() + 1;
BigInteger denominator = BigInteger.valueOf(terminatorOff);
BigInteger numerator = BigInteger.valueOf(numberIdxOff);
@ -751,6 +876,7 @@ public class FourCornerZionStenoLexer {
}
private boolean handleFC18(FourCornerZionStenoLexer lexer) {
decModeReset();
List<List<Integer>> result = new ArrayList<>();
scanSalahRakaAt(lexer, result);
if (result.isEmpty()) {
@ -786,17 +912,17 @@ public class FourCornerZionStenoLexer {
private boolean scanSalahRakaAt(FourCornerZionStenoLexer lexer, List<List<Integer>> result) {
List<Integer> argu = new ArrayList<>();
while (scanIndex <= scanIndexEnd) {
int cdcPoint = lexer.input.get(scanIndex);
while (cdcDECScanIndex <= cdcDECScanIndexEnd) {
int cdcPoint = lexer.input.get(cdcDECScanIndex);
if (cdcPoint == FCDotCDC1604DashP6._NUL.ordinal()) {
lexer.smokeSignals.burnSalahInvalidCakePoint(lexer.currLine, lexer.currCol, cdcPoint);
result.clear();
scanIndex--;
cdcDECScanIndex--;
return false; // _NUL not allowed salah
}
if (FCDotCDC1604DashP6.isEscape6(cdcPoint)) {
result.add(argu);
scanIndex--;
cdcDECScanIndex--;
return true;
}
if (FCDotCDC1604DashP6._SALAH_EXCLAMATION.ordinal() == cdcPoint) {
@ -806,10 +932,10 @@ public class FourCornerZionStenoLexer {
if (FCDotCDC1604DashP6._RAKA_QUESTION.ordinal() == cdcPoint) {
result.add(argu);
argu = new ArrayList<>();
scanIndex++;
cdcDECScanIndex++;
continue; // Next argument
}
scanIndex++;
cdcDECScanIndex++;
argu.add(cdcPoint);
}
lexer.smokeSignals.burnSalahMissingAmen(lexer.currLine, lexer.currCol);

View file

@ -31,9 +31,9 @@ import org.junit.jupiter.api.Test;
import org.x4o.fc18.cake2.FourCornerX06BaklavaPointSequence;
import org.x4o.fc18.cake2.pie9c.FCDotPIE9CDash26;
import org.x4o.fc18.cake2.zero33.FCDotCDC1604DashP6;
import org.x4o.fc18.cake2.zero33.FCDotDEC0801DashE10;
import org.x4o.fc18.cake2.zero33.FCDotDEC0801DashE16;
import org.x4o.fc18.cake2.zero33.FCDotDEC2701DashPX0;
import org.x4o.fc18.cake2.zero33.dec1.FCDotCMD5401Dash2D;
import org.x4o.fc18.cake2.zero33.dec1.FCDotDEC2701DashPX0;
import org.x4o.fc18.cake2.zero33.dec1.FCDotINC0801DashP8;
/**
* Tests four corner displayed as unicode.
@ -48,15 +48,12 @@ public class FourCornerUnicodeDisplayTest {
List<FourCornerX06BaklavaPointSequence> cdc = new ArrayList<>();
cdc.add(FCDotPIE9CDash26.LOW_A);
cdc.add(FCDotPIE9CDash26.LOW_B); // if used as this per letter full escaping here....
//cdc.add(FCDotCDC1604DashP6._SPACE); // out of range is end lower
cdc.add(FCDotDEC2701DashPX0.ESC_DEC0801_E10);
cdc.add(FCDotDEC0801DashE10.E10_UWU0101_S1);
cdc.add(FCDotCMD5401Dash2D.CMD_F4TXT0001_SP);
cdc.add(FCDotCDC1604DashP6.NX02_B);
cdc.add(FCDotCDC1604DashP6.NX03_C);
cdc.add(FCDotCDC1604DashP6.NX04_D);
cdc.add(FCDotCDC1604DashP6.NY16_DOT);
cdc.add(FCDotDEC2701DashPX0.ESC68_DEC0801_E16);
cdc.add(FCDotDEC0801DashE16.ESC68_PIE);
cdc.add(FCDotDEC2701DashPX0.ESC68_2PIE);
cdc.add(FCDotCDC1604DashP6.NX26_Z); // select lower case
cdc.add(FCDotCDC1604DashP6.NX10_J);
cdc.add(FCDotCDC1604DashP6.NX11_K);
@ -66,20 +63,17 @@ public class FourCornerUnicodeDisplayTest {
cdc.add(FCDotCDC1604DashP6.NX15_O);
Assertions.assertEquals("ab BCD.jklmO", FourCornerUnicodeDisplay.text().renderFromX06(cdc));
//Assertions.assertEquals("␃␃␁ZA␃␃␁ZB BCD.␃␃␁ZJKLM␃␃␃O", FourCornerUnicodeDisplay.raw().renderFromX06(cdc));
Assertions.assertEquals("␇␘␆¿¿¿ZA␇␘␆¿¿¿ZB␇␆␆¿¡¿BCD.␇␘␆¿¿¿ZJKLM␘␘␘O", FourCornerUnicodeDisplay.raw().renderFromX06(cdc));
Assertions.assertEquals("␇␇␘ZA␇␇␘ZB␘␆␆ABCD.␇␇␘ZJKLM␘␘␘O", FourCornerUnicodeDisplay.raw().renderFromX06(cdc));
}
@Test
public void testNumberTerminatorOutOfRange() throws Exception {
List<FourCornerX06BaklavaPointSequence> cdc = new ArrayList<>();
cdc.add(FCDotCDC1604DashP6.NX24_X); // = X
cdc.add(FCDotDEC2701DashPX0.ESC68_DEC0801_E16);
cdc.add(FCDotDEC0801DashE16.ESC68_PIE);
cdc.add(FCDotDEC2701DashPX0.ESC68_2PIE);
cdc.add(FCDotCDC1604DashP6.NY10_CARET); // ^
cdc.add(FCDotCDC1604DashP6.NY06_PERCENT); // = %
cdc.add(FCDotDEC2701DashPX0.ESC68_DEC0801_E16);
cdc.add(FCDotDEC0801DashE16.ESC68_PIE);
cdc.add(FCDotDEC2701DashPX0.ESC68_2PIE);
cdc.add(FCDotCDC1604DashP6.NY01_AT);
cdc.add(FCDotCDC1604DashP6.NX11_K); // = K
@ -89,12 +83,10 @@ public class FourCornerUnicodeDisplayTest {
@Test
public void testNumberPieOutOfRange() throws Exception {
List<FourCornerX06BaklavaPointSequence> cdc = new ArrayList<>();
cdc.add(FCDotDEC2701DashPX0.ESC68_DEC0801_E16);
cdc.add(FCDotDEC0801DashE16.ESC68_PIE);
cdc.add(FCDotDEC2701DashPX0.ESC68_2PIE);
cdc.add(FCDotCDC1604DashP6.NX01_A);
cdc.add(FCDotCDC1604DashP6.NX02_B); // B
cdc.add(FCDotDEC2701DashPX0.ESC68_DEC0801_E16);
cdc.add(FCDotDEC0801DashE16.ESC68_PIE);
cdc.add(FCDotDEC2701DashPX0.ESC68_2PIE);
cdc.add(FCDotCDC1604DashP6.NX10_J);
cdc.add(FCDotCDC1604DashP6.NX04_D); // 3
cdc.add(FCDotCDC1604DashP6.NX11_K); // K

View file

@ -33,8 +33,8 @@ import org.x4o.fc18.cake2.FourCornerX18CakePointSequence;
import org.x4o.fc18.cake2.pie9c.FCDotPIE9CDash10;
import org.x4o.fc18.cake2.pie9c.FCDotPIE9CDash26;
import org.x4o.fc18.cake2.zero33.FCDotCDC1604DashP6;
import org.x4o.fc18.cake2.zero33.FCDotDEC0801DashE19;
import org.x4o.fc18.cake2.zero33.FCDotDEC2701DashPX0;
import org.x4o.fc18.cake2.zero33.dec1.FCDotCMD5401Dash2D;
import org.x4o.fc18.cake2.zero33.dec1.FCDotDEC2701DashPX0;
/**
* Tests four corner unicode import.
@ -64,22 +64,18 @@ public class FourCornerUnicodeImportTest {
@Test
public void testAsciiLower() throws Exception {
List<FourCornerX06BaklavaPointSequence> cdc = FourCornerUnicodeImport.strict().convertToX06("foobar");
Iterator<FourCornerX06BaklavaPointSequence> cdi = cdc.iterator();
Assertions.assertNotNull(cdc);
Assertions.assertFalse(cdc.isEmpty());
Assertions.assertEquals(13, cdc.size());
Assertions.assertEquals(FCDotCDC1604DashP6._ESC6_X2, cdc.get(0));
Assertions.assertEquals(FCDotCDC1604DashP6._ESC6_X3, cdc.get(1));
Assertions.assertEquals(FCDotCDC1604DashP6._ESC6_X1, cdc.get(2));
Assertions.assertEquals(FCDotCDC1604DashP6._PEPPER_DOWNUP_QUESTION, cdc.get(3));
Assertions.assertEquals(FCDotCDC1604DashP6._PEPPER_DOWNUP_QUESTION, cdc.get(4));
Assertions.assertEquals(FCDotCDC1604DashP6._PEPPER_DOWNUP_QUESTION, cdc.get(5));
Assertions.assertEquals(FCDotCDC1604DashP6.NX26_Z, cdc.get(6));
Assertions.assertEquals(FCDotCDC1604DashP6.NX06_F, cdc.get(7));
Assertions.assertEquals(FCDotCDC1604DashP6.NX15_O, cdc.get(8));
Assertions.assertEquals(FCDotCDC1604DashP6.NX15_O, cdc.get(9));
Assertions.assertEquals(FCDotCDC1604DashP6.NX02_B, cdc.get(10));
Assertions.assertEquals(FCDotCDC1604DashP6.NX01_A, cdc.get(11));
Assertions.assertEquals(FCDotCDC1604DashP6.NX18_R, cdc.get(12));
Assertions.assertEquals(8, cdc.size());
Assertions.assertEquals(FCDotDEC2701DashPX0.ESC68_2PIE, cdi.next());
Assertions.assertEquals(FCDotCDC1604DashP6.NX26_Z, cdi.next());
Assertions.assertEquals(FCDotCDC1604DashP6.NX06_F, cdi.next());
Assertions.assertEquals(FCDotCDC1604DashP6.NX15_O, cdi.next());
Assertions.assertEquals(FCDotCDC1604DashP6.NX15_O, cdi.next());
Assertions.assertEquals(FCDotCDC1604DashP6.NX02_B, cdi.next());
Assertions.assertEquals(FCDotCDC1604DashP6.NX01_A, cdi.next());
Assertions.assertEquals(FCDotCDC1604DashP6.NX18_R, cdi.next());
String out = FourCornerUnicodeDisplay.text().renderFromX06(cdc);
Assertions.assertEquals("foobar", out);
@ -88,25 +84,21 @@ public class FourCornerUnicodeImportTest {
@Test
public void testAsciiMixedX06() throws Exception {
List<FourCornerX06BaklavaPointSequence> cdc = FourCornerUnicodeImport.strict().convertToX06("fooBAR");
Iterator<FourCornerX06BaklavaPointSequence> cdi = cdc.iterator();
Assertions.assertNotNull(cdc);
Assertions.assertFalse(cdc.isEmpty());
Assertions.assertEquals(16, cdc.size());
Assertions.assertEquals(FCDotCDC1604DashP6._ESC6_X2, cdc.get(0));
Assertions.assertEquals(FCDotCDC1604DashP6._ESC6_X3, cdc.get(1));
Assertions.assertEquals(FCDotCDC1604DashP6._ESC6_X1, cdc.get(2));
Assertions.assertEquals(FCDotCDC1604DashP6._PEPPER_DOWNUP_QUESTION, cdc.get(3));
Assertions.assertEquals(FCDotCDC1604DashP6._PEPPER_DOWNUP_QUESTION, cdc.get(4));
Assertions.assertEquals(FCDotCDC1604DashP6._PEPPER_DOWNUP_QUESTION, cdc.get(5));
Assertions.assertEquals(FCDotCDC1604DashP6.NX26_Z, cdc.get(6));
Assertions.assertEquals(FCDotCDC1604DashP6.NX06_F, cdc.get(7));
Assertions.assertEquals(FCDotCDC1604DashP6.NX15_O, cdc.get(8));
Assertions.assertEquals(FCDotCDC1604DashP6.NX15_O, cdc.get(9));
Assertions.assertEquals(FCDotCDC1604DashP6._ESC6_X3, cdc.get(10));
Assertions.assertEquals(FCDotCDC1604DashP6._ESC6_X3, cdc.get(11));
Assertions.assertEquals(FCDotCDC1604DashP6._ESC6_X3, cdc.get(12));
Assertions.assertEquals(FCDotCDC1604DashP6.NX02_B, cdc.get(13));
Assertions.assertEquals(FCDotCDC1604DashP6.NX01_A, cdc.get(14));
Assertions.assertEquals(FCDotCDC1604DashP6.NX18_R, cdc.get(15));
Assertions.assertEquals(11, cdc.size());
Assertions.assertEquals(FCDotDEC2701DashPX0.ESC68_2PIE, cdi.next());
Assertions.assertEquals(FCDotCDC1604DashP6.NX26_Z, cdi.next());
Assertions.assertEquals(FCDotCDC1604DashP6.NX06_F, cdi.next());
Assertions.assertEquals(FCDotCDC1604DashP6.NX15_O, cdi.next());
Assertions.assertEquals(FCDotCDC1604DashP6.NX15_O, cdi.next());
Assertions.assertEquals(FCDotCDC1604DashP6._ESC6_X3, cdi.next());
Assertions.assertEquals(FCDotCDC1604DashP6._ESC6_X3, cdi.next());
Assertions.assertEquals(FCDotCDC1604DashP6._ESC6_X3, cdi.next());
Assertions.assertEquals(FCDotCDC1604DashP6.NX02_B, cdi.next());
Assertions.assertEquals(FCDotCDC1604DashP6.NX01_A, cdi.next());
Assertions.assertEquals(FCDotCDC1604DashP6.NX18_R, cdi.next());
String out = FourCornerUnicodeDisplay.text().renderFromX06(cdc);
Assertions.assertEquals("fooBAR", out);
@ -115,21 +107,19 @@ public class FourCornerUnicodeImportTest {
@Test
public void testAsciiMixedX08() throws Exception {
List<FourCornerX08MuffinPointSequence> cdc = FourCornerUnicodeImport.strict().convertToX08("fooBAR");
Iterator<FourCornerX08MuffinPointSequence> cdi = cdc.iterator();
Assertions.assertNotNull(cdc);
Assertions.assertFalse(cdc.isEmpty());
Assertions.assertEquals(12, cdc.size());
Assertions.assertEquals(FCDotDEC2701DashPX0.ESC68_DEC0801_E16, cdc.get(0));
Assertions.assertEquals(FCDotCDC1604DashP6._PEPPER_DOWNUP_QUESTION, cdc.get(1));
Assertions.assertEquals(FCDotCDC1604DashP6._PEPPER_DOWNUP_QUESTION, cdc.get(2));
Assertions.assertEquals(FCDotCDC1604DashP6._PEPPER_DOWNUP_QUESTION, cdc.get(3));
Assertions.assertEquals(FCDotCDC1604DashP6.NX26_Z, cdc.get(4));
Assertions.assertEquals(FCDotCDC1604DashP6.NX06_F, cdc.get(5));
Assertions.assertEquals(FCDotCDC1604DashP6.NX15_O, cdc.get(6));
Assertions.assertEquals(FCDotCDC1604DashP6.NX15_O, cdc.get(7));
Assertions.assertEquals(FCDotDEC2701DashPX0.ESC_STOP, cdc.get(8));
Assertions.assertEquals(FCDotCDC1604DashP6.NX02_B, cdc.get(9));
Assertions.assertEquals(FCDotCDC1604DashP6.NX01_A, cdc.get(10));
Assertions.assertEquals(FCDotCDC1604DashP6.NX18_R, cdc.get(11));
Assertions.assertEquals(9, cdc.size());
Assertions.assertEquals(FCDotDEC2701DashPX0.ESC68_2PIE, cdi.next());
Assertions.assertEquals(FCDotCDC1604DashP6.NX26_Z, cdi.next());
Assertions.assertEquals(FCDotCDC1604DashP6.NX06_F, cdi.next());
Assertions.assertEquals(FCDotCDC1604DashP6.NX15_O, cdi.next());
Assertions.assertEquals(FCDotCDC1604DashP6.NX15_O, cdi.next());
Assertions.assertEquals(FCDotDEC2701DashPX0.ESC_STOP, cdi.next());
Assertions.assertEquals(FCDotCDC1604DashP6.NX02_B, cdi.next());
Assertions.assertEquals(FCDotCDC1604DashP6.NX01_A, cdi.next());
Assertions.assertEquals(FCDotCDC1604DashP6.NX18_R, cdi.next());
String out = FourCornerUnicodeDisplay.text().renderFromX08(cdc);
Assertions.assertEquals("fooBAR", out);
@ -180,24 +170,20 @@ public class FourCornerUnicodeImportTest {
@Test
public void testNumberX06() throws Exception {
List<FourCornerX06BaklavaPointSequence> cdc = FourCornerUnicodeImport.strict().convertToX06("01201337");
Iterator<FourCornerX06BaklavaPointSequence> cdi = cdc.iterator();
Assertions.assertNotNull(cdc);
Assertions.assertFalse(cdc.isEmpty());
Assertions.assertEquals(15, cdc.size());
Assertions.assertEquals(FCDotCDC1604DashP6._ESC6_X2, cdc.get(0));
Assertions.assertEquals(FCDotCDC1604DashP6._ESC6_X3, cdc.get(1));
Assertions.assertEquals(FCDotCDC1604DashP6._ESC6_X1, cdc.get(2));
Assertions.assertEquals(FCDotCDC1604DashP6._PEPPER_DOWNUP_QUESTION, cdc.get(3));
Assertions.assertEquals(FCDotCDC1604DashP6._PEPPER_DOWNUP_QUESTION, cdc.get(4));
Assertions.assertEquals(FCDotCDC1604DashP6._PEPPER_DOWNUP_QUESTION, cdc.get(5));
Assertions.assertEquals(FCDotCDC1604DashP6.NX10_J, cdc.get(6));
Assertions.assertEquals(FCDotCDC1604DashP6.NX01_A, cdc.get(7)); // 0
Assertions.assertEquals(FCDotCDC1604DashP6.NX02_B, cdc.get(8)); // 1
Assertions.assertEquals(FCDotCDC1604DashP6.NX03_C, cdc.get(9)); // 2
Assertions.assertEquals(FCDotCDC1604DashP6.NX01_A, cdc.get(10)); // 0
Assertions.assertEquals(FCDotCDC1604DashP6.NX02_B, cdc.get(11)); // 1
Assertions.assertEquals(FCDotCDC1604DashP6.NX04_D, cdc.get(12)); // 3
Assertions.assertEquals(FCDotCDC1604DashP6.NX04_D, cdc.get(13)); // 3
Assertions.assertEquals(FCDotCDC1604DashP6.NX08_H, cdc.get(14)); // 7
Assertions.assertEquals(10, cdc.size());
Assertions.assertEquals(FCDotDEC2701DashPX0.ESC68_2PIE, cdi.next());
Assertions.assertEquals(FCDotCDC1604DashP6.NX10_J, cdi.next());
Assertions.assertEquals(FCDotCDC1604DashP6.NX01_A, cdi.next()); // 0
Assertions.assertEquals(FCDotCDC1604DashP6.NX02_B, cdi.next()); // 1
Assertions.assertEquals(FCDotCDC1604DashP6.NX03_C, cdi.next()); // 2
Assertions.assertEquals(FCDotCDC1604DashP6.NX01_A, cdi.next()); // 0
Assertions.assertEquals(FCDotCDC1604DashP6.NX02_B, cdi.next()); // 1
Assertions.assertEquals(FCDotCDC1604DashP6.NX04_D, cdi.next()); // 3
Assertions.assertEquals(FCDotCDC1604DashP6.NX04_D, cdi.next()); // 3
Assertions.assertEquals(FCDotCDC1604DashP6.NX08_H, cdi.next()); // 7
String out = FourCornerUnicodeDisplay.text().renderFromX06(cdc);
Assertions.assertEquals("01201337", out);
@ -206,22 +192,20 @@ public class FourCornerUnicodeImportTest {
@Test
public void testNumberX08() throws Exception {
List<FourCornerX08MuffinPointSequence> cdc = FourCornerUnicodeImport.strict().convertToX08("01201337");
Iterator<FourCornerX08MuffinPointSequence> cdi = cdc.iterator();
Assertions.assertNotNull(cdc);
Assertions.assertFalse(cdc.isEmpty());
Assertions.assertEquals(13, cdc.size());
Assertions.assertEquals(FCDotDEC2701DashPX0.ESC68_DEC0801_E16, cdc.get(0));
Assertions.assertEquals(FCDotCDC1604DashP6._PEPPER_DOWNUP_QUESTION, cdc.get(1));
Assertions.assertEquals(FCDotCDC1604DashP6._PEPPER_DOWNUP_QUESTION, cdc.get(2));
Assertions.assertEquals(FCDotCDC1604DashP6._PEPPER_DOWNUP_QUESTION, cdc.get(3));
Assertions.assertEquals(FCDotCDC1604DashP6.NX10_J, cdc.get(4));
Assertions.assertEquals(FCDotCDC1604DashP6.NX01_A, cdc.get(5)); // 0
Assertions.assertEquals(FCDotCDC1604DashP6.NX02_B, cdc.get(6)); // 1
Assertions.assertEquals(FCDotCDC1604DashP6.NX03_C, cdc.get(7)); // 2
Assertions.assertEquals(FCDotCDC1604DashP6.NX01_A, cdc.get(8)); // 0
Assertions.assertEquals(FCDotCDC1604DashP6.NX02_B, cdc.get(9)); // 1
Assertions.assertEquals(FCDotCDC1604DashP6.NX04_D, cdc.get(10)); // 3
Assertions.assertEquals(FCDotCDC1604DashP6.NX04_D, cdc.get(11)); // 3
Assertions.assertEquals(FCDotCDC1604DashP6.NX08_H, cdc.get(12)); // 7
Assertions.assertEquals(10, cdc.size());
Assertions.assertEquals(FCDotDEC2701DashPX0.ESC68_2PIE, cdi.next());
Assertions.assertEquals(FCDotCDC1604DashP6.NX10_J, cdi.next());
Assertions.assertEquals(FCDotCDC1604DashP6.NX01_A, cdi.next()); // 0
Assertions.assertEquals(FCDotCDC1604DashP6.NX02_B, cdi.next()); // 1
Assertions.assertEquals(FCDotCDC1604DashP6.NX03_C, cdi.next()); // 2
Assertions.assertEquals(FCDotCDC1604DashP6.NX01_A, cdi.next()); // 0
Assertions.assertEquals(FCDotCDC1604DashP6.NX02_B, cdi.next()); // 1
Assertions.assertEquals(FCDotCDC1604DashP6.NX04_D, cdi.next()); // 3
Assertions.assertEquals(FCDotCDC1604DashP6.NX04_D, cdi.next()); // 3
Assertions.assertEquals(FCDotCDC1604DashP6.NX08_H, cdi.next()); // 7
String out = FourCornerUnicodeDisplay.text().renderFromX08(cdc);
Assertions.assertEquals("01201337", out);
@ -253,29 +237,21 @@ public class FourCornerUnicodeImportTest {
Assertions.assertNotNull(cdc);
Assertions.assertTrue(cdi.hasNext());
Assertions.assertFalse(cdc.isEmpty());
Assertions.assertEquals(22, cdc.size());
Assertions.assertEquals(14, cdc.size());
Assertions.assertEquals(FCDotCDC1604DashP6.NX01_A, cdi.next());
Assertions.assertEquals(FCDotDEC2701DashPX0.ESC68_DEC0801_E19, cdi.next());
Assertions.assertEquals(FCDotDEC0801DashE19.TYPE_WRITER_TTY0001_NL, cdi.next());
Assertions.assertEquals(FCDotCMD5401Dash2D.CMD_F4TTY0001_NL, cdi.next());
Assertions.assertEquals(FCDotCDC1604DashP6.NX02_B, cdi.next());
Assertions.assertEquals(FCDotDEC2701DashPX0.ESC68_DEC0801_E19, cdi.next());
Assertions.assertEquals(FCDotDEC0801DashE19.TYPE_WRITER_TTY0001_NL, cdi.next());
Assertions.assertEquals(FCDotCMD5401Dash2D.CMD_F4TTY0001_NL, cdi.next());
Assertions.assertEquals(FCDotCDC1604DashP6.NX03_C, cdi.next());
Assertions.assertEquals(FCDotDEC2701DashPX0.ESC68_DEC0801_E19, cdi.next());
Assertions.assertEquals(FCDotDEC0801DashE19.TYPE_WRITER_TTY0001_NL, cdi.next());
Assertions.assertEquals(FCDotCMD5401Dash2D.CMD_F4TTY0001_NL, cdi.next());
Assertions.assertEquals(FCDotCDC1604DashP6.NX04_D, cdi.next());
Assertions.assertEquals(FCDotDEC2701DashPX0.ESC68_DEC0801_E19, cdi.next());
Assertions.assertEquals(FCDotDEC0801DashE19.TYPE_WRITER_TTY0001_NL, cdi.next());
Assertions.assertEquals(FCDotCMD5401Dash2D.CMD_F4TTY0001_NL, cdi.next());
Assertions.assertEquals(FCDotCDC1604DashP6.NX05_E, cdi.next());
Assertions.assertEquals(FCDotDEC2701DashPX0.ESC68_DEC0801_E19, cdi.next());
Assertions.assertEquals(FCDotDEC0801DashE19.TYPE_WRITER_TTY0001_NL, cdi.next());
Assertions.assertEquals(FCDotCMD5401Dash2D.CMD_F4TTY0001_NL, cdi.next());
Assertions.assertEquals(FCDotCDC1604DashP6.NX06_F, cdi.next());
Assertions.assertEquals(FCDotDEC2701DashPX0.ESC68_DEC0801_E19, cdi.next());
Assertions.assertEquals(FCDotDEC0801DashE19.TYPE_WRITER_TTY0001_NL, cdi.next());
Assertions.assertEquals(FCDotDEC2701DashPX0.ESC68_DEC0801_E19, cdi.next());
Assertions.assertEquals(FCDotDEC0801DashE19.TYPE_WRITER_TTY0001_NL, cdi.next());
Assertions.assertEquals(FCDotDEC2701DashPX0.ESC68_DEC0801_E19, cdi.next());
Assertions.assertEquals(FCDotDEC0801DashE19.TYPE_WRITER_TTY0001_NL, cdi.next());
Assertions.assertEquals(FCDotCMD5401Dash2D.CMD_F4TTY0001_NL, cdi.next());
Assertions.assertEquals(FCDotCMD5401Dash2D.CMD_F4TTY0001_NL, cdi.next());
Assertions.assertEquals(FCDotCMD5401Dash2D.CMD_F4TTY0001_NL, cdi.next());
String out = FourCornerUnicodeDisplay.text().renderFromX06(cdc);
Assertions.assertEquals("A\nB\nC\nD\nE\nF\n\n\n", out);

View file

@ -29,7 +29,7 @@ import java.util.List;
import org.x4o.fc18.FourCornerUnicodeDisplay;
import org.x4o.fc18.cake2.FourCornerDotCake;
import org.x4o.fc18.cake2.zero33.FCDotCDC1604DashP6;
import org.x4o.fc18.cake2.zero33.FCDotDEC2701DashPX0;
import org.x4o.fc18.cake2.zero33.dec1.FCDotDEC2701DashPX0;
import org.x4o.o2o.io.ContentWriterHtml.Tag;
import org.x4o.o2o.io.sax3.ContentCloseable;
import org.x4o.o2o.tdoc.ApiDocContentCss;

View file

@ -26,6 +26,7 @@ import java.util.List;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.x4o.fc18.cake2.zero33.dec1.FCDotDEC2701DashPX0;
/**
* Tests DEC encoding.

View file

@ -30,8 +30,8 @@ import org.junit.jupiter.api.Test;
import org.x4o.fc18.FourCornerUnicodeDisplay;
import org.x4o.fc18.FourCornerUnicodeMapper;
import org.x4o.fc18.cake2.FourCornerX06BaklavaPointSequence;
import org.x4o.fc18.cake2.zero33.vt06.VTDash06DotZeroACursor;
import org.x4o.fc18.cake2.zero33.vt06.VTDash06DotZeroCClear;
import org.x4o.fc18.cake2.zero33.dec1.vt06.VTDash06DotZeroACursor;
import org.x4o.fc18.cake2.zero33.dec1.vt06.VTDash06DotZeroCClear;
/**
* Tests VT-06 encoding.
@ -45,12 +45,12 @@ public class FCDotVT06Test {
public void testCusorGoto() throws Exception {
List<FourCornerX06BaklavaPointSequence> cdc = new ArrayList<>();
cdc.add(VTDash06DotZeroACursor.NX_CURSOR_GOTO);
cdc.addAll(FourCornerUnicodeMapper.DICTIONARY.toDecimalsX06(123));
cdc.addAll(FourCornerUnicodeMapper.DICTIONARY.toDecimalsX06(123)); // TODO: fix these are the wrong, we need to use the txt grams version
cdc.add(FCDotCDC1604DashP6._RAKA_QUESTION);
cdc.addAll(FourCornerUnicodeMapper.DICTIONARY.toDecimalsX06(456));
cdc.add(FCDotCDC1604DashP6._SALAH_EXCLAMATION);
Assertions.assertEquals("␘␘␇AG␇␆¿¿¿JBCD?␇␘␆¿¿¿JEFG!", FourCornerUnicodeDisplay.raw().renderFromX06(cdc));
Assertions.assertEquals("␘␘␇AG␇␘JBCD?␇␘JEFG!", FourCornerUnicodeDisplay.raw().renderFromX06(cdc));
// TODO: Fix lexer embedded escapes, and display external with single unicode escape sign
//Assertions.assertEquals("?AG?BCD?EFG!", FourCornerUnicodeDisplay.text().renderFromX06(cdc));
}
@ -62,6 +62,6 @@ public class FCDotVT06Test {
cdc.addAll(FourCornerUnicodeMapper.DICTIONARY.toDecimalsX06(5));
cdc.add(FCDotCDC1604DashP6._SALAH_EXCLAMATION);
Assertions.assertEquals("␘␘␇CA␇␆¿¿¿JF!", FourCornerUnicodeDisplay.raw().renderFromX06(cdc));
Assertions.assertEquals("␘␘␇CA␇␘JF!", FourCornerUnicodeDisplay.raw().renderFromX06(cdc));
}
}

View file

@ -31,7 +31,7 @@ import org.x4o.fc18.FourCornerUnicodeDisplay;
import org.x4o.fc18.cake2.FourCornerDotCake;
import org.x4o.fc18.cake2.FourCornerX06BaklavaPointSequence;
import org.x4o.fc18.cake2.zero33.FCDotCDC1604DashP6;
import org.x4o.fc18.cake2.zero33.FCDotDEC2701DashPX0;
import org.x4o.fc18.cake2.zero33.dec1.FCDotDEC2701DashPX0;
/**
* Tests four corner lexer parts.