On Mon, 2009-02-23 at 16:55 -0600, Mike Crowe wrote: > Hello all > > I've generated a preliminary gnetlist backend for generating an xml > based bill of materials. > > It seems to be working except that I have to filter the file with sed > after generating the netlist to convert "&" to "&". > > Two questions > 1) Does anyone know how to do this filter conversion directly with the > backend toolset (guile)?
The hard question... (best ask a scheme guru). You might find a way with the srfi13 library. There are these examples in the docs: ;;; Convert a string to a list of chars. (string-fold-right cons '() s) ;;; Count the number of lower-case characters in a string. (string-fold (lambda (c count) (if (char-lower-case? c) (+ count 1) count)) 0 s) ;;; Double every backslash character in S. (let* ((ans-len (string-fold (lambda (c sum) (+ sum (if (char=? c #\\) 2 1))) 0 s)) (ans (make-string ans-len))) (string-fold (lambda (c i) (let ((i (if (char=? c #\\) (begin (string-set! ans i #\\) (+ i 1)) i))) (string-set! ans i c) (+ i 1))) 0 s) ans) You might find some combination of that, and string-append is useful. OTOH, I'm no scheme guru, and have no idea how fast either of those would be. You might write a procedure which searches for the & character, splits the string on it, then makes a concationation of <before &>&<after &>. I suspect you could operate recursively on the split string's second half. Don't ask me to figure out what functions are required to find / split the string. You might find something suitable here though: http://srfi.schemers.org/srfi-13/srfi-13.html If you're going to use recursion, tail-recursion is best (to avoid running out of stack space). If I'm getting the explanation right.. the last call (before it returns) in the the recursive procedure should be the one which calls its-self. http://en.wikipedia.org/wiki/Tail_recursion > 2) Who do I contact to get my little backend into the main code > branch? :-) Send a patch to this list.. talk to Ales, or one of the other developers etc.. Post a patch to sourceforge tracker (but prod us on-list if you don't want it to get ignored / forgotten). Best wishes, -- Peter Clifton Electrical Engineering Division, Engineering Department, University of Cambridge, 9, JJ Thomson Avenue, Cambridge CB3 0FA Tel: +44 (0)7729 980173 - (No signal in the lab!) _______________________________________________ geda-user mailing list geda-user@moria.seul.org http://www.seul.org/cgi-bin/mailman/listinfo/geda-user