249 lines
16 KiB
HTML
249 lines
16 KiB
HTML
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
<link rel="stylesheet" href="../coverage.css"/> <title> beowulf/core.clj </title>
|
|
</head>
|
|
<body>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
001 (ns beowulf.core
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
002 "Essentially, the `-main` function and the bootstrap read-eval-print loop."
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
003 (:require [beowulf.bootstrap :refer [EVAL oblist *options*]]
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
004 [beowulf.read :refer [READ]]
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
005 [clojure.java.io :as io]
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
006 [clojure.pprint :refer [pprint]]
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
007 [clojure.tools.cli :refer [parse-opts]]
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
008 [environ.core :refer [env]])
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
009 (:gen-class))
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
010
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
011 (def cli-options
|
|
</span><br/>
|
|
<span class="covered" title="4 out of 4 forms covered">
|
|
012 [["-h" "--help"]
|
|
</span><br/>
|
|
<span class="covered" title="6 out of 6 forms covered">
|
|
013 ["-p PROMPT" "--prompt PROMPT" "Set the REPL prompt to PROMPT"
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
014 :default "Sprecan::"]
|
|
</span><br/>
|
|
<span class="covered" title="5 out of 5 forms covered">
|
|
015 ["-r INITFILE" "--read INITFILE" "Read Lisp functions from the file INITFILE"
|
|
</span><br/>
|
|
<span class="covered" title="8 out of 8 forms covered">
|
|
016 :validate [#(and
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
017 (.exists (io/file %))
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
018 (.canRead (io/file %)))
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
019 "Could not find initfile"]]
|
|
</span><br/>
|
|
<span class="covered" title="4 out of 4 forms covered">
|
|
020 ["-s" "--strict" "Strictly interpret the Lisp 1.5 language, without extensions."]
|
|
</span><br/>
|
|
<span class="covered" title="4 out of 4 forms covered">
|
|
021 ["-t" "--trace" "Trace Lisp evaluation."]])
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
022
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
023 (defn repl
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
024 "Read/eval/print loop."
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
025 [prompt]
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
026 (loop []
|
|
</span><br/>
|
|
<span class="covered" title="3 out of 3 forms covered">
|
|
027 (print prompt)
|
|
</span><br/>
|
|
<span class="covered" title="2 out of 2 forms covered">
|
|
028 (flush)
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
029 (try
|
|
</span><br/>
|
|
<span class="covered" title="3 out of 3 forms covered">
|
|
030 (let [input (read-line)]
|
|
</span><br/>
|
|
<span class="partial" title="2 out of 3 forms covered">
|
|
031 (cond
|
|
</span><br/>
|
|
<span class="covered" title="11 out of 11 forms covered">
|
|
032 (= input "quit") (throw (ex-info "\nFærwell!" {:cause :quit}))
|
|
</span><br/>
|
|
<span class="covered" title="16 out of 16 forms covered">
|
|
033 input (println (str "> " (print-str (EVAL (READ input) @oblist))))
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 2 forms covered">
|
|
034 :else (println)))
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
035 (catch
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
036 Exception
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
037 e
|
|
</span><br/>
|
|
<span class="covered" title="4 out of 4 forms covered">
|
|
038 (let [data (ex-data e)]
|
|
</span><br/>
|
|
<span class="covered" title="3 out of 3 forms covered">
|
|
039 (println (.getMessage e))
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
040 (if
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
041 data
|
|
</span><br/>
|
|
<span class="covered" title="6 out of 6 forms covered">
|
|
042 (case (:cause data)
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 5 forms covered">
|
|
043 :parse-failure (println (:failure data))
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
044 :strict nil ;; the message, which has already been printed, is enough.
|
|
</span><br/>
|
|
<span class="covered" title="2 out of 2 forms covered">
|
|
045 :quit (throw e)
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
046 ;; default
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 3 forms covered">
|
|
047 (pprint data))))))
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
048 (recur)))
|
|
</span><br/>
|
|
<span class="blank" title="0 out of 0 forms covered">
|
|
049
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
050 (defn -main
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
051 "Parse options, print the banner, read the init file if any, and enter the
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
052 read/eval/print loop."
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
053 [& opts]
|
|
</span><br/>
|
|
<span class="covered" title="5 out of 5 forms covered">
|
|
054 (let [args (parse-opts opts cli-options)]
|
|
</span><br/>
|
|
<span class="covered" title="2 out of 2 forms covered">
|
|
055 (println
|
|
</span><br/>
|
|
<span class="covered" title="4 out of 4 forms covered">
|
|
056 (str
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
057 "\nHider wilcuman. Béowulf is mín nama.\n"
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
058 (if
|
|
</span><br/>
|
|
<span class="covered" title="2 out of 2 forms covered">
|
|
059 (System/getProperty "beowulf.version")
|
|
</span><br/>
|
|
<span class="covered" title="6 out of 6 forms covered">
|
|
060 (str "Síðe " (System/getProperty "beowulf.version") "\n"))
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
061 (if
|
|
</span><br/>
|
|
<span class="covered" title="5 out of 5 forms covered">
|
|
062 (:help (:options args))
|
|
</span><br/>
|
|
<span class="covered" title="3 out of 3 forms covered">
|
|
063 (:summary args))
|
|
</span><br/>
|
|
<span class="covered" title="4 out of 4 forms covered">
|
|
064 (if (:errors args)
|
|
</span><br/>
|
|
<span class="covered" title="9 out of 9 forms covered">
|
|
065 (apply str (interpose "; " (:errors args))))
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
066 "\nSprecan 'quit' tó laéfan\n"))
|
|
</span><br/>
|
|
<span class="covered" title="12 out of 12 forms covered">
|
|
067 (binding [*options* (:options args)]
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
068 (try
|
|
</span><br/>
|
|
<span class="covered" title="10 out of 10 forms covered">
|
|
069 (repl (str (:prompt (:options args)) " "))
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
070 (catch
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
071 Exception
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
072 e
|
|
</span><br/>
|
|
<span class="covered" title="4 out of 4 forms covered">
|
|
073 (let [data (ex-data e)]
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
074 (if
|
|
</span><br/>
|
|
<span class="covered" title="1 out of 1 forms covered">
|
|
075 data
|
|
</span><br/>
|
|
<span class="covered" title="6 out of 6 forms covered">
|
|
076 (case (:cause data)
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
077 :quit nil
|
|
</span><br/>
|
|
<span class="not-tracked" title="0 out of 0 forms covered">
|
|
078 ;; default
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 3 forms covered">
|
|
079 (pprint data))
|
|
</span><br/>
|
|
<span class="not-covered" title="0 out of 3 forms covered">
|
|
080 (println e))))))))
|
|
</span><br/>
|
|
</body>
|
|
</html>
|