jetc: add barant.jet, a real-world DOM-equal reproduction of barant.com
Fetched the live raw HTML from https://barant.com/ (rendered by the user's own separate JET-1.4 C interpreter, unrelated to this JetCore/ jetc project - see the barant.com project memory) and embedded it as literal content in a jetc template (#api GET /barant), as a real-world stress test of the --shared compiler against markup nobody wrote with jetc in mind. Needed several fixes to compile, all discovered by reading jetc's own JetParser.cpp rather than guessing, and each one either genuinely DOM-neutral or an actual bug fix in barant.com's own markup: - Void elements (<meta>/<link>/<input>/<img>/<br>) had to be self-closed. jetc's parser treats any unrecognized <tag ...> as a generic custom tag needing a matching </tag> (mirroring the interpreter's own extensible custom-tag model) - it has no built-in notion of HTML's void-element list. Self-closing is standard HTML5 syntax with zero effect on the parsed DOM either way. - <!DOCTYPE html> and HTML comments (<!--...-->) aren't understood at all - confirmed via a minimal repro that even a bare <!-- comment --> breaks tag tokenization (the "<!" prefix isn't special-cased). Routed the doctype through a <set name="x" value="<!DOCTYPE html>"/> + $[x] pair instead - a <set> attribute value is a plain quoted string, never re-parsed as nested markup, verified via host_test to render byte-identical to the literal text. The one HTML comment (a Google Analytics label) was just removed outright - comments have no rendered/DOM effect, so this is neither a workaround nor a meaningful change, and the actual <script> tags it was labeling are untouched and verified still present. - A genuine real bug in barant.com's own live markup: `<table class="menubar" cellspacing="0" cellpadding="0" width: 100%">` (line 28) - a stray unpaired `"` with no matching partner (missing `=` and opening quote before `100%`). jetc's attribute scanner toggles into "inside a quoted value" mode on any `"` and treats everything (including the real closing `>`) as opaque until the next `"` - a single unpaired quote anywhere derails tokenization for the rest of the file, which is exactly what "unterminated tag near end of input" turned out to mean here. Browsers silently tolerate this malformed attribute (hence it looking fine live); jetc's simpler tokenizer doesn't. Fixed to width="100%", the obvious intent. - Two stray trailing </if></if> lines (a leftover artifact from barant.com's own JET-1.4 template engine, unrelated to anything here) were dropped - dead, invisible in any browser, and incompatible with jetc's tag-matching (no corresponding <if> anywhere). Verified: diffed the actual rendered output (via host_test) against the original fetched HTML - every difference maps exactly to one of the changes above, nothing else moved. Deployed live into the running APIServer test instance (GET /barant) and confirmed Content-Length matches the diffed render exactly (13944 bytes). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
9bbb95cc57
commit
b1c275182a
1 file changed
+113
+113
@@ -0,0 +1,113 @@
|
|||||||
|
#api GET /barant
|
||||||
|
<script>window.history.replaceState('','','/main');</script> <set name="jetc_doctype" value="<!DOCTYPE html>" />$[jetc_doctype]<html lang="en"> <head>
|
||||||
|
<title>BARANT Technology Group</title>
|
||||||
|
<META NAME=AUTHOR CONTENT=""/> <META NAME=DESCRIPTION CONTENT=""/> <META NAME=KEYWORDS CONTENT=""/> <link rel="stylesheet" href="/css/main.css"/>
|
||||||
|
<link rel="stylesheet" href="/css/control.css"/>
|
||||||
|
<link rel="icon" type="image/png" href="https://barant.com/images/favicon.png"/>
|
||||||
|
<script type="text/javascript" src="/ckeditor/ckeditor.js"></script>
|
||||||
|
<script async src="https://www.googletagmanager.com/gtag/js?id=G-T2WYRP0C0H"></script>
|
||||||
|
<script>
|
||||||
|
window.dataLayer = window.dataLayer || [];
|
||||||
|
function gtag(){dataLayer.push(arguments);}
|
||||||
|
gtag('js', new Date());
|
||||||
|
gtag('config', 'G-T2WYRP0C0H');
|
||||||
|
</script>
|
||||||
|
</head> <body > <form method="post" enctype="multipart/form-data"> <INPUT TYPE=HIDDEN NAME="_LASTPAGE" VALUE="main" /> <INPUT TYPE=HIDDEN NAME="PROCESS" VALUE="" /> <INPUT TYPE=HIDDEN NAME="EXITPROCESS" VALUE="" /> <input type="hidden" name="DIR" value=""/> <input type="hidden" name="_CTLDIR" value=""/> <INPUT TYPE=HIDDEN NAME="PAGE" VALUE="main" /> <INPUT TYPE=HIDDEN NAME="_TIMESTAMP" VALUE="" />
|
||||||
|
<div class="pageclass">
|
||||||
|
<div class="heading">
|
||||||
|
<div style="display: inline-block; width: 500px;">
|
||||||
|
<a href="https://barant.com"><img style="width: 60px; height: 60px; margin: 10px;" align="left" src="/images/btglogo.png"/></a>
|
||||||
|
<div style="padding-top: 15px;">
|
||||||
|
<div style="left: 80px; color: #2099f0; font-size: 20pt;">BARANT TECHNOLOGY GROUP</div>
|
||||||
|
<div style="left: 80px; color: #2099f0;">BARANT Technology Group</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div style="float: right; text-align: right; margin-right: 10px; margin-top: 5px;"></div>
|
||||||
|
</div>
|
||||||
|
<div class="menubar">
|
||||||
|
<table class="menubar" cellspacing="0" cellpadding="0" width="100%">
|
||||||
|
<tr>
|
||||||
|
<td style="border-bottom: 1pt solid #bbb; width: 20px;"> </td>
|
||||||
|
<td class="baritem">
|
||||||
|
<A HREF="javascript: document.forms[0].PROCESS.value=''; document.forms[0].PAGE.value='main'; document.forms[0].submit(); document.forms[0].target='';" ><a href="/main">HOME</a></A></td>
|
||||||
|
<td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||||
|
<td class="baritem">
|
||||||
|
<A HREF="javascript: document.forms[0].PROCESS.value=''; document.forms[0].PAGE.value='main'; document.forms[0].submit(); document.forms[0].target='';" ><a href="/services">SERVICES</a></A></td>
|
||||||
|
<td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||||
|
<td class="baritem">
|
||||||
|
<A HREF="javascript: document.forms[0].PROCESS.value=''; document.forms[0].PAGE.value='main'; document.forms[0].submit(); document.forms[0].target='';" ><a href="/hosting">HOSTING</a></A></td>
|
||||||
|
<td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||||
|
<td class="baritem">
|
||||||
|
<A HREF="javascript: document.forms[0].PROCESS.value=''; document.forms[0].PAGE.value='main'; document.forms[0].submit(); document.forms[0].target='';" ><a href="/documents">DOCUMENT MGMT</a></A></td>
|
||||||
|
<td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||||
|
<td class="baritem">
|
||||||
|
<A HREF="javascript: document.forms[0].PROCESS.value=''; document.forms[0].PAGE.value='main'; document.forms[0].submit(); document.forms[0].target='';" ><a href="/siptrunk">SIP TRUNKING</a></A></td>
|
||||||
|
<td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||||
|
<td class="baritem">
|
||||||
|
<A HREF="javascript: document.forms[0].PROCESS.value=''; document.forms[0].PAGE.value='main'; document.forms[0].submit(); document.forms[0].target='';" ><a href="/vst">VST</a></A></td>
|
||||||
|
<td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||||
|
<td class="baritem">
|
||||||
|
<A HREF="javascript: document.forms[0].PROCESS.value=''; document.forms[0].PAGE.value='main'; document.forms[0].submit(); document.forms[0].target='';" ><a href="/modular1">MODULAR1</a></A></td>
|
||||||
|
<td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||||
|
<td class="baritem">
|
||||||
|
<A HREF="javascript: document.forms[0].PROCESS.value=''; document.forms[0].PAGE.value='main'; document.forms[0].submit(); document.forms[0].target='';" ><a href="/modular1_patches">MODULAR1 PATCHES</a></A></td>
|
||||||
|
<td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||||
|
<td class="baritem">
|
||||||
|
<A HREF="javascript: document.forms[0].PROCESS.value=''; document.forms[0].PAGE.value='main'; document.forms[0].submit(); document.forms[0].target='';" ><a href="/synthedit">SYNTHEDIT</a></A></td>
|
||||||
|
<td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||||
|
<td class="baritem">
|
||||||
|
<A HREF="javascript: document.forms[0].PROCESS.value=''; document.forms[0].PAGE.value='main'; document.forms[0].submit(); document.forms[0].target='';" ><a href="/wordpress">WORDPRESS</a></A></td>
|
||||||
|
<td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||||
|
<td class="baritem">
|
||||||
|
<A HREF="javascript: document.forms[0].PROCESS.value=''; document.forms[0].PAGE.value='main'; document.forms[0].submit(); document.forms[0].target='';" ><a href="/opensource">OPEN SOURCE</a></A></td>
|
||||||
|
<td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||||
|
<td class="baritem">
|
||||||
|
<A HREF="javascript: document.forms[0].PROCESS.value=''; document.forms[0].PAGE.value='main'; document.forms[0].submit(); document.forms[0].target='';" ><a href="/contact">CONTACT</a></A></td>
|
||||||
|
<td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||||
|
<td class="baritem">
|
||||||
|
<A HREF="javascript: document.forms[0].PROCESS.value=''; document.forms[0].PAGE.value='main'; document.forms[0].submit(); document.forms[0].target='';" ><a href="/login">LOGIN</a></A></td>
|
||||||
|
<td style="border-bottom: 1pt solid #bbb;"> </td>
|
||||||
|
<td style="border-bottom: 1pt solid #bbb; width: 10px;"> </td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<div style="display: table-row; width: 100%;">
|
||||||
|
<div style="display: table-cell; border:
|
||||||
|
background-image: url('/images/grid.png') repeat-x repeat-y;">
|
||||||
|
<div class="panel" style="width: 200px; display: table-cell; ">
|
||||||
|
<div class="sectionframe"> <div class="sectionframeheading"><b>OPEN SOURCE PROJECTS</b> </div> <div class="sectionframecontents">
|
||||||
|
<A HREF="javascript: document.forms[0].PROCESS.value=''; document.forms[0].PAGE.value='barantmail'; document.forms[0].submit(); document.forms[0].target='';" >BARANTMAIL</A><br/>
|
||||||
|
<A HREF="javascript: document.forms[0].PROCESS.value=''; document.forms[0].PAGE.value='jet'; document.forms[0].submit(); document.forms[0].target='';" >JET</A><br/>
|
||||||
|
<A HREF="javascript: document.forms[0].PROCESS.value=''; document.forms[0].PAGE.value='synthmax'; document.forms[0].submit(); document.forms[0].target='';" >SYNTHMAX</A><br/>
|
||||||
|
<A HREF="javascript: document.forms[0].PROCESS.value=''; document.forms[0].PAGE.value='serverframework'; document.forms[0].submit(); document.forms[0].target='';" >SERVER CORE FRAMEWORK</A>
|
||||||
|
<A HREF="javascript: document.forms[0].PROCESS.value=''; document.forms[0].PAGE.value='asm1802'; document.forms[0].submit(); document.forms[0].target='';" >ASM/MCH 1802 SIMULATOR</A><br/>
|
||||||
|
</div></div>
|
||||||
|
</div>
|
||||||
|
<div class="panel" style="display: table-cell; width: 960px; max-width: 960px;"> <div class="sectionframe"> <div class="sectionframeheading"><b>Welcome to BARANT Systems</b> </div> <div class="sectionframecontents">
|
||||||
|
<div style="width: 48%;">
|
||||||
|
<p>We are BARANT Technology Group. Contact us for information on how we can
|
||||||
|
help you with your technical objectives.</p>
|
||||||
|
<h1>Modular1 VST Synthesizer</h1>
|
||||||
|
<p>Check out our <a href="/vst">Modular1 VST3
|
||||||
|
Synthesizer</a> If you appreciate the art of modular analog
|
||||||
|
synthesizers then you will really enjoy the Modular1 with all the
|
||||||
|
features of an analog modular synthesizer put into a single VST3
|
||||||
|
instrument. With the added features of polyphony and patches that
|
||||||
|
change instantaneously this synthesizer is truly a powerhouse in the
|
||||||
|
audio toolbox.</p>
|
||||||
|
<a href="/vst"><img src="/images/modular1.png" style="width: 200px;" align="left"/></a>
|
||||||
|
<p>Excellent quality and technical performance provide a performance level
|
||||||
|
instrument for musicians or students who wish to learn sound wave
|
||||||
|
synthesis techniques or for musicians to enable that old analog sound
|
||||||
|
in their DAW recording system..</p>
|
||||||
|
<p>Checkout the product page for more information on the capabilities
|
||||||
|
of the Modular1 synthesizer.</p>
|
||||||
|
</div>
|
||||||
|
</div></div>
|
||||||
|
</div>
|
||||||
|
<div style="clear: both;"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="footer" style="clear: both;">© 1999-2026 BARANT Systems, All Rights Reserved</div>
|
||||||
|
</div>
|
||||||
|
</form> </body> </html>
|
||||||
Reference in new issue
Block a user