Author: yamakenz
Date: Fri Aug 17 15:02:55 2007
New Revision: 4854

Modified:
   trunk/scm/uim-sh.scm

Log:
* scm/uim-sh.scm
  - (%HYPHEN-SYM): New variable
  - (uim-sh-define-opt-vars, uim-sh-parse-args): Make independent of
    uim-sh-option-table and reusable for user-script options parsing
  - (uim-sh): Follow the change of uim-sh-parse-args


Modified: trunk/scm/uim-sh.scm
==============================================================================
--- trunk/scm/uim-sh.scm        (original)
+++ trunk/scm/uim-sh.scm        Fri Aug 17 15:02:55 2007
@@ -32,6 +32,8 @@
 
 (require-extension (srfi 1 2 6 23 34))
 
+(define %HYPHEN-SYM (string->symbol "-"))
+
 (define uim-sh-prompt "uim> ")
 (define uim-sh-opt-expression #f)
 (define uim-sh-opt-arg-expression
@@ -84,24 +86,26 @@
     (newline)))
 
 (define uim-sh-define-opt-vars
-  (lambda ()
+  (lambda (opt-table prefix)
     (for-each (lambda (name)
-               (eval `(define ,(symbol-append 'uim-sh-opt- name) #f)
-                     (interaction-environment)))
-             (filter symbol? (map cdr uim-sh-option-table)))))
+               (let ((sym (symbol-append prefix %HYPHEN-SYM 'opt- name)))
+                 (eval `(define ,sym #f)
+                       (interaction-environment))))
+             (filter symbol? (map cdr opt-table)))))
 
 (define uim-sh-parse-args
-  (lambda (args)
-    (uim-sh-define-opt-vars)
+  (lambda (opt-table prefix args)
+    (uim-sh-define-opt-vars opt-table prefix)
     (let rec ((args args))
       (or (and-let* (((pair? args))
                     (opt (car args))
                     (rest (cdr args))
-                    (ent (assoc opt uim-sh-option-table member))
+                    (ent (assoc opt opt-table member))
                     (action (cdr ent)))
            (cond
             ((symbol? action)
-             (set-symbol-value! (symbol-append 'uim-sh-opt- action) #t))
+             (set-symbol-value!
+              (symbol-append prefix %HYPHEN-SYM 'opt- action) #t))
             ((procedure? action)
              (set! rest (action rest)))
             (else
@@ -131,7 +135,9 @@
 ;; GaUnit-based unit test for uim.
 (define uim-sh
   (lambda (args)
-    (let* ((file.args (uim-sh-parse-args (cdr args))) ;; drop the command name
+    (let* ((file.args (uim-sh-parse-args uim-sh-option-table
+                                        'uim-sh
+                                        (cdr args))) ;; drop the command name
           (script (safe-car file.args))
           (my-read (if (provided? "editline")
                        uim-editline-read

Reply via email to