Back

skip-whitespace (clj)

(source)

function

(skip-whitespace s)
Skips whitespace characters on stream s. Returns :line-start, :stream-end, or :body to indicate the relative location of the next character on s. Interprets comma as whitespace and semicolon as comment to end of line. Does not interpret #! as comment to end of line because only one character of lookahead is available. The stream must either be an instance of LineNumberingPushbackReader or duplicate its behavior of both supporting .unread and collapsing all of CR, LF, and CRLF to a single \newline.

Examples

reborg/clojure-essential-reference
(require '[clojure.main :as main])

(def repl-options
  [:prompt #(printf "enter expression :> ")
   :read   (fn [request-prompt request-exit] ; <1>
             (or ({:line-start request-prompt :stream-end request-exit} ; <2>
                  (main/skip-whitespace *in*))
                  (re-find #"^(\d+)([\+\-\*\/])(\d+)$" (read-line)))) ; <3>
   :eval   (fn [[_ x op y]] ; <4>
             (({"+" + "-" - "*" * "/" /} op)
              (Integer. x) (Integer. y)))])