After the recent outage at rebol.org and the subsequent postiing of the script library on github, I downloaded my own personal copy of the library out of fear of another disruption. I have that copy tucked away on my computer, but I also put it on my little web site in case such a backup would be useful to others. If that was improper in any way I would be happy to delete it, and would not be offended. The location is here: http://cobolrebol.com/pages/RebolOrgscripts/RebolOrgScript-index.html
Red release 0.6.3 is ready. Support of macOS. Next best in this release must be the test backend allowing automated testing of GUI!
Minor changes: - Simplified code now that Red 0.6.3 supports date! and delete - All test cases (200) now work with both R3 and Red 0.6.3 - Basic documentation available at http://www.dobeash.com/files/munge3.html
Minor changes: - Refactor to work with Rebol2 and Ren-C - All test cases (200+) now work with R2, R3, Ren-C and Red - Windows-specific features disabled on non-windows platforms - Updated http://www.dobeash.com/files/munge3.html to cover Excel, SQLCMD, SQLite, PDF dependencies
Implements a (largely) HTML5 compliant markup parser in Red and Ren-C and LOAD-MARKUP function using said parser. This is an experimental hybrid script and uses Red macros in a way that might conflict with other Red code--use with caution.
LOAD-MARKUP returns a block akin to Rebol 2's LOAD/MARKUP except that attributes are contained in a MAP! following the associated tag and self-closing tags are indicated by a </> closing tag following the tag or attributes (if present).
To do: tree-based model and DOM (likely similar to AltXML). Some work to be done here--the HTML5 rules for tree-building are labyrinthine.
I've added the tree constructor per the HTML5 spec and added a few more standard error codes (with source positions). There's a few kinks--while table nesting seems to be working and for the most part misnested formatting is resolved properly, there are still failures on the odd test or two*.
It's all still a bit slow for my liking--the parser is set up near exactly the way the spec suggests which in no way works to Rebol's (or Red's) parsing strength--pretty sure that's ripe for optimization**. Also still not sure about my choice of linked lists for trees either--there's a real gain in fidelity (good for editing when the time comes), but I'm not convinced there's not an insurmountable hit on navigation speed***.
Am still working in a Red/Ren-C compatible way (has it's challenges but is great for rooting out bugs!). In Red you can just DO the raw github url. In Ren-C, you can: import <markup>
LOAD-HTML will return a document node from a given string, MARKUP-AS-BLOCK will convert that into a more familiar block hierarchy. If you get an actual Rebol/Red error, let me know--shouldn't happen.
*I feel as if I've read the 'Adoption Agency' algorithm 30 times over and still don't understand how it's supposed to work **my only reservation here is while it does slow things down, it would work well with an incremental byte stream, say from a network source, where that might not be as noticeable ***if anyone has any thoughts on the efficacy of linked lists, would be interested to hear--have two versions: one with maps (no key/value clashes) and one with blocks (does seem faster)
AltJSON v0.3.6.1 for Red
JSON decoder/encoder for Red--features copied from Rebol 2 version.
- Converts object (map) keys to words where compatible, strings otherwise - Decodes large integers as issues (for e.g. Twitter IDs) - Encodes dates as RFC3339 - Support for surrogate pairs (decoding/encoding characters higher than the BMP as ascii) - 'Flat' mode for parsing, duplicate keys - Contracts Flickr's '_content' objects