From 3f8ac7106fa01f886f2a6fa62969d976998687d3 Mon Sep 17 00:00:00 2001 From: Alex Shinn Date: Sun, 30 Oct 2011 16:35:16 +0900 Subject: [PATCH] adding support for #![no-]fold-case in srfi.38 and chibi.repl --- lib/chibi/repl.scm | 7 ++++++- lib/srfi/38.scm | 13 ++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/lib/chibi/repl.scm b/lib/chibi/repl.scm index 30321fe4..44d24013 100644 --- a/lib/chibi/repl.scm +++ b/lib/chibi/repl.scm @@ -162,7 +162,12 @@ (guard (exn (else (print-exception exn (current-error-port)))) - (let* ((expr (call-with-input-string line read/ss)) + (let* ((expr (call-with-input-string line + (lambda (in2) + (set-port-fold-case! in2 (port-fold-case? in)) + (let ((expr (read/ss in2))) + (set-port-fold-case! in (port-fold-case? in2)) + expr)))) (thread (make-thread (lambda () diff --git a/lib/srfi/38.scm b/lib/srfi/38.scm index 42d236a1..1f4e991e 100644 --- a/lib/srfi/38.scm +++ b/lib/srfi/38.scm @@ -180,7 +180,18 @@ (read-one)) ((#\|) (skip-comment in 0)) - ((#\!) (skip-line in) (read-one in)) + ((#\!) + (let ((name (read-name #f in))) + (cond + ((string-ci=? name "!fold-case") + (set-port-fold-case! in #t)) + ((string-ci=? name "!no-fold-case") + (set-port-fold-case! in #f)) + (else ;; assume a #!/bin/bash line + (skip-line in))) + (let ((res (read-one))) + (if (not (eof-object? res)) + res)))) ((#\() (list->vector (read-one))) ((#\') (read-char in) (list 'syntax (read-one))) ((#\`) (read-char in) (list 'quasisyntax (read-one)))