86 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Scheme
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Scheme
		
	
	
	
	
	
| ;; Copyright (c) 2009 Derick Eddington.  All rights reserved.
 | |
| ;; Licensed under an MIT-style license.  My license is in the file
 | |
| ;; named LICENSE from the original collection this file is distributed
 | |
| ;; with.  If this file is redistributed with some other collection, my
 | |
| ;; license must also be included.
 | |
| 
 | |
| #!r6rs
 | |
| (library (srfi s13 strings)
 | |
|   (export
 | |
|     string-map string-map!
 | |
|     string-fold       string-unfold
 | |
|     string-fold-right string-unfold-right 
 | |
|     string-tabulate string-for-each string-for-each-index
 | |
|     string-every string-any
 | |
|     string-hash string-hash-ci
 | |
|     string-compare string-compare-ci
 | |
|     string=    string<    string>    string<=    string>=    string<>
 | |
|     string-ci= string-ci< string-ci> string-ci<= string-ci>= string-ci<> 
 | |
|     string-downcase  string-upcase  string-titlecase  
 | |
|     string-downcase! string-upcase! string-titlecase! 
 | |
|     string-take string-take-right
 | |
|     string-drop string-drop-right
 | |
|     string-pad string-pad-right
 | |
|     string-trim string-trim-right string-trim-both
 | |
|     string-filter string-delete
 | |
|     string-index string-index-right 
 | |
|     string-skip  string-skip-right
 | |
|     string-count
 | |
|     string-prefix-length string-prefix-length-ci
 | |
|     string-suffix-length string-suffix-length-ci
 | |
|     string-prefix? string-prefix-ci?
 | |
|     string-suffix? string-suffix-ci?
 | |
|     string-contains string-contains-ci
 | |
|     string-copy! substring/shared
 | |
|     string-reverse string-reverse! reverse-list->string
 | |
|     string-concatenate string-concatenate/shared string-concatenate-reverse
 | |
|     string-concatenate-reverse/shared
 | |
|     string-append/shared
 | |
|     xsubstring string-xcopy!
 | |
|     string-null?
 | |
|     string-join
 | |
|     string-tokenize
 | |
|     string-replace
 | |
|     ; R5RS extended:
 | |
|     string->list string-copy string-fill! 
 | |
|     ; R5RS re-exports:
 | |
|     string? make-string string-length string-ref string-set! 
 | |
|     string string-append list->string
 | |
|     ; Low-level routines:
 | |
|     #;(make-kmp-restart-vector string-kmp-partial-search kmp-step
 | |
|     string-parse-start+end
 | |
|     string-parse-final-start+end
 | |
|     let-string-start+end
 | |
|     check-substring-spec
 | |
|     substring-spec-ok?)
 | |
|     )
 | |
|   (import
 | |
|     (except (rnrs) string-copy string-for-each string->list
 | |
|                    string-upcase string-downcase string-titlecase string-hash)
 | |
|     (except (rnrs mutable-strings) string-fill!)
 | |
|     (rnrs r5rs)
 | |
|     (srfi s23 error tricks)
 | |
|     (srfi s8 receive)
 | |
|     (srfi s14 char-sets)
 | |
|     (srfi private let-opt)
 | |
|     (srfi private include))
 | |
|   
 | |
|   
 | |
|   (define-syntax check-arg
 | |
|     (lambda (stx)
 | |
|       (syntax-case stx ()
 | |
|         [(_ pred val caller)
 | |
|          (and (identifier? #'val) (identifier? #'caller))
 | |
|          #'(unless (pred val)
 | |
|              (assertion-violation 'caller "check-arg failed" val))])))
 | |
|   
 | |
|   (define (char-cased? c)
 | |
|     (char-upper-case? (char-upcase c)))
 | |
|   
 | |
|   ;; (SRFI-23-error->R6RS "(library (srfi s13 strings))"
 | |
|   ;;  (include/resolve ("srfi" "%3a13") "srfi-13.scm"))
 | |
| 
 | |
|   (SRFI-23-error->R6RS "(library (srfi s13 strings))"
 | |
|    (include/resolve ("srfi" "s13") "srfi-13.scm"))
 | |
| )
 |