XLFJSOND ;SLC/KCM/TJB - Decode JSON ;26 Oct 2016
Source file <XLFJSOND.m>
| Name | Comments | DBIA/ICR reference | 
|---|---|---|
| DECODE(XUJSON,XUROOT,XUERR) | ; Set JSON object into closed array ref XUROOT
 | 
|
| DIRECT | ; TAG for use by DECODE^XLFJSON
 | 
|
| NXTKN() | ; Move the pointers to the beginning of the next token
 | 
|
| ADDSTR | ; Add string value to current node, escaping text along the way
 ; Expects XULINE,XUIDX to reference that starting point of the index ; TODO: add a mechanism to specify names that should not be escaped ; just store as ":")= and ":",n)=  | 
|
| SETSTR | ; Set simple string value from within same line
 ; expects XUJSON, XULINE, XUINX, XUEND  | 
|
| UESEXT | ; unescape from XULINE,XUIDX to XUTLINE,XUEND & extend (\) if necessary
 ; expects XULINE,XUIDX,XUTLINE,XUEND  | 
|
| ADDBUF(XUX) | ; add buffer of characters to destination
 ; expects XUBUF,XUMAX,XUNODE,XUMORE to be defined ; used directly by ADDSTR  | 
|
| SAVEBUF | ; write out buffer to destination
 ; expects XUBUF,XUMAX,XUNODE,XUMORE to be defined ; used directly by ADDSTR,ADDBUF  | 
|
| ISCLOSEQ(XUBLINE) | ; return true if this is a closing, rather than escaped, quote
 ; expects ; XUJSON: lines of the JSON encoded string ; XUIDX: points to 1st character of the segment ; XULINE: points to the line in which the segment starts ; XUEND: points to 1st character after the " (may be past the end of the line) ; used directly by ADDSTR  | 
|
| NAMPARS() | ; Return parsed name, advancing index past the close quote
 ; -- This assumes no embedded quotes are in the name itself --  | 
|
| SETNUM(XUDIGIT) | ; Set numeric along with any necessary modifier
 | 
|
| NUMPARS(XUDIGIT) | ; Return parsed number, advancing index past end of number
 ; XUIDX intially references the second digit  | 
|
| SETBOOL(XULTR) | ; Parse and set boolean value, advancing index past end of value
 | 
|
| OSETBOOL(XUX) | ; set a value and increment XUIDX
 | 
|
| CURNODE() | ; Return a global/local variable name based on XUSTACK
 ; Expects XUSTACK to be defined already  | 
|
| UES(X) | ; Unescape JSON string
 ; copy segments from START to POS-2 (right before \) ; translate target character (which is at $F position)  | 
|
| REALCHAR(C) | ; Return actual character from escaped
 | 
|
| ERRX(ID,VAL) | ; Set the appropriate error message
 |