Mailing List Archive: 49091 messages
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search

[REBOL] Formatting a display line

From: Steven:White:ci:bloomington:mn:us at: 4-Nov-2003 15:57

This must be something really dumb, but I am wondering if perhaps I am not understanding how something works. The purpose of the script below is to go through a block of blocks (a little "file" of "records" in my native tongue) and, for each record, rearrange the "fields" with some spaces in them, suitable for displaying. It builds up this displayable line in the item called FORMATTED-LINE. On line 1111 of the script, the first item (number four = "THIS") is added to FORMATTED-LINE, and on line 2222 the FORMATTED-LINE is displayed to show that it is correct. On line 3333, a procedure is called to fill the line out to 10 spaces. In the procedure to add the spaces, at line 4444, suddenly FORMATTED-LINE is different; it contains the field just added, PLUS the data the is not due to be added until line 5555. In other words, on line 2222 FORMATTED-LINE is "THIS" and on line 4444 it is "THISIS", but the IS is not supposed to be added until line 5555, AFTER the script has returned from adding the spaces after THIS. Am I losing my mind or what? Thank you. Steven White [steven--white--ci--bloomington--mn--us] script follows--may be cut, pasted, and run: REBOL [ ] DATA-SELECTED: [ [ "TEST" "A" "IS" "THIS" ] [ "WORK" "THIS" "WON'T" "WHY" ] ] DATA-FORMATTED: none FORMATTED-LINE: none TEST-PROCEDURE: does [ DATA-FORMATTED: copy "" foreach DATA-RECORD DATA-SELECTED [ FORMATTED-LINE: copy "" PRINT ["APPENDING " FOURTH DATA-RECORD] append FORMATTED-LINE fourth DATA-RECORD ;; 1111 PRINT ["FORMATTED LINE NOW IS " FORMATTED-LINE] ;; 2222 ADD-FILLER (10 - length? FORMATTED-LINE) ;; 3333 ;;;;;;;; PRINT ["APPENDING " THIRD DATA-RECORD] ;; UNCOMMENTING GIVES ERROR append FORMATTED-LINE third DATA-RECORD ;; 5555 PRINT ["FORMATTED LINE NOW IS " FORMATTED-LINE] ADD-FILLER (20 - length? FORMATTED-LINE) append FORMATTED-LINE second DATA-RECORD ADD-FILLER (30 - length? FORMATTED-LINE) append FORMATTED-LINE first DATA-RECORD append FORMATTED-LINE newline append DATA-FORMATTED FORMATTED-LINE ] ] ADD-FILLER: func [ "Add a specified number of blanks to FORMATTED-LINE" SPACE-COUNT integer! ] [ PRINT ["NOW WE WILL ADD " SPACE-COUNT " SPACES"] loop SPACE-COUNT [ append FORMATTED-LINE " " ;; 4444 PRINT ["FORMATTED LINE IS " LENGTH? FORMATTED-LINE " BYTES:" FORMATTED-LINE] ] ] TEST-PROCEDURE PRINT DATA-FORMATTED