Author: yamakenz
Date: Fri Aug 17 13:39:31 2007
New Revision: 4852

Modified:
   trunk/scm/uim-sh.scm

Log:
* scm/uim-sh.scm
  - (uim-sh-opt-expression, uim-sh-opt-arg-expression): New variable
  - (uim-sh-option-table, uim-sh-usage, uim-sh): Add -e option for
    arbitrary expression evaluation


Modified: trunk/scm/uim-sh.scm
==============================================================================
--- trunk/scm/uim-sh.scm        (original)
+++ trunk/scm/uim-sh.scm        Fri Aug 17 13:39:31 2007
@@ -33,6 +33,9 @@
 (require-extension (srfi 1 2 6 23 34))
 
 (define uim-sh-prompt "uim> ")
+(define uim-sh-opt-expression #f)
+(define uim-sh-opt-arg-expression
+  "(error \"no <expr> is passed as argument\")")
 
 (define uim-sh-option-table
   `((("-b" "--batch")          . batch)
@@ -44,6 +47,11 @@
     (("--editline")            . ,(lambda (args)
                                    (require-module "editline")
                                    args))
+    (("-e" "--expression")     . ,(lambda (args)
+                                   (set! uim-sh-opt-expression #t)
+                                   (and-let* ((expr (safe-car args)))
+                                     (set! uim-sh-opt-arg-expression expr)
+                                     (safe-cdr args))))
     (("-V" "--version")        . version)
     (("-h" "--help")           . help)))
 
@@ -58,6 +66,8 @@
   -r <name>
   --require-module <name> require module
   --editline              require editline module for Emacs-like line editing
+  -e <expr>
+  --expression <expr>     evaluate <expr> (after loading the file)
   -V
   --version               show software version
   -h
@@ -127,6 +137,11 @@
       (cond
        (uim-sh-opt-help    (uim-sh-usage))
        (uim-sh-opt-version (uim-sh-display-version))
+       (uim-sh-opt-expression
+       (let* ((expr (read (open-input-string uim-sh-opt-arg-expression)))
+              (result (eval expr (interaction-environment))))
+         (write result)
+         (newline)))
        (else
        (let reloop ()
          (and (guard (err (else

Reply via email to