On Thu, Jun 5, 2008 at 9:29 AM, Derek Atkins <[EMAIL PROTECTED]> wrote:
> Maybe create a new file in src/scm and then you can cause > it to get loaded by main.scm? I don't think main.scm > is the right place for these procedures. > OK. Should I be naming these procedures with "gnc-" in front to prevent them from hiding any standard Guile routines that might get released with the same name? > -derek > > > Quoting Charles Day <[EMAIL PROTECTED]>: > > To support multi-byte account separators in the QIF importer I have had to >> write several new Scheme string manipulation routines. They are pretty >> useful variations on some of the standard routines. I have them working in >> the QIF importer, but is there a better place to stick them so that they >> can >> be used from other modules, such as reports? Perhaps in main.scm? >> >> -Charles >> >> P.S. For example, here are a three of the Scheme procedures I have >> written. >> There are a few more, but this will give you a good idea. If you happen to >> see any room for performance improvement, let me know. >> >> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; >> ;; string-rcontains >> ;; >> ;; Like string-contains, but searches from the right. >> ;; >> ;; Example: (string-rcontains "foobarfoobarf" "bar") returns 9. >> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; >> >> (define (string-rcontains s1 s2) >> (let ((s2len (string-length s2))) >> (let loop ((i (string-contains s1 s2)) >> (retval #f)) >> (if i >> (loop (string-contains s1 s2 (+ i s2len)) i) >> retval)))) >> >> >> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; >> ;; substring-count >> ;; >> ;; Similar to string-count, but searches for a substring rather >> ;; than a single character. >> ;; >> ;; Example: (substring-count "foobarfoobarf" "bar") returns 2. >> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; >> >> (define (substring-count s1 s2) >> (let ((s2len (string-length s2))) >> (let loop ((i (string-contains s1 s2)) >> (retval 0)) >> (if i >> (loop (string-contains s1 s2 (+ i s2len)) (+ 1 retval)) >> retval)))) >> >> >> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; >> ;; substring-split >> ;; >> ;; Similar to string-split, but the delimiter is a string >> ;; rather than a single character. >> ;; >> ;; Example: (substring-split "foobarfoobarf" "bar") returns >> ;; ("foo" "foo" "f") >> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; >> >> (define (substring-split s1 s2) >> (let ((i (string-contains s1 s2))) >> (if i >> (cons (substring s1 0 i) >> (substring-split (substring s1 (+ i (string-length s2))) s2)) >> (list s1)))) >> _______________________________________________ >> gnucash-devel mailing list >> gnucash-devel@gnucash.org >> https://lists.gnucash.org/mailman/listinfo/gnucash-devel >> >> > > > -- > Derek Atkins, SB '93 MIT EE, SM '95 MIT Media Laboratory > Member, MIT Student Information Processing Board (SIPB) > URL: http://web.mit.edu/warlord/ PP-ASEL-IA N1NWH > [EMAIL PROTECTED] PGP key available > > _______________________________________________ gnucash-devel mailing list gnucash-devel@gnucash.org https://lists.gnucash.org/mailman/listinfo/gnucash-devel