node-list question

Subject: node-list question
From: Bas Peters <bpeters@xxxxxx>
Date: Mon, 3 May 1999 15:31:11 +0200
I used this code to strip trailing punctuation:

(define (strip-trailing-punctuation s)
  (let ((ls-2 (- (string-length s) 2)))
      (case (string-ref s ls-2)
	((#\space #\; #\space #\:) (substring s 0 ls-2))
	(else s))))

I rewrote parts of my style-sheet, still need the strip-trailing
function, but it doesn't work anymore (was a defined data variable isbn
is now a node-list). Below is a snippet of my code. The line
(strip-trailing-punctuation isbn) calls the function, but it complains
that it does not receive a string:

jade:test.dsl:52:17:E: 1st argument for primitive "string-length" of
wrong type:
 "#<unknown object 14628576>" not a string

Does any one know how to strip the last two characters of each node list
value if that value ends with a space and a colon or semi colon?

Here is the code:

; create a paragraph for each isbn number (the ISBN field is
repeatable).
(mode isbn
  (element MRCB020-a
    (make paragraph
      space-before: 2pt
      (literal "ISBN ")
      (process-children))))

(element MRCB
; get the isbn numbers
  (let ((isbn (select-elements (descendants (current-node))
                               "MRCB020-a")))
; call function strip trailing punctuation
    (strip-trailing-punctuation isbn)   
; process MRCB element
    (make paragraph
      space-after: 10pt
      keep: #t
    (sosofo-append (process-children)
; process node list with MRCB020-a values
      (if (not (node-list-empty? isbn))
        (with-mode isbn
          (process-node-list isbn))
        (empty-sosofo))))))

Thanks in advance,

Bas Peters
bpeters@xxxxxx


 DSSSList info and archive:  http://www.mulberrytech.com/dsssl/dssslist


Current Thread