Changeset 508 for ccr/trunk/p/C0CXPATH.m
- Timestamp:
- May 21, 2009, 1:12:11 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
ccr/trunk/p/C0CXPATH.m
r391 r508 1 C0CXPATH 2 ;; 0.2;CCDCCR;nopatch;noreleasedate1 C0CXPATH ; CCDCCR/GPL - XPATH XML manipulation utilities; 6/1/08 2 ;;1.0;C0C;;May 19, 2009; 3 3 ;Copyright 2008 George Lilly. Licensed under the terms of the GNU 4 4 ;General Public License See attached copy of the License. … … 22 22 Q 23 23 ; 24 OUTPUT(OUTARY,OUTNAME,OUTDIR) 24 OUTPUT(OUTARY,OUTNAME,OUTDIR) ; WRITE AN ARRAY TO A FILE 25 25 ; 26 26 N Y … … 30 30 Q 31 31 ; 32 PUSH(STK,VAL) 32 PUSH(STK,VAL) ; pushs VAL onto STK and updates STK(0) 33 33 ; VAL IS A STRING AND STK IS PASSED BY NAME 34 34 ; … … 38 38 Q 39 39 ; 40 POP(STK,VAL) 40 POP(STK,VAL) ; POPS THE LAST VALUE OFF THE STK AND RETURNS IT IN VAL 41 41 ; VAL AND STK ARE PASSED BY REFERENCE 42 42 ; … … 50 50 Q 51 51 ; 52 PUSHA(ADEST,ASRC) 52 PUSHA(ADEST,ASRC) ; PUSH ASRC ONTO ADEST, BOTH PASSED BY NAME 53 53 ; 54 54 N ZGI … … 57 57 Q 58 58 ; 59 MKMDX(STK,RTN) 59 MKMDX(STK,RTN) ; MAKES A MUMPS INDEX FROM THE ARRAY STK 60 60 ; RTN IS SET TO //FIRST/SECOND/THIRD FOR THREE ARRAY ELEMENTS 61 61 S RTN="" … … 68 68 Q 69 69 ; 70 XNAME(ISTR) 70 XNAME(ISTR) ; FUNCTION TO EXTRACT A NAME FROM AN XML FRAG 71 71 ; </NAME> AND <NAME ID=XNAME> WILL RETURN NAME 72 72 ; ISTR IS PASSED BY VALUE … … 83 83 Q CUR 84 84 ; 85 INDEX(ZXML) 85 INDEX(ZXML) ; parse the XML in ZXML and produce an XPATH index 86 86 ; ex. ZXML(FIRST,SECOND,THIRD,FOURTH)=FIRSTLINE^LASTLINE 87 87 ; WHERE FIRSTLINE AND LASTLINE ARE THE BEGINNING AND ENDING OF THE … … 141 141 Q 142 142 ; 143 QUERY(IARY,XPATH,OARY) 143 QUERY(IARY,XPATH,OARY) ; RETURNS THE XML ARRAY MATCHING THE XPATH EXPRESSION 144 144 ; XPATH IS OF THE FORM "//FIRST/SECOND/THIRD" 145 145 ; IARY AND OARY ARE PASSED BY NAME … … 163 163 Q 164 164 ; 165 XF(IDX,XPATH) 165 XF(IDX,XPATH) ; EXTRINSIC TO RETURN THE STARTING LINE FROM AN XPATH 166 166 ; INDEX WITH TWO PIECES START^FINISH 167 167 ; IDX IS PASSED BY NAME 168 168 Q $P(@IDX@(XPATH),"^",1) 169 169 ; 170 XL(IDX,XPATH) 170 XL(IDX,XPATH) ; EXTRINSIC TO RETURN THE LAST LINE FROM AN XPATH 171 171 ; INDEX WITH TWO PIECES START^FINISH 172 172 ; IDX IS PASSED BY NAME 173 173 Q $P(@IDX@(XPATH),"^",2) 174 174 ; 175 START(ISTR) 175 START(ISTR) ; EXTRINSIC TO RETURN THE STARTING LINE FROM AN INDEX 176 176 ; TYPE STRING WITH THREE PIECES ARRAY;START;FINISH 177 177 ; COMPANION TO FINISH ; IDX IS PASSED BY NAME 178 178 Q $P(ISTR,";",2) 179 179 ; 180 FINISH(ISTR) 180 FINISH(ISTR) ; EXTRINSIC TO RETURN THE LAST LINE FROM AN INDEX 181 181 ; TYPE STRING WITH THREE PIECES ARRAY;START;FINISH 182 182 Q $P(ISTR,";",3) 183 183 ; 184 ARRAY(ISTR) 184 ARRAY(ISTR) ; EXTRINSIC TO RETURN THE ARRAY REFERENCE FROM AN INDEX 185 185 ; TYPE STRING WITH THREE PIECES ARRAY;START;FINISH 186 186 Q $P(ISTR,";",1) 187 187 ; 188 BUILD(BLIST,BDEST) 188 BUILD(BLIST,BDEST) ; A COPY MACHINE THAT TAKE INSTRUCTIONS IN ARRAY BLIST 189 189 ; WHICH HAVE ARRAY;START;FINISH AND COPIES THEM TO DEST 190 190 ; DEST IS CLEARED TO START … … 204 204 Q 205 205 ; 206 QUEUE(BLST,ARRAY,FIRST,LAST) 206 QUEUE(BLST,ARRAY,FIRST,LAST) ; ADD AN ENTRY TO A BLIST 207 207 ; 208 208 I DEBUG W "QUEUEING ",BLST,! … … 210 210 Q 211 211 ; 212 CP(CPSRC,CPDEST) 212 CP(CPSRC,CPDEST) ; COPIES CPSRC TO CPDEST BOTH PASSED BY NAME 213 213 ; KILLS CPDEST FIRST 214 214 N CPINSTR … … 222 222 Q 223 223 ; 224 QOPEN(QOBLIST,QOXML,QOXPATH) 224 QOPEN(QOBLIST,QOXML,QOXPATH) ; ADD ALL BUT THE LAST LINE OF QOXML TO QOBLIST 225 225 ; WARNING NEED TO DO QCLOSE FOR SAME XML BEFORE CALLING BUILD 226 226 ; QOXPATH IS OPTIONAL - WILL OPEN INSIDE THE XPATH POINT … … 242 242 Q 243 243 ; 244 QCLOSE(QCBLIST,QCXML,QCXPATH) 244 QCLOSE(QCBLIST,QCXML,QCXPATH) ; CLOSE XML AFTER A QOPEN 245 245 ; ADDS THE LIST LINE OF QCXML TO QCBLIST 246 246 ; USED TO FINISH INSERTING CHILDERN NODES … … 261 261 Q 262 262 ; 263 INSERT(INSXML,INSNEW,INSXPATH) 263 INSERT(INSXML,INSNEW,INSXPATH) ; INSERT INSNEW INTO INSXML AT THE 264 264 ; INSXPATH XPATH POINT INSXPATH IS OPTIONAL - IF IT IS 265 265 ; OMITTED, INSERTION WILL BE AT THE ROOT … … 287 287 Q 288 288 ; 289 INSINNER(INNXML,INNNEW,INNXPATH) 289 INSINNER(INNXML,INNNEW,INNXPATH) ; INSERT THE INNER XML OF INNNEW 290 290 ; INTO INNXML AT THE INNXPATH XPATH POINT 291 291 ; … … 307 307 Q 308 308 ; 309 INSB4(XDEST,XNEW) 309 INSB4(XDEST,XNEW) ; INSERT XNEW AT THE BEGINNING OF XDEST 310 310 ; BUT XDEST AN XNEW ARE PASSED BY NAME 311 311 N XBLD,XTMP … … 318 318 Q 319 319 ; 320 REPLACE(REXML,RENEW,REXPATH) 320 REPLACE(REXML,RENEW,REXPATH) ; REPLACE THE XML AT THE XPATH POINT 321 321 ; WITH RENEW - NOTE THIS WILL DELETE WHAT WAS THERE BEFORE 322 322 ; REXML AND RENEW ARE PASSED BY NAME XPATH IS A VALUE … … 342 342 Q 343 343 ; 344 MISSING(IXML,OARY) 344 MISSING(IXML,OARY) ; SEARTH THROUGH INXLM AND PUT ANY @@X@@ VARS IN OARY 345 345 ; W "Reporting on the missing",! 346 346 ; W OARY … … 354 354 Q 355 355 ; 356 MAP(IXML,INARY,OXML) 356 MAP(IXML,INARY,OXML) ; SUBSTITUTE MULTIPLE @@X@@ VARS WITH VALUES IN INARY 357 357 ; AND PUT THE RESULTS IN OXML 358 358 I '$D(@IXML@(0)) W "MALFORMED XML PASSED TO MAP",! Q … … 379 379 Q 380 380 ; 381 DOFLD 382 ; 383 Q 384 ; 385 TRIM(THEXML) 381 DOFLD ; PROCESS A FILEMAN FIELD REFERENCED BY A VARIABLE 382 ; 383 Q 384 ; 385 TRIM(THEXML) ; TAKES OUT ALL NULL ELEMENTS 386 386 ; THEXML IS PASSED BY NAME 387 387 N I,J,TMPXML,DEL,FOUND,INTXT … … 421 421 Q FOUND 422 422 ; 423 UNMARK(XSEC) 423 UNMARK(XSEC) ; REMOVE MARKUP FROM FIRST AND LAST LINE OF XML 424 424 ; XSEC IS A SECTION PASSED BY NAME 425 425 N XBLD,XTMP … … 429 429 Q 430 430 ; 431 PARY(GLO) 431 PARY(GLO) ;PRINT AN ARRAY 432 432 N I 433 433 F I=1:1:@GLO@(0) W I_" "_@GLO@(I),! 434 434 Q 435 435 ; 436 H2ARY(IARYRTN,IHASH,IPRE) 436 H2ARY(IARYRTN,IHASH,IPRE) ; CONVERT IHASH TO RETURN ARRAY 437 437 ; IPRE IS OPTIONAL PREFIX FOR THE ELEMENTS. USED FOR MUPTIPLES 1^"VAR"^VALUE 438 438 I '$D(IPRE) S IPRE="" … … 460 460 Q 461 461 ; 462 XVARS(XVRTN,XVIXML) 462 XVARS(XVRTN,XVIXML) ; RETURNS AN ARRAY XVRTN OF ALL UNIQUE VARIABLES 463 463 ; DEFINED IN INPUT XML XVIXML BY @@VAR@@ 464 464 ; XVRTN AND XVIXML ARE PASSED BY NAME … … 471 471 Q 472 472 ; 473 DXVARS(DXIN) 473 DXVARS(DXIN) ;DISPLAY ALL VARIABLES IN A TEMPLATE 474 474 ; IF PARAMETERS ARE NULL, DEFAULTS TO CCR TEMPLATE 475 475 ; … … 487 487 Q 488 488 ; 489 TEST 489 TEST ; Run all the test cases 490 490 D TESTALL^C0CUNIT("C0CXPAT0") 491 491 Q 492 492 ; 493 ZTEST(WHICH) 493 ZTEST(WHICH) ; RUN ONE SET OF TESTS 494 494 N ZTMP 495 495 S DEBUG=1 … … 498 498 Q 499 499 ; 500 TLIST 500 TLIST ; LIST THE TESTS 501 501 N ZTMP 502 502 D ZLOAD^C0CUNIT("ZTMP","C0CXPAT0")
Note:
See TracChangeset
for help on using the changeset viewer.