FC18: maisdoc fixed nav link reset bug in pages and sub concepts

This commit is contained in:
Willem Cazander 2025-10-22 19:30:06 +02:00
parent 0e16c50571
commit 663b927bdb
7 changed files with 77 additions and 36 deletions

View file

@ -157,7 +157,7 @@ public class FCDocWriter {
doc.setDescription("FourCorner 18 bit text encoding format.");
doc.setDocAbout("FourCorner Indexes\nThe World Of Words™");
doc.createDocCopyright("𑀳𑁂𑀮𑀺𑀉𑁄𑀤𑁄𑀭𑁂𑀡𑀪𑀸𑀕", "תשפ״ה"); // use hebrew quotation mark, the interweb uses latin which break unicode rendering
doc.setDocPageSubTitle("FC18-Alpha1");
doc.setDocPageSubTitle("FC18-Alpha2");
doc.addMetaKeywordAll(List.of("FC18", "documentation", "four-corner", "china", "MSX4"));
doc.setNoFrameAllName("All cake slices");
doc.setFrameNavOverviewPrintParent(true);
@ -252,7 +252,7 @@ public class FCDocWriter {
}
private MaisDocNode createNodeKanjiDict(String version) {
return new MaisDocNode(kanjiDict, "jis_x_0" + version, "JIS X 0" + version, "Kanji JIS X 0" + version);
return new MaisDocNode(kanjiDict, "jis_x_0" + version, "JIS X 0" + version, "Reference Kanji JIS X 0" + version);
}
private MaisDocNode createNodeKanjiDictLiteral(KanjiDictLiteral literal, String kuTen) {

View file

@ -23,13 +23,15 @@
package love.distributedrebirth.nx01.mushroom.mais.fc18.print;
import java.io.IOException;
import java.math.BigInteger;
import java.util.ArrayList;
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.dec1.FCDotDEC2701DashPX0;
import org.x4o.fc18.zion7.FourCornerZion7Candlelier;
import org.x4o.fc18.zion7.FourCornerZionStenoGrapher;
import org.x4o.fc18.zion7.flame4.FCFlameNumberTaste;
import org.x4o.maisdoc.flake.MaisDocContentCss;
import org.x4o.maisdoc.flake.MaisDocContentWriter;
import org.x4o.maisdoc.model.MaisDocPage;
@ -47,7 +49,7 @@ import org.x4o.sax3.io.ContentCloseable;
public class FCDocPageWriterNCR implements MaisDocPageWriter, FCDocSegmentWriter {
public static MaisDocPage createDocPage() {
return new MaisDocPage("overview-ncr","NCR","Overview of all (6 bit) NCR1632 fractions.",new FCDocPageWriterNCR());
return new MaisDocPage("overview-ncr","NCR","Overview of some New Counting Rods numbers.",new FCDocPageWriterNCR());
}
// TODO: write adult NCR too here
@ -56,7 +58,7 @@ public class FCDocPageWriterNCR implements MaisDocPageWriter, FCDocSegmentWriter
public void writePageContent(MaisDocWriteEvent<MaisDocPage> e) throws IOException {
MaisDocContentWriter writer = e.getWriter();
try (ContentCloseable content = writer.docPageContent()) {
try (ContentCloseable table = writer.docTable(FourCornerDotCake.FC_RATIONAL2304_BANK.nameSpec().replaceAll("BANK", "baklava"), null, MaisDocContentCss.overviewSummary)) {
try (ContentCloseable table = writer.docTable(FourCornerDotCake.FC_RATIONAL2304_BANK.nameSpec().replaceAll("BANK", "number"), null, MaisDocContentCss.overviewSummary)) {
writeTableBoxHeaderNumeric(writer, 28);
writePIN(writer);
}
@ -81,9 +83,11 @@ public class FCDocPageWriterNCR implements MaisDocPageWriter, FCDocSegmentWriter
continue;
}
List<Integer> piNum = new ArrayList<>();
//piNum.addAll(FCDotDEC2701DashPX0.ESC68_NCR.baklavaPointSequence()); // TODO: use write for 18 bit NCR
piNum.add(FCDotCDC1604DashP6.NX01_A.ordinal() + t);
piNum.add(FCDotCDC1604DashP6.NX01_A.ordinal() + i);
FourCornerZion7Candlelier steno = FourCornerZionStenoGrapher.writerFC18(piNum);
FCFlameNumberTaste taste = FCFlameNumberTaste.NUMBER_POSITIVE;
BigInteger numerator = BigInteger.valueOf(1 + t);
BigInteger denominator = BigInteger.valueOf(1 + i);
steno.strobeNumberChocoPigRational(taste, taste, numerator, denominator);
String char18Str = FourCornerUnicodeDisplay.text().render(piNum);
StringBuilder buf = new StringBuilder();
for (int c : char18Str.codePoints().toArray()) {

View file

@ -50,31 +50,44 @@ import love.distributedrebirth.nx01.mushroom.mais.fc18.TDocCakeSlice;
*/
public class FCDocSegmentWriterCake implements FCDocSegmentWriter {
private static final String[] FC_FEATURES = new String[] {
private static final String[] FC6_FEATURES = new String[] {
"True pure six bit enterprice mainframe numeric letter system",
"Super pattern graphic renderable with optional kerning",
"Real UPPERCASE only character set",
"Zero nummeric letters",
"Supports HolyC sand worms in your text for undefined octal data",
"Render structural space with a percentage pastor",
"Group nun lines up to 8 repeating structures",
"Inline base2 lego: 16,32,64,128,256,512,1024,2048 bit blocks",
"Inline base2 signed: 16,32,64,128,256,512,1024,2048 integer",
"Inline base8 lego: 18,36,72,144,288,576,1152,2304 bit blocks",
"Inline base8 choco: 18,36,72,144,288,576,1152,2304 tasteful number",
"Defined external escape sequence model",
"(TODO) VT-06 terminal control for CDC1604(1960) 6 bit main frames",
};
private static final String[] FC6P_FEATURES = new String[] {
"(TODO) Adds unified russian/greek and brascii candy letters",
"Block your display candy for text user interfaces",
"Has underscored letters to migrate EBCDIC(1963) APL code from z/OS",
};
private static final String[] FC18_FEATURES = new String[] {
"Text format design to write computer code and abstract file/resource names",
"Code from chinees child can be extended by indian child or spanish child in local local",
//"VT-06 terminal control for CDC1604(1960) 6 bit main frames",
"Has underscored letters to migrate EBCDIC(1963) APL code from z/OS",
"Program with (local) words not with lettersssss",
"New Counting Rods, 1152 bit fractions with two 576 bit numbers",
"Use datagrams for decimals/octals/hex/bits to render in monkey language",
"Supports HolyC sand worms in your text for undefined octal data",
"Embed 21 bit unicode for 6/8 and 18 bit computers",
"The lower 6/8 bit part is pattern graphic renderable with optional kerning",
"Contains the BIP0039(2013) keyword encoding too",
"Render on 6 bit(baklave point) or 8(muffin point) bit as KANJI + BraSCII + PIE",
"Inline number grams for decimals/octals/hex/bits to render in monkey language",
"Inline choco pig rational 2304 bit number",
"Inline choco pig decicmal 2304 bit number",
"Inline choco pig float 2304 bit number",
"Inline choco pig chopped 2304 bit number",
"(TODO) Render on 6 bit(baklave point) as KANJI + BraSCII + PIE(-rom)",
"Render with 21 bit unicode(code point) + fonts drawings",
"Render on 18 bit(cake point) with 72 bit unicode4D drawings"
"(TODO) Render on 18 bit(cake point) with 72 bit unicode4D drawings"
};
private static final String[] FC_TODO = new String[] {
"DOC: Add all needed info into word/pie/pages doc",
"Write rules; no candy(0x3F3--) for grown up computer languages",
"Finish ESC sequences",
"Add doctype for 6,8,18 AND allow candy AND XDBX/etc",
"Add binary XML support, maybe also doc tags and MD structure",
"Move APL candy to PIE towers",
"Replace APL with BraSCII 0xC0++ candies",
"Fillup PIE math symbol candy towers",
"Fillup languages in CLK9P word cake (in all human languages)",
"Request new 'Japanese Industrial Standard X 0214', Add full CJK,BraSCII++,PIE",
@ -100,10 +113,30 @@ public class FCDocSegmentWriterCake implements FCDocSegmentWriter {
@MaisDocNodeWriterMethod(nodeBody = MaisDocNodeBody.DESCRIPTION_NODE, targetClasses = {TDocCake.class}, nodeBodyOrders = 20)
public void writeFeatureListing(MaisDocWriteEvent<MaisDocNode> event) throws IOException {
MaisDocContentWriter writer = event.getWriter();
writer.printCharacters("Features;");
writer.printCharacters("FC6;");
try (ContentCloseable content = writer.docPageContent()) {
try (ContentCloseable ul = writer.printTag(Tag.ul)) {
for (String feature : FC_FEATURES) {
for (String feature : FC6_FEATURES) {
try (ContentCloseable li = writer.printTag(Tag.li, "", null, "circle")) {
writer.printCharacters(feature);
}
}
}
}
writer.printCharacters("FC6_PLUS;");
try (ContentCloseable content = writer.docPageContent()) {
try (ContentCloseable ul = writer.printTag(Tag.ul)) {
for (String feature : FC6P_FEATURES) {
try (ContentCloseable li = writer.printTag(Tag.li, "", null, "circle")) {
writer.printCharacters(feature);
}
}
}
}
writer.printCharacters("FC18;");
try (ContentCloseable content = writer.docPageContent()) {
try (ContentCloseable ul = writer.printTag(Tag.ul)) {
for (String feature : FC18_FEATURES) {
try (ContentCloseable li = writer.printTag(Tag.li, "", null, "circle")) {
writer.printCharacters(feature);
}
@ -115,7 +148,7 @@ public class FCDocSegmentWriterCake implements FCDocSegmentWriter {
@MaisDocNodeWriterMethod(nodeBody = MaisDocNodeBody.DESCRIPTION_NODE, targetClasses = {TDocCake.class}, nodeBodyOrders = 1)
public void writeIntro(MaisDocWriteEvent<MaisDocNode> event) throws IOException {
MaisDocContentWriter writer = event.getWriter();
writer.printCharacters("Four corner is 18 bit text encoding for 144 bit computers.");
writer.printCharacters("Four corner is 18 bit text encoding for 6 bit and 144 bit computers.");
}
@MaisDocNodeWriterMethod(nodeBody = MaisDocNodeBody.DESCRIPTION_NODE, targetClasses = {TDocCake.class}, nodeBodyOrders = 100)

View file

@ -48,7 +48,7 @@ public interface FourCornerZion7Candlelier extends FourCornerZion7Bereshit {
/// An choco pig floating point number. (4+1+283+2016)
void strobeNumberChocoPigFloat(FCFlameNumberTaste taste, boolean bias, BigInteger exponent, BigInteger mantissa);
/// An choped pig point number. (4+1148+1152)
/// An chopped pig point number. (4+1148+1152)
void strobeNumberChocoPigChoped(FCFlameNumberTaste taste, BigInteger quake, BigInteger fraction);
// XDBX18: doom.wad uses (ARM) Q16.16 which is equal to the real (Texas) Q15.16 (because doom map like E2M3 = 6 bit float)

View file

@ -52,7 +52,7 @@ import org.x4o.fc18.zion7.flame4.FCFlameNumberSparklerSmoke;
///
/// @author Willem Cazander
/// @version 1.0 Jan 09, 2025
public class FourCornerZionStenoLexer implements FourCornerZionStenoPetroglyphs {
public class FourCornerZionStenoLexer {
private final static FourCornerZionStenoLexerFire CLEAN_FIRE = new FourCornerZionStenoLexerFire.Adapter() {};
private final static FourCornerZionStenoLexerSmoke CLEAN_SMOKE = new FourCornerZionStenoLexerSmoke.Adapter() {};
@ -64,7 +64,7 @@ public class FourCornerZionStenoLexer implements FourCornerZionStenoPetroglyphs
private final boolean handlerEscape;
private final FourCornerZion7Candlelier handler;
private final FourCornerZion7TempleScrolls handlerTempleScrolls;
private final int numberBank[] = new int[NCR_BANK_SIZE];
private final int numberBank[] = new int[FourCornerZionStenoPetroglyphs.NCR_BANK_SIZE];
private List<Integer> input;
private int inputIndex = 0;
private int currLine = 0;
@ -249,8 +249,8 @@ public class FourCornerZionStenoLexer implements FourCornerZionStenoPetroglyphs
}
private void numberBankReset() {
for (int i = NCR_BANK_SIZE - NCR_ONE; i >= NCR_ZERO; i--) {
numberBank[i] = NCR_ZERO;
for (int i = FourCornerZionStenoPetroglyphs.NCR_BANK_SIZE - FourCornerZionStenoPetroglyphs.NCR_ONE; i >= FourCornerZionStenoPetroglyphs.NCR_ZERO; i--) {
numberBank[i] = FourCornerZionStenoPetroglyphs.NCR_ZERO;
}
}
@ -268,7 +268,7 @@ public class FourCornerZionStenoLexer implements FourCornerZionStenoPetroglyphs
private BigInteger numberBankReadBigPaged(int bankBits, int bankPageBegin) {
BigInteger result = BigInteger.ZERO;
for (int i = bankPageBegin; i >= NCR_ZERO; i--) {
for (int i = bankPageBegin; i >= FourCornerZionStenoPetroglyphs.NCR_ZERO; i--) {
int bankValue = numberBank[i];
result = result.add(BigInteger.valueOf(bankValue).shiftLeft(i * bankBits));
}
@ -276,15 +276,15 @@ public class FourCornerZionStenoLexer implements FourCornerZionStenoPetroglyphs
}
private BigInteger numberBankReadBig8(int bankPageBegin) {
return numberBankReadBigPaged(NCR_BANK8_BITS, bankPageBegin);
return numberBankReadBigPaged(FourCornerZionStenoPetroglyphs.NCR_BANK8_BITS, bankPageBegin);
}
private BigInteger numberBankReadBig9(int bankPageBegin) {
return numberBankReadBigPaged(NCR_BANK9_BITS, bankPageBegin);
return numberBankReadBigPaged(FourCornerZionStenoPetroglyphs.NCR_BANK9_BITS, bankPageBegin);
}
private BigInteger numberBankReadBig12(int bankPageBegin) {
return numberBankReadBigPaged(NCR_BANK12_BITS, bankPageBegin);
return numberBankReadBigPaged(FourCornerZionStenoPetroglyphs.NCR_BANK12_BITS, bankPageBegin);
}
abstract static private class StenoScanner implements FourCornerZionStenoPetroglyphs {

View file

@ -214,6 +214,8 @@ public class MaisDoc {
public MaisDocConcept findConceptChildByNode(MaisDocNode node) {
Class<?> objClass = node.getUserData().getClass();
return findConceptByClass(objClass);
/*
Class<?> parentClass = null;
if (node.getParent()!=null) {
parentClass = node.getParent().getUserData().getClass();
@ -229,6 +231,7 @@ public class MaisDoc {
}
}
return null;
*/
}
public List<MaisDocRemoteClass> getRemoteClasses() {

View file

@ -44,6 +44,7 @@ public class MaisDocNavLink {
setHref(href);
setTitle(title);
setText(text);
setResetHref(resetHref);
}
/**