added github pages support

This commit is contained in:
didier amyot committed 2018-01-27 11:27:33 -05:00
1 parent b14ebdbf63
commit 6ed638a1cc
373 files changed
+185436 -2343

No files matched your search

+944
View File
@@ -0,0 +1,944 @@
;; Copyright (c) Nicola Mometto, Rich Hickey & contributors.
;; The use and distribution terms for this software are covered by the
;; Eclipse Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php)
;; which can be found in the file epl-v10.html at the root of this distribution.
;; By using this software in any fashion, you are agreeing to be bound by
;; the terms of this license.
;; You must not remove this notice, or any other, from this software.
(ns ^{:doc "A clojure reader in clojure"
:author "Bronsa"}
cljs.tools.reader
(:refer-clojure :exclude [read read-line read-string char
default-data-readers *default-data-reader-fn*
*data-readers* *suppress-read*])
(:require-macros [cljs.tools.reader.reader-types :refer [log-source]])
(:require [cljs.tools.reader.reader-types :refer
[read-char unread peek-char indexing-reader?
get-line-number get-column-number get-file-name
string-push-back-reader]]
[cljs.tools.reader.impl.utils :refer
[char ex-info? whitespace? numeric? desugar-meta next-id namespace-keys second'
ReaderConditional reader-conditional reader-conditional?]]
[cljs.tools.reader.impl.commons :refer
[number-literal? read-past match-number parse-symbol read-comment throwing-reader]]
[cljs.tools.reader.impl.errors :as err]
[goog.array :as garray]
[goog.string :as gstring])
(:import goog.string.StringBuffer))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; helpers
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(declare ^:private read*
macros dispatch-macros
^:dynamic *data-readers*
^:dynamic *default-data-reader-fn*
^:dynamic *suppress-read*
default-data-readers)
(defn- ^boolean macro-terminating? [ch]
(case ch
(\" \; \@ \^ \` \~ \( \) \[ \] \{ \} \\) true
false))
(def sb (StringBuffer.))
(defn- read-token
"Read in a single logical token from the reader"
[^not-native rdr kind initch]
(if (nil? initch)
(err/throw-eof-at-start rdr kind)
(do
(.clear sb)
(loop [ch initch]
(if (or (whitespace? ch)
(macro-terminating? ch)
(nil? ch))
(do
(when-not (nil? ch)
(unread rdr ch))
(.toString sb))
(do
(.append sb ch)
(recur (read-char rdr))))))))
(declare read-tagged)
(defn- read-dispatch
[^not-native rdr _ opts pending-forms]
(if-let [ch (read-char rdr)]
(if-let [dm (dispatch-macros ch)]
(dm rdr ch opts pending-forms)
(read-tagged (doto rdr (unread ch)) ch opts pending-forms)) ;; ctor reader is implemented as a tagged literal
(err/throw-eof-at-dispatch rdr)))
(defn- read-unmatched-delimiter
[rdr ch opts pending-forms]
(err/throw-unmatch-delimiter rdr ch))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; readers
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defn read-regex
[^not-native rdr ch opts pending-forms]
(let [sb (StringBuffer.)]
(loop [ch (read-char rdr)]
(if (identical? \" ch)
(re-pattern (str sb))
(if (nil? ch)
(err/throw-eof-reading rdr :regex sb)
(do
(.append sb ch )
(when (identical? \\ ch)
(let [ch (read-char rdr)]
(if (nil? ch)
(err/throw-eof-reading rdr :regex sb))
(.append sb ch)))
(recur (read-char rdr))))))))
(defn- char-code [ch base]
(let [code (js/parseInt ch base)]
(if (js/isNaN code)
-1
code)))
(defn- read-unicode-char
([token offset length base]
(let [l (+ offset length)]
(when-not (== (count token) l)
(err/throw-invalid-unicode-literal nil token))
(loop [i offset uc 0]
(if (== i l)
(js/String.fromCharCode uc)
(let [d (char-code (nth token i) base)]
(if (== d -1)
(err/throw-invalid-unicode-digit-in-token nil (nth token i) token)
(recur (inc i) (+ d (* uc base)))))))))
([^not-native rdr initch base length exact?]
(loop [i 1 uc (char-code initch base)]
(if (== uc -1)
(err/throw-invalid-unicode-digit rdr initch)
(if-not (== i length)
(let [ch (peek-char rdr)]
(if (or (whitespace? ch)
(macros ch)
(nil? ch))
(if exact?
(err/throw-invalid-unicode-len rdr i length)
(js/String.fromCharCode uc))
(let [d (char-code ch base)]
(read-char rdr)
(if (== d -1)
(err/throw-invalid-unicode-digit rdr ch)
(recur (inc i) (+ d (* uc base)))))))
(js/String.fromCharCode uc))))))
(def ^:private ^:const upper-limit (.charCodeAt \uD7ff 0))
(def ^:private ^:const lower-limit (.charCodeAt \uE000 0))
(defn- valid-octal? [token base]
(<= (js/parseInt token base) 0377))
(defn- read-char*
"Read in a character literal"
[^not-native rdr backslash opts pending-forms]
(let [ch (read-char rdr)]
(if-not (nil? ch)
(let [token (if (or (macro-terminating? ch)
(whitespace? ch))
(str ch)
(read-token rdr :character ch))
token-len (. token -length)]
(cond
(== 1 token-len) (.charAt token 0) ;;; no char type - so can't ensure/cache char
(= token "newline") \newline
(= token "space") \space
(= token "tab") \tab
(= token "backspace") \backspace
(= token "formfeed") \formfeed
(= token "return") \return
(gstring/startsWith token "u")
(let [c (read-unicode-char token 1 4 16)
ic (.charCodeAt c 0)]
(if (and (> ic upper-limit)
(< ic lower-limit))
(err/throw-invalid-character-literal rdr c)
c))
(gstring/startsWith token "o")
(let [len (dec token-len)]
(if (> len 3)
(err/throw-invalid-octal-len rdr token)
(let [offset 1
base 8
uc (read-unicode-char token offset len base)]
(if-not (valid-octal? (subs token offset) base)
(err/throw-bad-octal-number rdr)
uc))))
:else (err/throw-unsupported-character rdr token)))
(err/throw-eof-in-character rdr))))
(defn- starting-line-col-info [^not-native rdr]
(when (indexing-reader? rdr)
[(get-line-number rdr) (int (dec (get-column-number rdr)))]))
(defn- ending-line-col-info [^not-native rdr]
(when (indexing-reader? rdr)
[(get-line-number rdr) (get-column-number rdr)]))
(defonce ^:private READ_EOF (js/Object.))
(defonce ^:private READ_FINISHED (js/Object.))
(def ^:dynamic *read-delim* false)
(defn- read-delimited-internal [kind delim rdr opts pending-forms]
(let [[start-line start-column] (starting-line-col-info rdr)
delim (char delim)]
(loop [a (transient [])]
(let [form (read* rdr false READ_EOF delim opts pending-forms)]
(if (identical? form READ_FINISHED)
(persistent! a)
(if (identical? form READ_EOF)
(err/throw-eof-delimited rdr kind start-line start-column (count a))
(recur (conj! a form))))))))
(defn- read-delimited
"Reads and returns a collection ended with delim"
[kind delim rdr opts pending-forms]
(binding [*read-delim* true]
(read-delimited-internal kind delim rdr opts pending-forms)))
(defn- read-list
"Read in a list, including its location if the reader is an indexing reader"
[rdr _ opts pending-forms]
(let [[start-line start-column] (starting-line-col-info rdr)
the-list (read-delimited :list \) rdr opts pending-forms)
[end-line end-column] (ending-line-col-info rdr)]
(with-meta (if (empty? the-list)
'()
(apply list the-list))
(when start-line
(merge
(when-let [file (get-file-name rdr)]
{:file file})
{:line start-line
:column start-column
:end-line end-line
:end-column end-column})))))
(defn- read-vector
"Read in a vector, including its location if the reader is an indexing reader"
[rdr _ opts pending-forms]
(let [[start-line start-column] (starting-line-col-info rdr)
the-vector (read-delimited :vector \] rdr opts pending-forms)
[end-line end-column] (ending-line-col-info rdr)]
(with-meta the-vector
(when start-line
(merge
(when-let [file (get-file-name rdr)]
{:file file})
{:line start-line
:column start-column
:end-line end-line
:end-column end-column})))))
(defn- read-map
"Read in a map, including its location if the reader is an indexing reader"
[rdr _ opts pending-forms]
(let [[start-line start-column] (starting-line-col-info rdr)
the-map (read-delimited :map \} rdr opts pending-forms)
map-count (count the-map)
ks (take-nth 2 the-map)
key-set (set ks)
[end-line end-column] (ending-line-col-info rdr)]
(when (odd? map-count)
(err/throw-odd-map rdr start-line start-column the-map))
(when-not (= (count key-set) (count ks))
(err/throw-dup-keys rdr :map ks))
(with-meta
(if (<= map-count (* 2 (.-HASHMAP-THRESHOLD cljs.core/PersistentArrayMap)))
(.fromArray cljs.core/PersistentArrayMap (to-array the-map) true true)
(.fromArray cljs.core/PersistentHashMap (to-array the-map) true))
(when start-line
(merge
(when-let [file (get-file-name rdr)]
{:file file})
{:line start-line
:column start-column
:end-line end-line
:end-column end-column})))))
(defn- read-number
[^not-native rdr initch]
(loop [sb (doto (StringBuffer.) (.append initch))
ch (read-char rdr)]
(if (or (whitespace? ch) (macros ch) (nil? ch))
(let [s (str sb)]
(unread rdr ch)
(or (match-number s)
(err/throw-invalid-number rdr s)))
(recur (doto sb (.append ch)) (read-char rdr)))))
(defn- escape-char [sb ^not-native rdr]
(let [ch (read-char rdr)]
(case ch
\t "\t"
\r "\r"
\n "\n"
\\ "\\"
\" "\""
\b "\b"
\f "\f"
\u (let [ch (read-char rdr)]
(if (== -1 (js/parseInt (int ch) 16))
(err/throw-invalid-unicode-escape rdr ch)
(read-unicode-char rdr ch 16 4 true)))
(if (numeric? ch)
(let [ch (read-unicode-char rdr ch 8 3 false)]
(if (> (int ch) 0337)
(err/throw-bad-octal-number rdr)
ch))
(err/throw-bad-escape-char rdr ch)))))
(defn- read-string*
[^not-native reader _ opts pending-forms]
(loop [sb (StringBuffer.)
ch (read-char reader)]
(if (nil? ch)
(err/throw-eof-reading reader :string \" sb)
(case ch
\\ (recur (doto sb (.append (escape-char sb reader)))
(read-char reader))
\" (str sb)
(recur (doto sb (.append ch)) (read-char reader))))))
(defn- loc-info [rdr line column]
(when-not (nil? line)
(let [file (get-file-name rdr)
filem (when-not (nil? file) {:file file})
[end-line end-column] (ending-line-col-info rdr)
lcm {:line line
:column column
:end-line end-line
:end-column end-column}]
(merge filem lcm))))
(defn- read-symbol
[rdr initch]
(let [[line column] (starting-line-col-info rdr)
token (read-token rdr :symbol initch)]
(when-not (nil? token)
(case token
;; special symbols
"nil" nil
"true" true
"false" false
"/" '/
(let [^not-native p (parse-symbol token)]
(if-not (nil? p)
(let [^not-native sym (symbol (-nth p 0) (-nth p 1))]
(-with-meta sym (loc-info rdr line column)))
(err/throw-invalid rdr :symbol token)))))))
(def ^:dynamic *alias-map*
"Map from ns alias to ns, if non-nil, it will be used to resolve read-time
ns aliases.
Defaults to nil"
nil)
(defn- resolve-alias [sym]
(get *alias-map* sym))
(defn- resolve-ns [sym]
(or (resolve-alias sym)
(when-let [ns (find-ns sym)]
(symbol (ns-name ns)))))
(defn- read-keyword
[^not-native reader initch opts pending-forms]
(let [ch (read-char reader)]
(if-not (whitespace? ch)
(let [token (read-token reader :keyword ch)
^not-native s (parse-symbol token)]
(if-not (nil? s)
(let [ns (-nth s 0)
name (-nth s 1)]
(if (identical? \: (.charAt token 0))
(if-not (nil? ns)
(if-let [ns (resolve-alias (symbol (subs ns 1)))]
(keyword (str ns) name)
(err/throw-invalid reader :keyword (str \: token)))
(if-let [ns *ns*]
(keyword (str ns) (subs name 1))
(err/reader-error reader "Invalid token: :" token)))
(keyword ns name)))
(err/throw-invalid reader :keyword (str \: token))))
(err/throw-single-colon reader))))
(defn- wrapping-reader
"Returns a function which wraps a reader in a call to sym"
[sym]
(fn [rdr _ opts pending-forms]
(list sym (read* rdr true nil opts pending-forms))))
(defn- read-meta
"Read metadata and return the following object with the metadata applied"
[rdr _ opts pending-forms]
(log-source rdr
(let [[line column] (starting-line-col-info rdr)
m (desugar-meta (read* rdr true nil opts pending-forms))]
(when-not (map? m)
(err/throw-bad-metadata rdr m))
(let [o (read* rdr true nil opts pending-forms)]
(if (implements? IMeta o)
(let [m (if (and line (seq? o))
(assoc m :line line :column column)
m)]
(if (implements? IWithMeta o)
(with-meta o (merge (meta o) m))
(reset-meta! o m)))
(err/throw-bad-metadata-target rdr o))))))
(defn- read-set
[rdr _ opts pending-forms]
(let [[start-line start-column] (starting-line-col-info rdr)
;; subtract 1 from start-column so it includes the # in the leading #{
start-column (if start-column (int (dec start-column)))
coll (read-delimited :set \} rdr opts pending-forms)
the-set (set coll)
[end-line end-column] (ending-line-col-info rdr)]
(when-not (= (count coll) (count the-set))
(err/reader-error rdr (err/throw-dup-keys rdr :set coll)))
(with-meta the-set
(when start-line
(merge
(when-let [file (get-file-name rdr)]
{:file file})
{:line start-line
:column start-column
:end-line end-line
:end-column end-column})))))
(defn- read-discard
"Read and discard the first object from rdr"
[rdr _ opts pending-forms]
(doto rdr
(read* true nil opts pending-forms)))
(defn- read-symbolic-value
[rdr _ opts pending-forms]
(let [sym (read* rdr true nil opts pending-forms)]
(case sym
NaN js/Number.NaN
-Inf js/Number.NEGATIVE_INFINITY
Inf js/Number.POSITIVE_INFINITY
(err/reader-error rdr (str "Invalid token: ##" sym)))))
(def ^:private RESERVED_FEATURES #{:else :none})
(defn- has-feature?
[rdr feature opts]
(if (keyword? feature)
(or (= :default feature) (contains? (get opts :features) feature))
(err/reader-error rdr "Feature should be a keyword: " feature)))
(defn- check-eof-error
[form rdr first-line]
(when (identical? form READ_EOF)
(err/throw-eof-error rdr (and (< first-line 0) first-line))))
(defn- check-reserved-features
[rdr form]
(when (get RESERVED_FEATURES form)
(err/reader-error rdr "Feature name " form " is reserved")))
(defn- check-invalid-read-cond
[form rdr first-line]
(when (identical? form READ_FINISHED)
(if (< first-line 0)
(err/reader-error rdr "read-cond requires an even number of forms")
(err/reader-error rdr "read-cond starting on line " first-line " requires an even number of forms"))))
(defn- read-suppress
"Read next form and suppress. Return nil or READ_FINISHED."
[first-line rdr opts pending-forms]
(binding [*suppress-read* true]
(let [form (read* rdr false READ_EOF \) opts pending-forms)]
(check-eof-error form rdr first-line)
(when (identical? form READ_FINISHED)
READ_FINISHED))))
(defonce ^:private NO_MATCH (js/Object.))
(defn- match-feature
"Read next feature. If matched, read next form and return.
Otherwise, read and skip next form, returning READ_FINISHED or nil."
[first-line rdr opts pending-forms]
(let [feature (read* rdr false READ_EOF \) opts pending-forms)]
(check-eof-error feature rdr first-line)
(if (= feature READ_FINISHED)
READ_FINISHED
(do
(check-reserved-features rdr feature)
(if (has-feature? rdr feature opts)
;; feature matched, read selected form
(doto (read* rdr false READ_EOF \) opts pending-forms)
(check-eof-error rdr first-line)
(check-invalid-read-cond rdr first-line))
;; feature not matched, ignore next form
(or (read-suppress first-line rdr opts pending-forms)
NO_MATCH))))))
(defn- read-cond-delimited
[rdr splicing opts pending-forms]
(let [first-line (if (indexing-reader? rdr) (get-line-number rdr) -1)
result (loop [matched NO_MATCH
finished nil]
(cond
;; still looking for match, read feature+form
(identical? matched NO_MATCH)
(let [match (match-feature first-line rdr opts pending-forms)]
(if (identical? match READ_FINISHED)
READ_FINISHED
(recur match nil)))
;; found match, just read and ignore the rest
(not (identical? finished READ_FINISHED))
(recur matched (read-suppress first-line rdr opts pending-forms))
:else
matched))]
(if (identical? result READ_FINISHED)
rdr
(if splicing
(do
(if (implements? ISequential result)
(do
(garray/insertArrayAt pending-forms (to-array result) 0)
rdr)
(err/reader-error rdr "Spliced form list in read-cond-splicing must implement ISequential")))
result))))
(defn- read-cond
[^not-native rdr _ opts pending-forms]
(when (not (and opts (#{:allow :preserve} (:read-cond opts))))
(throw (ex-info "Conditional read not allowed"
{:type :runtime-exception})))
(if-let [ch (read-char rdr)]
(let [splicing (= ch \@)
ch (if splicing (read-char rdr) ch)]
(when splicing
(when-not *read-delim*
(err/reader-error rdr "cond-splice not in list")))
(if-let [ch (if (whitespace? ch) (read-past whitespace? rdr) ch)]
(if (not= ch \()
(throw (ex-info "read-cond body must be a list"
{:type :runtime-exception}))
(binding [*suppress-read* (or *suppress-read* (= :preserve (:read-cond opts)))]
(if *suppress-read*
(reader-conditional (read-list rdr ch opts pending-forms) splicing)
(read-cond-delimited rdr splicing opts pending-forms))))
(err/throw-eof-in-character rdr)))
(err/throw-eof-in-character rdr)))
(def ^:private ^:dynamic arg-env nil)
(defn- garg
"Get a symbol for an anonymous ?argument?"
[n]
(symbol (str (if (== -1 n) "rest" (str "p" n))
"__" (next-id) "#")))
(defn- read-fn
[rdr _ opts pending-forms]
(if arg-env
(throw (ex-info "Nested #()s are not allowed" {:type :illegal-state})))
(binding [arg-env (sorted-map)]
(let [form (read* (doto rdr (unread \()) true nil opts pending-forms) ;; this sets bindings
rargs (rseq arg-env)
args (if rargs
(let [higharg (key (first rargs))]
(let [args (loop [i 1 args (transient [])]
(if (> i higharg)
(persistent! args)
(recur (inc i) (conj! args (or (get arg-env i)
(garg i))))))
args (if (arg-env -1)
(conj args '& (arg-env -1))
args)]
args))
[])]
(list 'fn* args form))))
(defn- register-arg
"Registers an argument to the arg-env"
[n]
(if arg-env
(if-let [ret (arg-env n)]
ret
(let [g (garg n)]
(set! arg-env (assoc arg-env n g))
g))
(throw (ex-info "Arg literal not in #()"
{:type :illegal-state})))) ;; should never hit this
(declare read-symbol)
(defn- read-arg
[^not-native rdr pct opts pending-forms]
(if (nil? arg-env)
(read-symbol rdr pct)
(let [ch (peek-char rdr)]
(cond
(or (whitespace? ch)
(macro-terminating? ch)
(nil? ch))
(register-arg 1)
(= ch \&)
(do (read-char rdr)
(register-arg -1))
:else
(let [n (read* rdr true nil opts pending-forms)]
(if-not (integer? n)
(throw (ex-info "Arg literal must be %, %& or %integer"
{:type :illegal-state}))
(register-arg n)))))))
(def ^:private ^:dynamic gensym-env nil)
(defn- read-unquote
[^not-native rdr comma opts pending-forms]
(if-let [ch (peek-char rdr)]
(if (= \@ ch)
((wrapping-reader 'clojure.core/unquote-splicing) (doto rdr read-char) \@ opts pending-forms)
((wrapping-reader 'clojure.core/unquote) rdr \~ opts pending-forms))))
(declare syntax-quote*)
(defn- unquote-splicing? [form]
(and (seq? form)
(= (first form) 'clojure.core/unquote-splicing)))
(defn- unquote? [form]
(and (seq? form)
(= (first form) 'clojure.core/unquote)))
(defn- expand-list
"Expand a list by resolving its syntax quotes and unquotes"
[s]
(loop [s (seq s) r (transient [])]
(if s
(let [item (first s)
ret (conj! r
(cond
(unquote? item) (list 'clojure.core/list (second item))
(unquote-splicing? item) (second item)
:else (list 'clojure.core/list (syntax-quote* item))))]
(recur (next s) ret))
(seq (persistent! r)))))
(defn- flatten-map
"Flatten a map into a seq of alternate keys and values"
[form]
(loop [s (seq form) key-vals (transient [])]
(if s
(let [e (first s)]
(recur (next s) (-> key-vals
(conj! (key e))
(conj! (val e)))))
(seq (persistent! key-vals)))))
(defn- register-gensym [sym]
(if-not gensym-env
(throw (ex-info "Gensym literal not in syntax-quote"
{:type :illegal-state})))
(or (get gensym-env sym)
(let [gs (symbol (str (subs (name sym)
0 (dec (count (name sym))))
"__" (next-id) "__auto__"))]
(set! gensym-env (assoc gensym-env sym gs))
gs)))
(defn- add-meta [form ret]
(if (and (implements? IWithMeta form)
(seq (dissoc (meta form) :line :column :end-line :end-column :file :source)))
(list 'cljs.core/with-meta ret (syntax-quote* (meta form)))
ret))
(defn- syntax-quote-coll [type coll]
(let [res (list 'cljs.core/sequence
(cons 'cljs.core/concat
(expand-list coll)))]
(if type
(list 'cljs.core/apply type res)
res)))
(defn map-func
"Decide which map type to use, array-map if less than 16 elements"
[coll]
(if (>= (count coll) 16)
'cljs.core/hash-map
'cljs.core/array-map))
(defn bool? [x]
(or (instance? js/Boolean x)
(true? x)
(false? x)))
(defn ^:dynamic resolve-symbol
"Resolve a symbol s into its fully qualified namespace version"
[s]
(throw (ex-info "resolve-symbol is not implemented" {:sym s})))
(defn- syntax-quote* [form]
(->>
(cond
(special-symbol? form) (list 'quote form)
(symbol? form)
(list 'quote
(if (and (not (namespace form))
(gstring/endsWith (name form) "#"))
(register-gensym form)
(let [sym (str form)]
(if (gstring/endsWith sym ".")
(let [csym (symbol (subs sym 0 (dec (count sym))))]
(symbol (str (resolve-symbol csym) ".")))
(resolve-symbol form)))))
(unquote? form) (second form)
(unquote-splicing? form) (throw (ex-info "unquote-splice not in list"
{:type :illegal-state}))
(coll? form)
(cond
(implements? IRecord form) form
(map? form) (syntax-quote-coll (map-func form) (flatten-map form))
(vector? form) (list 'cljs.core/vec (syntax-quote-coll nil form))
(set? form) (syntax-quote-coll 'cljs.core/hash-set form)
(or (seq? form) (list? form))
(let [seq (seq form)]
(if seq
(syntax-quote-coll nil seq)
'(cljs.core/list)))
:else (throw (ex-info "Unknown Collection type"
{:type :unsupported-operation})))
(or (keyword? form)
(number? form)
(string? form)
(nil? form)
(bool? form)
(instance? js/RegExp form))
form
:else (list 'quote form))
(add-meta form)))
(defn- read-syntax-quote
[rdr backquote opts pending-forms]
(binding [gensym-env {}]
(-> (read* rdr true nil opts pending-forms)
syntax-quote*)))
(defn- read-namespaced-map
[rdr _ opts pending-forms]
(let [token (read-token rdr :namespaced-map (read-char rdr))]
(if-let [ns (cond
(= token ":")
(ns-name *ns*)
(= \: (first token))
(some-> token (subs 1) parse-symbol second' symbol resolve-ns)
:else
(some-> token parse-symbol second'))]
(let [ch (read-past whitespace? rdr)]
(if (identical? ch \{)
(let [items (read-delimited :namespaced-map \} rdr opts pending-forms)]
(when (odd? (count items))
(err/throw-odd-map rdr nil nil items))
(let [keys (namespace-keys (str ns) (take-nth 2 items))
vals (take-nth 2 (rest items))]
(when-not (= (count (set keys)) (count keys))
(err/throw-dup-keys rdr :namespaced-map keys))
(zipmap keys vals)))
(err/throw-ns-map-no-map rdr token)))
(err/throw-bad-ns rdr token))))
(defn- macros [ch]
(case ch
\" read-string*
\: read-keyword
\; read-comment
\' (wrapping-reader 'quote)
\@ (wrapping-reader 'clojure.core/deref)
\^ read-meta
\` read-syntax-quote
\~ read-unquote
\( read-list
\) read-unmatched-delimiter
\[ read-vector
\] read-unmatched-delimiter
\{ read-map
\} read-unmatched-delimiter
\\ read-char*
\% read-arg
\# read-dispatch
nil))
(defn- dispatch-macros [ch]
(case ch
\^ read-meta ;; deprecated
\' (wrapping-reader 'var)
\( read-fn
\{ read-set
\< (throwing-reader "Unreadable form")
\= (throwing-reader "read-eval not supported")
\" read-regex
\! read-comment
\_ read-discard
\? read-cond
\: read-namespaced-map
\# read-symbolic-value
nil))
(defn- read-tagged [^not-native rdr initch opts pending-forms]
(let [tag (read* rdr true nil opts pending-forms)]
(if-not (symbol? tag)
(err/throw-bad-reader-tag rdr tag))
(if *suppress-read*
(tagged-literal tag (read* rdr true nil opts pending-forms))
(if-let [f (or (*data-readers* tag)
(default-data-readers tag))]
(f (read* rdr true nil opts pending-forms))
(if-let [f *default-data-reader-fn*]
(f tag (read* rdr true nil opts pending-forms))
(err/throw-unknown-reader-tag rdr tag))))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Public API
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(def ^:dynamic *data-readers*
"Map from reader tag symbols to data reader Vars.
Reader tags without namespace qualifiers are reserved for Clojure.
This light version of tools.reader has no implementation for default
reader tags such as #inst and #uuid."
{})
(def ^:dynamic *default-data-reader-fn*
"When no data reader is found for a tag and *default-data-reader-fn*
is non-nil, it will be called with two arguments, the tag and the value.
If *default-data-reader-fn* is nil (the default value), an exception
will be thrown for the unknown tag."
nil)
(def ^:dynamic *suppress-read* false)
(def default-data-readers
"Default map of data reader functions provided by Clojure.
May be overridden by binding *data-readers*"
{})
(defn- read*-internal
[^not-native reader ^boolean eof-error? sentinel return-on opts pending-forms]
(loop []
(log-source reader
(if-not ^boolean (garray/isEmpty pending-forms)
(let [form (aget pending-forms 0)]
(garray/removeAt pending-forms 0)
form)
(let [ch (read-char reader)]
(cond
(whitespace? ch) (recur)
(nil? ch) (if eof-error? (err/throw-eof-error reader nil) sentinel)
(identical? ch return-on) READ_FINISHED
(number-literal? reader ch) (read-number reader ch)
:else (let [f (macros ch)]
(if-not (nil? f)
(let [res (f reader ch opts pending-forms)]
(if (identical? res reader)
(recur)
res))
(read-symbol reader ch)))))))))
(defn- read*
([reader eof-error? sentinel opts pending-forms]
(read* reader eof-error? sentinel nil opts pending-forms))
([^not-native reader eof-error? sentinel return-on opts pending-forms]
(try
(read*-internal reader eof-error? sentinel return-on opts pending-forms)
(catch js/Error e
(if (ex-info? e)
(let [d (ex-data e)]
(if (= :reader-exception (:type d))
(throw e)
(throw (ex-info (.-message e)
(merge {:type :reader-exception}
d
(if (indexing-reader? reader)
{:line (get-line-number reader)
:column (get-column-number reader)
:file (get-file-name reader)}))
e))))
(throw (ex-info (.-message e)
(merge {:type :reader-exception}
(if (indexing-reader? reader)
{:line (get-line-number reader)
:column (get-column-number reader)
:file (get-file-name reader)}))
e)))))))
(defn read
"Reads the first object from an IPushbackReader.
Returns the object read. If EOF, throws if eof-error? is true.
Otherwise returns sentinel. If no stream is providen, *in* will be used.
Opts is a persistent map with valid keys:
:read-cond - :allow to process reader conditionals, or
:preserve to keep all branches
:features - persistent set of feature keywords for reader conditionals
:eof - on eof, return value unless :eofthrow, then throw.
if not specified, will throw
To read data structures only, use clojure.tools.reader.edn/read
Note that the function signature of clojure.tools.reader/read and
clojure.tools.reader.edn/read is not the same for eof-handling"
{:arglists '([] [reader] [opts reader] [reader eof-error? eof-value])}
([reader] (read reader true nil))
([{eof :eof :as opts :or {eof :eofthrow}} reader] (read* reader (= eof :eofthrow) eof nil opts (to-array [])))
([reader eof-error? sentinel] (read* reader eof-error? sentinel nil {} (to-array []))))
(defn read-string
"Reads one object from the string s.
Returns nil when s is nil or empty.
To read data structures only, use clojure.tools.reader.edn/read-string
Note that the function signature of clojure.tools.reader/read-string and
clojure.tools.reader.edn/read-string is not the same for eof-handling"
([s]
(read-string {} s))
([opts s]
(when (and s (not (identical? s "")))
(read opts (string-push-back-reader s)))))
@@ -0,0 +1 @@
{:rename-macros {}, :renames {}, :externs {parseInt {}, isNaN {}, Error {}, String {fromCharCode {}}, Object {}, Number {NaN {}, NEGATIVE_INFINITY {}, POSITIVE_INFINITY {}}, Boolean {}, RegExp {}}, :use-macros {log-source cljs.tools.reader.reader-types}, :excludes #{char *suppress-read* *default-data-reader-fn* read default-data-readers *data-readers* read-line read-string}, :name cljs.tools.reader, :imports {StringBuffer goog.string.StringBuffer}, :requires {cljs.tools.reader.impl.commons cljs.tools.reader.impl.commons, gstring goog.string, goog.string goog.string, cljs.tools.reader.impl.errors cljs.tools.reader.impl.errors, garray goog.array, cljs.tools.reader.reader-types cljs.tools.reader.reader-types, err cljs.tools.reader.impl.errors, StringBuffer goog.string.StringBuffer, cljs.tools.reader.impl.utils cljs.tools.reader.impl.utils, goog.array goog.array}, :cljs.spec/speced-vars [], :uses {match-number cljs.tools.reader.impl.commons, reader-conditional cljs.tools.reader.impl.utils, whitespace? cljs.tools.reader.impl.utils, read-comment cljs.tools.reader.impl.commons, char cljs.tools.reader.impl.utils, numeric? cljs.tools.reader.impl.utils, ReaderConditional cljs.tools.reader.impl.utils, unread cljs.tools.reader.reader-types, peek-char cljs.tools.reader.reader-types, parse-symbol cljs.tools.reader.impl.commons, second' cljs.tools.reader.impl.utils, desugar-meta cljs.tools.reader.impl.utils, next-id cljs.tools.reader.impl.utils, number-literal? cljs.tools.reader.impl.commons, read-past cljs.tools.reader.impl.commons, indexing-reader? cljs.tools.reader.reader-types, read-char cljs.tools.reader.reader-types, get-column-number cljs.tools.reader.reader-types, ex-info? cljs.tools.reader.impl.utils, get-file-name cljs.tools.reader.reader-types, reader-conditional? cljs.tools.reader.impl.utils, throwing-reader cljs.tools.reader.impl.commons, string-push-back-reader cljs.tools.reader.reader-types, namespace-keys cljs.tools.reader.impl.utils, get-line-number cljs.tools.reader.reader-types}, :defs {NO_MATCH {:name cljs.tools.reader/NO_MATCH, :file "target/cljsbuild/public/js/out/cljs/tools/reader.cljs", :line 484, :column 1, :end-line 484, :end-column 28, :private true, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/cljs/tools/reader.cljs", :line 484, :column 20, :end-line 484, :end-column 28, :private true}, :tag object}, READ_EOF {:name cljs.tools.reader/READ_EOF, :file "target/cljsbuild/public/js/out/cljs/tools/reader.cljs", :line 197, :column 1, :end-line 197, :end-column 28, :private true, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/cljs/tools/reader.cljs", :line 197, :column 20, :end-line 197, :end-column 28, :private true}, :tag object}, unquote-splicing? {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/cljs/tools/reader.cljs", :line 633, :column 8, :end-line 633, :end-column 25, :private true, :arglists (quote ([form]))}, :private true, :name cljs.tools.reader/unquote-splicing?, :variadic false, :file "target/cljsbuild/public/js/out/cljs/tools/reader.cljs", :end-column 25, :method-params ([form]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 633, :end-line 633, :max-fixed-arity 1, :fn-var true, :arglists (quote ([form]))}, read-symbolic-value {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/cljs/tools/reader.cljs", :line 439, :column 8, :end-line 439, :end-column 27, :private true, :arglists (quote ([rdr _ opts pending-forms]))}, :private true, :name cljs.tools.reader/read-symbolic-value, :variadic false, :file "target/cljsbuild/public/js/out/cljs/tools/reader.cljs", :end-column 27, :method-params ([rdr _ opts pending-forms]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 439, :end-line 439, :max-fixed-arity 4, :fn-var true, :arglists (quote ([rdr _ opts pending-forms]))}, read-tagged {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/cljs/tools/reader.cljs", :line 824, :column 8, :end-line 824, :end-column 19, :private true, :arglists (quote ([rdr initch opts pending-forms]))}, :private true, :name cljs.tools.reader/read-tagged, :variadic false, :file "target/cljsbuild/public/js/out/cljs/tools/reader.cljs", :end-column 19, :method-params ([rdr initch opts pending-forms]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 824, :end-line 824, :max-fixed-arity 4, :fn-var true, :arglists (quote ([rdr initch opts pending-forms]))}, starting-line-col-info {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/cljs/tools/reader.cljs", :line 189, :column 8, :end-line 189, :end-column 30, :private true, :arglists (quote ([rdr]))}, :private true, :name cljs.tools.reader/starting-line-col-info, :variadic false, :file "target/cljsbuild/public/js/out/cljs/tools/reader.cljs", :end-column 30, :method-params ([rdr]), :pLine truncated
File diff suppressed because it is too large. Load diff
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"\/home\/didier\/clojupyter\/website\/target\/cljsbuild\/public\/js\/out\/cljs\/tools\/reader.js","sources":["reader.cljs?rel=1517021946754"],"lineCount":1759,"mappings":"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\/BAACwB,yBAAExB;AAJJ;;AAAA,GAKC,+BAAA,\/BAACwB,yBAAExB;AALJ;;AAAA,GAMC,+BAAA,\/BAACwB,yBAAExB;AANJ;;AAAA,GAOC,+BAAA,\/BAACwB,yBAAExB;AAPJ;;AAAA,GAQC,+BAAA,\/BAACwB,yBAAExB;AARJ;;AAAA,GASC,+BAAA,\/BAACwB,yBAAExB;AATJ;;AAAA,oBAWC,6BAAA,7BAACyB,uBAAmBzB;AACpB,IAAM0B,IAAE,oDAAA,IAAA,IAAA,5DAAC5B,8CAAkBE;IACrB2B,KAAG,aAAA,bAAaD;AADtB,AAEE,GAAI,CAAK,CAAGC,KAAGT,oCACN,CAAGS,KAAGR;AACb,OAACS,wEAAoC5D,IAAI0D;;AACzCA;;;AAjBL,oBAmBC,6BAAA,7BAACD,uBAAmBzB;AACpB,IAAM6B,MAAI,aAAA,ZAAKN;AAAf,AACE,GAAI,OAAA,NAAGM;AACL,OAACC,gEAA4B9D,IAAIgC;;AACjC,aAAA,TAAMC;WAAN,PACMT;IACAe,KAAG,AAACT,8CAAkBE,MAAMC,OAAO4B,IAAIrC;AAF7C,AAGE,GAAA,AAAAuC,wBAAQ,AAACX,+CAAa,AAACY,yBAAKhC,MAAMC,QAAQT;AACxC,OAACyC,+DAA2BjE;;AAC5BuC;;;;AA5BT,AA8BO,OAAC2B,oEAAgClE,IAAIgC;;;;;;;;;;;;AAC9C,OAACmC,+DAA2BnE;;;AAElC,2CAAA,3CAAOoE,8FAAoCpE;AAA3C,AACE,oBAAM,AAACqE,gEAAiBrE;AAAxB,AAAA,0FACG,AAACsE,yDAAgBtE,KAAK,2EAAA,1EAAK,mEAAA,lEAAK,AAACuE,2DAAkBvE;;AADtD;;;AAGF,yCAAA,zCAAOwE,0FAAkCxE;AAAzC,AACE,oBAAM,AAACqE,gEAAiBrE;AAAxB,AAAA,0FACG,AAACsE,yDAAgBtE,KAAK,AAACuE,2DAAkBvE;;AAD5C;;;AAGF,GAAA,OAAmByE;AAAnB;AAAA,AAAA,AAAmBA,6BAAS,KAAAC;;AAC5B,GAAA,OAAmBC;AAAnB;AAAA,AAAA,AAAmBA,kCAAc,KAAAD;;AAEjC,2CAAA,3CAAeE;AAEf,4CAAA,5CAAOC,gGAAyB5E,KAAK6E,MAAM9E,IAAIS,KAAKC;AAApD,AACE,IAAAqE,aAAgC,AAACX,mDAAuBpE;iBAAxD,AAAA0C,wBAAAqC,WAAA,IAAA,pDAAOC;mBAAP,AAAAtC,wBAAAqC,WAAA,IAAA,tDAAkBE;IACZH,YAAM,AAACI,6CAAKJ;AADlB,AAEE,IAAOK,IAAE,+BAAA,\/BAACC;;AAAV,AACE,IAAMC,OAAK,Line truncated
+448
View File
@@ -0,0 +1,448 @@
;; Copyright (c) Nicola Mometto, Rich Hickey & contributors.
;; The use and distribution terms for this software are covered by the
;; Eclipse Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php)
;; which can be found in the file epl-v10.html at the root of this distribution.
;; By using this software in any fashion, you are agreeing to be bound by
;; the terms of this license.
;; You must not remove this notice, or any other, from this software.
(ns ^{:doc "An EDN reader in clojure"
:author "Bronsa"}
cljs.tools.reader.edn
(:refer-clojure :exclude [read read-string char default-data-readers])
(:require [cljs.tools.reader.impl.errors :as err]
[cljs.tools.reader.reader-types :refer
[read-char unread peek-char indexing-reader?
get-line-number get-column-number get-file-name string-push-back-reader]]
[cljs.tools.reader.impl.utils :refer
[char ex-info? whitespace? numeric? desugar-meta namespace-keys second']]
[cljs.tools.reader.impl.commons :refer
[number-literal? read-past match-number parse-symbol read-comment throwing-reader]]
[cljs.tools.reader :refer [default-data-readers char-code]]
[goog.string :as gstring])
(:import goog.string.StringBuffer))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; helpers
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(declare read macros dispatch-macros)
(defn- ^boolean macro-terminating? [ch]
(and (not (identical? \# ch))
(not (identical? \' ch))
(not (identical? \: ch))
(macros ch)))
(defn- ^boolean not-constituent? [ch]
(or (identical? \@ ch)
(identical? \` ch)
(identical? \~ ch)))
(defn- read-token
([rdr kind initch]
(read-token rdr kind initch true))
([rdr kind initch validate-leading?]
(cond
(not initch)
(err/throw-eof-at-start rdr kind)
(and validate-leading?
(not-constituent? initch))
(err/throw-bad-char rdr kind initch)
:else
(loop [sb (StringBuffer.)
ch (do (unread rdr initch) initch)]
(if (or (whitespace? ch)
(macro-terminating? ch)
(nil? ch))
(str sb)
(if (not-constituent? ch)
(err/throw-bad-char rdr kind ch)
(recur (doto sb (.append (read-char rdr))) (peek-char rdr))))))))
(declare read-tagged)
(defn- read-dispatch
[rdr _ opts]
(if-let [ch (read-char rdr)]
(if-let [dm (dispatch-macros ch)]
(dm rdr ch opts)
(if-let [obj (read-tagged (doto rdr (unread ch)) ch opts)]
obj
(err/throw-no-dispatch rdr ch)))
(err/throw-eof-at-dispatch rdr)))
(defn- read-unmatched-delimiter
[rdr ch opts]
(err/throw-unmatch-delimiter rdr ch))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; readers
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defn- read-unicode-char
([token offset length base]
(let [l (+ offset length)]
(when-not (== (count token) l)
(err/throw-invalid-unicode-literal nil token))
(loop [i offset uc 0]
(if (== i l)
(js/String.fromCharCode uc)
(let [d (char-code (nth token i) base)]
(if (== d -1)
(err/throw-invalid-unicode-digit-in-token nil (nth token i) token)
(recur (inc i) (+ d (* uc base)))))))))
([rdr initch base length exact?]
(loop [i 1 uc (char-code initch base)]
(if (== uc -1)
(err/throw-invalid-unicode-digit rdr initch)
(if-not (== i length)
(let [ch (peek-char rdr)]
(if (or (whitespace? ch)
(macros ch)
(nil? ch))
(if exact?
(err/throw-invalid-unicode-len rdr i length)
(js/String.fromCharCode uc))
(let [d (char-code ch base)]
(read-char rdr)
(if (== d -1)
(err/throw-invalid-unicode-digit rdr ch)
(recur (inc i) (+ d (* uc base)))))))
(js/String.fromCharCode uc))))))
(def ^:private ^:const upper-limit (int \uD7ff))
(def ^:private ^:const lower-limit (int \uE000))
(defn- read-char*
[rdr backslash opts]
(let [ch (read-char rdr)]
(if-not (nil? ch)
(let [token (if (or (macro-terminating? ch)
(not-constituent? ch)
(whitespace? ch))
(str ch)
(read-token rdr :character ch false))
token-len (count token)]
(cond
(== 1 token-len) (nth token 0)
(identical? token "newline") \newline
(identical? token "space") \space
(identical? token "tab") \tab
(identical? token "backspace") \backspace
(identical? token "formfeed") \formfeed
(identical? token "return") \return
(gstring/startsWith token "u")
(let [c (read-unicode-char token 1 4 16)
ic (.charCodeAt c)]
(if (and (> ic upper-limit)
(< ic lower-limit))
(err/throw-invalid-character-literal rdr c)
c))
(gstring/startsWith token "o")
(let [len (dec token-len)]
(if (> len 3)
(err/throw-invalid-octal-len rdr token)
(let [uc (read-unicode-char token 1 len 8)]
(if (> (int uc) 0377)
(err/throw-bad-octal-number rdr)
uc))))
:else (err/throw-unsupported-character rdr token)))
(err/throw-eof-in-character rdr))))
(defn ^:private starting-line-col-info [rdr]
(when (indexing-reader? rdr)
[(get-line-number rdr) (int (dec (int (get-column-number rdr))))]))
(defn- read-delimited
[kind delim rdr opts]
(let [[start-line start-column] (starting-line-col-info rdr)
delim (char delim)]
(loop [a (transient [])]
(let [ch (read-past whitespace? rdr)]
(when-not ch
(err/throw-eof-delimited rdr kind start-line start-column (count a)))
(if (= delim (char ch))
(persistent! a)
(if-let [macrofn (macros ch)]
(let [mret (macrofn rdr ch opts)]
(recur (if-not (identical? mret rdr) (conj! a mret) a)))
(let [o (read (doto rdr (unread ch)) true nil opts)]
(recur (if-not (identical? o rdr) (conj! a o) a)))))))))
(defn- read-list
[rdr _ opts]
(let [the-list (read-delimited :list \) rdr opts)]
(if (empty? the-list)
'()
(apply list the-list))))
(defn- read-vector
[rdr _ opts]
(read-delimited :vector \] rdr opts))
(defn- read-map
[rdr _ opts]
(let [[start-line start-column] (starting-line-col-info rdr)
the-map (read-delimited :map \} rdr opts)
map-count (count the-map)
ks (take-nth 2 the-map)
key-set (set ks)]
(when (odd? map-count)
(err/throw-odd-map rdr start-line start-column the-map))
(when-not (= (count key-set) (count ks))
(err/throw-dup-keys rdr :map ks))
(if (<= map-count (* 2 (.-HASHMAP-THRESHOLD cljs.core/PersistentArrayMap)))
(.fromArray cljs.core/PersistentArrayMap (to-array the-map) true true)
(.fromArray cljs.core/PersistentHashMap (to-array the-map) true))))
(defn- read-number
[rdr initch opts]
(loop [sb (doto (StringBuffer.) (.append initch))
ch (read-char rdr)]
(if (or (whitespace? ch) (macros ch) (nil? ch))
(let [s (str sb)]
(unread rdr ch)
(or (match-number s)
(err/throw-invalid-number rdr s)))
(recur (doto sb (.append ch)) (read-char rdr)))))
(defn- escape-char [sb rdr]
(let [ch (read-char rdr)]
(case ch
\t "\t"
\r "\r"
\n "\n"
\\ "\\"
\" "\""
\b "\b"
\f "\f"
\u (let [ch (read-char rdr)]
(if (== -1 (js/parseInt (int ch) 16))
(err/throw-invalid-unicode-escape rdr ch)
(read-unicode-char rdr ch 16 4 true)))
(if (numeric? ch)
(let [ch (read-unicode-char rdr ch 8 3 false)]
(if (> (int ch) 0337)
(err/throw-bad-octal-number rdr)
ch))
(err/throw-bad-escape-char rdr ch)))))
(defn- read-string*
[rdr _ opts]
(loop [sb (StringBuffer.)
ch (read-char rdr)]
(case ch
nil (err/throw-eof-reading rdr :string \" sb)
\\ (recur (doto sb (.append (escape-char sb rdr)))
(read-char rdr))
\" (str sb)
(recur (doto sb (.append ch)) (read-char rdr)))))
(defn- read-symbol
[rdr initch]
(when-let [token (read-token rdr :symbol initch)]
(case token
;; special symbols
"nil" nil
"true" true
"false" false
"/" '/
(or (when-let [p (parse-symbol token)]
(symbol (p 0) (p 1)))
(err/throw-invalid rdr :symbol token)))))
(defn- read-keyword
[reader initch opts]
(let [ch (read-char reader)]
(if-not (whitespace? ch)
(let [token (read-token reader :keyword ch)
s (parse-symbol token)]
(if (and s (== -1 (.indexOf token "::")))
(let [ns (s 0)
name (s 1)]
(if (identical? \: (nth token 0))
(err/throw-invalid reader :keyword token) ;; no ::keyword in edn
(keyword ns name)))
(err/throw-invalid reader :keyword token)))
(err/throw-single-colon reader))))
(defn- wrapping-reader
[sym]
(fn [rdr _ opts]
(list sym (read rdr true nil opts))))
(defn- read-meta
[rdr _ opts]
(let [m (desugar-meta (read rdr true nil opts))]
(when-not (map? m)
(err/throw-bad-metadata rdr m))
(let [o (read rdr true nil opts)]
(if (implements? IMeta o)
(with-meta o (merge (meta o) m))
(err/throw-bad-metadata-target rdr o)))))
(defn- read-set
[rdr _ opts]
(let [coll (read-delimited :set \} rdr opts)
the-set (set coll)]
(when-not (= (count coll) (count the-set))
(err/throw-dup-keys rdr :set coll))
the-set))
(defn- read-discard
[rdr _ opts]
(doto rdr
(read true nil true)))
(defn- read-namespaced-map
[rdr _ opts]
(let [token (read-token rdr :namespaced-map (read-char rdr))]
(if-let [ns (some-> token parse-symbol second')]
(let [ch (read-past whitespace? rdr)]
(if (identical? ch \{)
(let [items (read-delimited :namespaced-map \} rdr opts)]
(when (odd? (count items))
(err/throw-odd-map rdr nil nil items))
(let [keys (namespace-keys (str ns) (take-nth 2 items))
vals (take-nth 2 (rest items))]
(when-not (= (count (set keys)) (count keys))
(err/throw-dup-keys rdr :namespaced-map keys))
(zipmap keys vals)))
(err/throw-ns-map-no-map rdr token)))
(err/throw-bad-ns rdr token))))
(defn- read-symbolic-value
[rdr _ opts]
(let [sym (read rdr true nil opts)]
(case sym
NaN js/Number.NaN
-Inf js/Number.NEGATIVE_INFINITY
Inf js/Number.POSITIVE_INFINITY
(err/reader-error rdr (str "Invalid token: ##" sym)))))
(defn- macros [ch]
(case ch
\" read-string*
\: read-keyword
\; read-comment
\^ read-meta
\( read-list
\) read-unmatched-delimiter
\[ read-vector
\] read-unmatched-delimiter
\{ read-map
\} read-unmatched-delimiter
\\ read-char*
\# read-dispatch
nil))
(defn- dispatch-macros [ch]
(case ch
\^ read-meta ;deprecated
\{ read-set
\< (throwing-reader "Unreadable form")
\! read-comment
\_ read-discard
\: read-namespaced-map
\# read-symbolic-value
nil))
(defn- read-tagged [rdr initch opts]
(let [tag (read rdr true nil opts)
object (read rdr true nil opts)]
(if-not (symbol? tag)
(err/throw-bad-reader-tag rdr "Reader tag must be a symbol"))
(if-let [f (or (get (:readers opts) tag)
(default-data-readers tag))]
(f object)
(if-let [d (:default opts)]
(d tag object)
(err/throw-unknown-reader-tag rdr tag)))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Public API
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defn read
"Reads the first object from an IPushbackReader.
Returns the object read. If EOF, throws if eof-error? is true otherwise returns eof.
If no reader is provided, *in* will be used.
Reads data in the edn format (subset of Clojure data):
http://edn-format.org
clojure.tools.reader.edn/read doesn't depend on dynamic Vars, all configuration
is done by passing an opt map.
opts is a map that can include the following keys:
:eof - value to return on end-of-file. When not supplied, eof throws an exception.
:readers - a map of tag symbols to data-reader functions to be considered before default-data-readers.
When not supplied, only the default-data-readers will be used.
:default - A function of two args, that will, if present and no reader is found for a tag,
be called with the tag and the value."
([reader] (read {} reader))
([{:keys [eof] :as opts} reader]
(let [eof-error? (not (contains? opts :eof))]
(read reader eof-error? eof opts)))
([reader eof-error? eof opts]
(try
(loop []
(let [ch (read-char reader)]
(cond
(whitespace? ch) (recur)
(nil? ch) (if eof-error? (err/throw-eof-error reader nil) eof)
(number-literal? reader ch) (read-number reader ch opts)
:else (let [f (macros ch)]
(if f
(let [res (f reader ch opts)]
(if (identical? res reader)
(recur)
res))
(read-symbol reader ch))))))
(catch js/Error e
(if (ex-info? e)
(let [d (ex-data e)]
(if (= :reader-exception (:type d))
(throw e)
(throw (ex-info (.-message e)
(merge {:type :reader-exception}
d
(if (indexing-reader? reader)
{:line (get-line-number reader)
:column (get-column-number reader)
:file (get-file-name reader)}))
e))))
(throw (ex-info (.-message e)
(merge {:type :reader-exception}
(if (indexing-reader? reader)
{:line (get-line-number reader)
:column (get-column-number reader)
:file (get-file-name reader)}))
e)))))))
(defn read-string
"Reads one object from the string s.
Returns nil when s is nil or empty.
Reads data in the edn format (subset of Clojure data):
http://edn-format.org
opts is a map as per clojure.tools.reader.edn/read"
([s] (read-string {:eof nil} s))
([opts s]
(when (and s (not= s ""))
(read opts (string-push-back-reader s)))))
@@ -0,0 +1 @@
{:rename-macros {}, :renames {}, :externs {Error {}, String {fromCharCode {}}, parseInt {}, Number {NaN {}, NEGATIVE_INFINITY {}, POSITIVE_INFINITY {}}}, :use-macros {}, :excludes #{char read default-data-readers read-string}, :name cljs.tools.reader.edn, :imports {StringBuffer goog.string.StringBuffer}, :requires {err cljs.tools.reader.impl.errors, cljs.tools.reader.impl.errors cljs.tools.reader.impl.errors, cljs.tools.reader.reader-types cljs.tools.reader.reader-types, cljs.tools.reader.impl.utils cljs.tools.reader.impl.utils, cljs.tools.reader.impl.commons cljs.tools.reader.impl.commons, cljs.tools.reader cljs.tools.reader, gstring goog.string, goog.string goog.string, StringBuffer goog.string.StringBuffer}, :cljs.spec/speced-vars [], :uses {match-number cljs.tools.reader.impl.commons, whitespace? cljs.tools.reader.impl.utils, read-comment cljs.tools.reader.impl.commons, char-code cljs.tools.reader, char cljs.tools.reader.impl.utils, numeric? cljs.tools.reader.impl.utils, unread cljs.tools.reader.reader-types, peek-char cljs.tools.reader.reader-types, parse-symbol cljs.tools.reader.impl.commons, second' cljs.tools.reader.impl.utils, desugar-meta cljs.tools.reader.impl.utils, default-data-readers cljs.tools.reader, number-literal? cljs.tools.reader.impl.commons, read-past cljs.tools.reader.impl.commons, indexing-reader? cljs.tools.reader.reader-types, read-char cljs.tools.reader.reader-types, get-column-number cljs.tools.reader.reader-types, ex-info? cljs.tools.reader.impl.utils, get-file-name cljs.tools.reader.reader-types, throwing-reader cljs.tools.reader.impl.commons, string-push-back-reader cljs.tools.reader.reader-types, namespace-keys cljs.tools.reader.impl.utils, get-line-number cljs.tools.reader.reader-types}, :defs {read-symbolic-value {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/cljs/tools/reader/edn.cljs", :line 326, :column 8, :end-line 326, :end-column 27, :private true, :arglists (quote ([rdr _ opts]))}, :private true, :name cljs.tools.reader.edn/read-symbolic-value, :variadic false, :file "target/cljsbuild/public/js/out/cljs/tools/reader/edn.cljs", :end-column 27, :method-params ([rdr _ opts]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 326, :end-line 326, :max-fixed-arity 3, :fn-var true, :arglists (quote ([rdr _ opts]))}, read-tagged {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/cljs/tools/reader/edn.cljs", :line 364, :column 8, :end-line 364, :end-column 19, :private true, :arglists (quote ([rdr initch opts]))}, :private true, :name cljs.tools.reader.edn/read-tagged, :variadic false, :file "target/cljsbuild/public/js/out/cljs/tools/reader/edn.cljs", :end-column 19, :method-params ([rdr initch opts]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 364, :end-line 364, :max-fixed-arity 3, :fn-var true, :arglists (quote ([rdr initch opts]))}, starting-line-col-info {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/cljs/tools/reader/edn.cljs", :line 161, :column 17, :end-line 161, :end-column 39, :private true, :arglists (quote ([rdr]))}, :private true, :name cljs.tools.reader.edn/starting-line-col-info, :variadic false, :file "target/cljsbuild/public/js/out/cljs/tools/reader/edn.cljs", :end-column 39, :method-params ([rdr]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 161, :end-line 161, :max-fixed-arity 1, :fn-var true, :arglists (quote ([rdr]))}, wrapping-reader {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/cljs/tools/reader/edn.cljs", :line 281, :column 8, :end-line 281, :end-column 23, :private true, :arglists (quote ([sym]))}, :private true, :name cljs.tools.reader.edn/wrapping-reader, :variadic false, :file "target/cljsbuild/public/js/out/cljs/tools/reader/edn.cljs", :end-column 23, :method-params ([sym]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 281, :end-line 281, :max-fixed-arity 1, :fn-var true, :arglists (quote ([sym]))}, read-meta {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/cljs/tools/reader/edn.cljs", :line 286, :column 8, :end-line 286, :end-column 17, :private true, :arglists (quote ([rdr _ opts]))}, :private true, :name cljs.tools.reader.edn/read-meta, :variadic false, :file "target/cljsbuild/public/js/out/cljs/tools/reader/edn.cljs", :end-column 17, :method-params ([rdr _ opts]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 286, :end-line 286, :max-fixed-arity 3, :fn-var true, :arglists (quote ([rdr _ opts]))}, read-unicode-char {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/cljs/tools/reader/edn.cljs", :line 85, :column 8, :end-line 85, :end-column 25, :private true, :arglists (quote ([token offset length base] [rdr initch base length exact?])), :top-fn {:variadiLine truncated
+936
View File
@@ -0,0 +1,936 @@
// Compiled by ClojureScript 1.9.946 {}
goog.provide('cljs.tools.reader.edn');
goog.require('cljs.core');
goog.require('cljs.tools.reader.impl.errors');
goog.require('cljs.tools.reader.reader_types');
goog.require('cljs.tools.reader.impl.utils');
goog.require('cljs.tools.reader.impl.commons');
goog.require('cljs.tools.reader');
goog.require('goog.string');
goog.require('goog.string.StringBuffer');
cljs.tools.reader.edn.macro_terminating_QMARK_ = (function cljs$tools$reader$edn$macro_terminating_QMARK_(ch){
var and__35486__auto__ = !(("#" === ch));
if(and__35486__auto__){
var and__35486__auto____$1 = !(("'" === ch));
if(and__35486__auto____$1){
var and__35486__auto____$2 = !((":" === ch));
if(and__35486__auto____$2){
return cljs.tools.reader.edn.macros.call(null,ch);
} else {
return and__35486__auto____$2;
}
} else {
return and__35486__auto____$1;
}
} else {
return and__35486__auto__;
}
});
cljs.tools.reader.edn.not_constituent_QMARK_ = (function cljs$tools$reader$edn$not_constituent_QMARK_(ch){
return (("@" === ch)) || (("`" === ch)) || (("~" === ch));
});
cljs.tools.reader.edn.read_token = (function cljs$tools$reader$edn$read_token(var_args){
var G__44424 = arguments.length;
switch (G__44424) {
case 3:
return cljs.tools.reader.edn.read_token.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
break;
case 4:
return cljs.tools.reader.edn.read_token.cljs$core$IFn$_invoke$arity$4((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]));
break;
default:
throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
}
});
cljs.tools.reader.edn.read_token.cljs$core$IFn$_invoke$arity$3 = (function (rdr,kind,initch){
return cljs.tools.reader.edn.read_token.call(null,rdr,kind,initch,true);
});
cljs.tools.reader.edn.read_token.cljs$core$IFn$_invoke$arity$4 = (function (rdr,kind,initch,validate_leading_QMARK_){
if(cljs.core.not.call(null,initch)){
return cljs.tools.reader.impl.errors.throw_eof_at_start.call(null,rdr,kind);
} else {
if(cljs.core.truth_((function (){var and__35486__auto__ = validate_leading_QMARK_;
if(cljs.core.truth_(and__35486__auto__)){
return cljs.tools.reader.edn.not_constituent_QMARK_.call(null,initch);
} else {
return and__35486__auto__;
}
})())){
return cljs.tools.reader.impl.errors.throw_bad_char.call(null,rdr,kind,initch);
} else {
var sb = (new goog.string.StringBuffer());
var ch = (function (){
cljs.tools.reader.reader_types.unread.call(null,rdr,initch);
return initch;
})()
;
while(true){
if((cljs.tools.reader.impl.utils.whitespace_QMARK_.call(null,ch)) || (cljs.tools.reader.edn.macro_terminating_QMARK_.call(null,ch)) || ((ch == null))){
return [cljs.core.str.cljs$core$IFn$_invoke$arity$1(sb)].join('');
} else {
if(cljs.tools.reader.edn.not_constituent_QMARK_.call(null,ch)){
return cljs.tools.reader.impl.errors.throw_bad_char.call(null,rdr,kind,ch);
} else {
var G__44427 = (function (){var G__44425 = sb;
G__44425.append(cljs.tools.reader.reader_types.read_char.call(null,rdr));
return G__44425;
})();
var G__44428 = cljs.tools.reader.reader_types.peek_char.call(null,rdr);
sb = G__44427;
ch = G__44428;
continue;
}
}
break;
}
}
}
});
cljs.tools.reader.edn.read_token.cljs$lang$maxFixedArity = 4;
cljs.tools.reader.edn.read_dispatch = (function cljs$tools$reader$edn$read_dispatch(rdr,_,opts){
var temp__5455__auto__ = cljs.tools.reader.reader_types.read_char.call(null,rdr);
if(cljs.core.truth_(temp__5455__auto__)){
var ch = temp__5455__auto__;
var temp__5455__auto____$1 = cljs.tools.reader.edn.dispatch_macros.call(null,ch);
if(cljs.core.truth_(temp__5455__auto____$1)){
var dm = temp__5455__auto____$1;
return dm.call(null,rdr,ch,opts);
} else {
var temp__5455__auto____$2 = cljs.tools.reader.edn.read_tagged.call(null,(function (){var G__44429 = rdr;
cljs.tools.reader.reader_types.unread.call(null,G__44429,ch);
return G__44429;
})(),ch,opts);
if(cljs.core.truth_(temp__5455__auto____$2)){
var obj = temp__5455__auto____$2;
return obj;
} else {
return cljs.tools.reader.impl.errors.throw_no_dispatch.call(null,rdr,ch);
}
}
} else {
return cljs.tools.reader.impl.errors.throw_eof_at_dispatch.call(null,rdr);
}
});
cljs.tools.reader.edn.read_unmatched_delimiter = (function cljs$tools$reader$edn$read_unmatched_delimiter(rdr,ch,opts){
return cljs.tools.reader.impl.errors.throw_unmatch_delimiter.call(null,rdr,ch);
});
cljs.tools.reader.edn.read_unicode_char = (function cljs$tools$reader$edn$read_unicode_char(var_args){
var G__44431 = arguments.length;
switch (G__44431) {
case 4:
return cljs.tools.reader.edn.read_unicode_char.cljs$core$IFn$_invoke$arity$4((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]));
break;
case 5:
return cljs.tools.reader.edn.read_unicode_char.cljs$core$IFn$_invoke$arity$5((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]));
break;
default:
throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
}
});
cljs.tools.reader.edn.read_unicode_char.cljs$core$IFn$_invoke$arity$4 = (function (token,offset,length,base){
var l = (offset + length);
if((cljs.core.count.call(null,token) === l)){
} else {
cljs.tools.reader.impl.errors.throw_invalid_unicode_literal.call(null,null,token);
}
var i = offset;
var uc = (0);
while(true){
if((i === l)){
return String.fromCharCode(uc);
} else {
var d = cljs.tools.reader.char_code.call(null,cljs.core.nth.call(null,token,i),base);
if((d === (-1))){
return cljs.tools.reader.impl.errors.throw_invalid_unicode_digit_in_token.call(null,null,cljs.core.nth.call(null,token,i),token);
} else {
var G__44433 = (i + (1));
var G__44434 = (d + (uc * base));
i = G__44433;
uc = G__44434;
continue;
}
}
break;
}
});
cljs.tools.reader.edn.read_unicode_char.cljs$core$IFn$_invoke$arity$5 = (function (rdr,initch,base,length,exact_QMARK_){
var i = (1);
var uc = cljs.tools.reader.char_code.call(null,initch,base);
while(true){
if((uc === (-1))){
return cljs.tools.reader.impl.errors.throw_invalid_unicode_digit.call(null,rdr,initch);
} else {
if(!((i === length))){
var ch = cljs.tools.reader.reader_types.peek_char.call(null,rdr);
if(cljs.core.truth_((function (){var or__35498__auto__ = cljs.tools.reader.impl.utils.whitespace_QMARK_.call(null,ch);
if(or__35498__auto__){
return or__35498__auto__;
} else {
var or__35498__auto____$1 = cljs.tools.reader.edn.macros.call(null,ch);
if(cljs.core.truth_(or__35498__auto____$1)){
return or__35498__auto____$1;
} else {
return (ch == null);
}
}
})())){
if(cljs.core.truth_(exact_QMARK_)){
return cljs.tools.reader.impl.errors.throw_invalid_unicode_len.call(null,rdr,i,length);
} else {
return String.fromCharCode(uc);
}
} else {
var d = cljs.tools.reader.char_code.call(null,ch,base);
cljs.tools.reader.reader_types.read_char.call(null,rdr);
if((d === (-1))){
return cljs.tools.reader.impl.errors.throw_invalid_unicode_digit.call(null,rdr,ch);
} else {
var G__44435 = (i + (1));
var G__44436 = (d + (uc * base));
i = G__44435;
uc = G__44436;
continue;
}
}
} else {
return String.fromCharCode(uc);
}
}
break;
}
});
cljs.tools.reader.edn.read_unicode_char.cljs$lang$maxFixedArity = 5;
cljs.tools.reader.edn.upper_limit = ("\uD7FF" | (0));
cljs.tools.reader.edn.lower_limit = ("\uE000" | (0));
cljs.tools.reader.edn.read_char_STAR_ = (function cljs$tools$reader$edn$read_char_STAR_(rdr,backslash,opts){
var ch = cljs.tools.reader.reader_types.read_char.call(null,rdr);
if(!((ch == null))){
var token = (((cljs.tools.reader.edn.macro_terminating_QMARK_.call(null,ch)) || (cljs.tools.reader.edn.not_constituent_QMARK_.call(null,ch)) || (cljs.tools.reader.impl.utils.whitespace_QMARK_.call(null,ch)))?[cljs.core.str.cljs$core$IFn$_invoke$arity$1(ch)].join(''):cljs.tools.reader.edn.read_token.call(null,rdr,new cljs.core.Keyword(null,"character","character",380652989),ch,false));
var token_len = cljs.core.count.call(null,token);
if(((1) === token_len)){
return cljs.core.nth.call(null,token,(0));
} else {
if((token === "newline")){
return "\n";
} else {
if((token === "space")){
return " ";
} else {
if((token === "tab")){
return "\t";
} else {
if((token === "backspace")){
return "\b";
} else {
if((token === "formfeed")){
return "\f";
} else {
if((token === "return")){
return "\r";
} else {
if(cljs.core.truth_(goog.string.startsWith(token,"u"))){
var c = cljs.tools.reader.edn.read_unicode_char.call(null,token,(1),(4),(16));
var ic = c.charCodeAt();
if(((ic > cljs.tools.reader.edn.upper_limit)) && ((ic < cljs.tools.reader.edn.lower_limit))){
return cljs.tools.reader.impl.errors.throw_invalid_character_literal.call(null,rdr,c);
} else {
return c;
}
} else {
if(cljs.core.truth_(goog.string.startsWith(token,"o"))){
var len = (token_len - (1));
if((len > (3))){
return cljs.tools.reader.impl.errors.throw_invalid_octal_len.call(null,rdr,token);
} else {
var uc = cljs.tools.reader.edn.read_unicode_char.call(null,token,(1),len,(8));
if(((uc | (0)) > (255))){
return cljs.tools.reader.impl.errors.throw_bad_octal_number.call(null,rdr);
} else {
return uc;
}
}
} else {
return cljs.tools.reader.impl.errors.throw_unsupported_character.call(null,rdr,token);
}
}
}
}
}
}
}
}
}
} else {
return cljs.tools.reader.impl.errors.throw_eof_in_character.call(null,rdr);
}
});
cljs.tools.reader.edn.starting_line_col_info = (function cljs$tools$reader$edn$starting_line_col_info(rdr){
if(cljs.core.truth_(cljs.tools.reader.reader_types.indexing_reader_QMARK_.call(null,rdr))){
return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.tools.reader.reader_types.get_line_number.call(null,rdr),(((cljs.tools.reader.reader_types.get_column_number.call(null,rdr) | (0)) - (1)) | (0))], null);
} else {
return null;
}
});
cljs.tools.reader.edn.read_delimited = (function cljs$tools$reader$edn$read_delimited(kind,delim,rdr,opts){
var vec__44437 = cljs.tools.reader.edn.starting_line_col_info.call(null,rdr);
var start_line = cljs.core.nth.call(null,vec__44437,(0),null);
var start_column = cljs.core.nth.call(null,vec__44437,(1),null);
var delim__$1 = cljs.tools.reader.impl.utils.char$.call(null,delim);
var a = cljs.core.transient$.call(null,cljs.core.PersistentVector.EMPTY);
while(true){
var ch = cljs.tools.reader.impl.commons.read_past.call(null,cljs.tools.reader.impl.utils.whitespace_QMARK_,rdr);
if(cljs.core.truth_(ch)){
} else {
cljs.tools.reader.impl.errors.throw_eof_delimited.call(null,rdr,kind,start_line,start_column,cljs.core.count.call(null,a));
}
if(cljs.core._EQ_.call(null,delim__$1,cljs.tools.reader.impl.utils.char$.call(null,ch))){
return cljs.core.persistent_BANG_.call(null,a);
} else {
var temp__5455__auto__ = cljs.tools.reader.edn.macros.call(null,ch);
if(cljs.core.truth_(temp__5455__auto__)){
var macrofn = temp__5455__auto__;
var mret = macrofn.call(null,rdr,ch,opts);
var G__44441 = ((!((mret === rdr)))?cljs.core.conj_BANG_.call(null,a,mret):a);
a = G__44441;
continue;
} else {
var o = cljs.tools.reader.edn.read.call(null,(function (){var G__44440 = rdr;
cljs.tools.reader.reader_types.unread.call(null,G__44440,ch);
return G__44440;
})(),true,null,opts);
var G__44442 = ((!((o === rdr)))?cljs.core.conj_BANG_.call(null,a,o):a);
a = G__44442;
continue;
}
}
break;
}
});
cljs.tools.reader.edn.read_list = (function cljs$tools$reader$edn$read_list(rdr,_,opts){
var the_list = cljs.tools.reader.edn.read_delimited.call(null,new cljs.core.Keyword(null,"list","list",765357683),")",rdr,opts);
if(cljs.core.empty_QMARK_.call(null,the_list)){
return cljs.core.List.EMPTY;
} else {
return cljs.core.apply.call(null,cljs.core.list,the_list);
}
});
cljs.tools.reader.edn.read_vector = (function cljs$tools$reader$edn$read_vector(rdr,_,opts){
return cljs.tools.reader.edn.read_delimited.call(null,new cljs.core.Keyword(null,"vector","vector",1902966158),"]",rdr,opts);
});
cljs.tools.reader.edn.read_map = (function cljs$tools$reader$edn$read_map(rdr,_,opts){
var vec__44443 = cljs.tools.reader.edn.starting_line_col_info.call(null,rdr);
var start_line = cljs.core.nth.call(null,vec__44443,(0),null);
var start_column = cljs.core.nth.call(null,vec__44443,(1),null);
var the_map = cljs.tools.reader.edn.read_delimited.call(null,new cljs.core.Keyword(null,"map","map",1371690461),"}",rdr,opts);
var map_count = cljs.core.count.call(null,the_map);
var ks = cljs.core.take_nth.call(null,(2),the_map);
var key_set = cljs.core.set.call(null,ks);
if(cljs.core.odd_QMARK_.call(null,map_count)){
cljs.tools.reader.impl.errors.throw_odd_map.call(null,rdr,start_line,start_column,the_map);
} else {
}
if(cljs.core._EQ_.call(null,cljs.core.count.call(null,key_set),cljs.core.count.call(null,ks))){
} else {
cljs.tools.reader.impl.errors.throw_dup_keys.call(null,rdr,new cljs.core.Keyword(null,"map","map",1371690461),ks);
}
if((map_count <= ((2) * cljs.core.PersistentArrayMap.HASHMAP_THRESHOLD))){
return cljs.core.PersistentArrayMap.fromArray(cljs.core.to_array.call(null,the_map),true,true);
} else {
return cljs.core.PersistentHashMap.fromArray(cljs.core.to_array.call(null,the_map),true);
}
});
cljs.tools.reader.edn.read_number = (function cljs$tools$reader$edn$read_number(rdr,initch,opts){
var sb = (function (){var G__44446 = (new goog.string.StringBuffer());
G__44446.append(initch);
return G__44446;
})();
var ch = cljs.tools.reader.reader_types.read_char.call(null,rdr);
while(true){
if(cljs.core.truth_((function (){var or__35498__auto__ = cljs.tools.reader.impl.utils.whitespace_QMARK_.call(null,ch);
if(or__35498__auto__){
return or__35498__auto__;
} else {
var or__35498__auto____$1 = cljs.tools.reader.edn.macros.call(null,ch);
if(cljs.core.truth_(or__35498__auto____$1)){
return or__35498__auto____$1;
} else {
return (ch == null);
}
}
})())){
var s = [cljs.core.str.cljs$core$IFn$_invoke$arity$1(sb)].join('');
cljs.tools.reader.reader_types.unread.call(null,rdr,ch);
var or__35498__auto__ = cljs.tools.reader.impl.commons.match_number.call(null,s);
if(cljs.core.truth_(or__35498__auto__)){
return or__35498__auto__;
} else {
return cljs.tools.reader.impl.errors.throw_invalid_number.call(null,rdr,s);
}
} else {
var G__44448 = (function (){var G__44447 = sb;
G__44447.append(ch);
return G__44447;
})();
var G__44449 = cljs.tools.reader.reader_types.read_char.call(null,rdr);
sb = G__44448;
ch = G__44449;
continue;
}
break;
}
});
cljs.tools.reader.edn.escape_char = (function cljs$tools$reader$edn$escape_char(sb,rdr){
var ch = cljs.tools.reader.reader_types.read_char.call(null,rdr);
var G__44450 = ch;
switch (G__44450) {
case "t":
return "\t";
break;
case "r":
return "\r";
break;
case "n":
return "\n";
break;
case "\\":
return "\\";
break;
case "\"":
return "\"";
break;
case "b":
return "\b";
break;
case "f":
return "\f";
break;
case "u":
var ch__$1 = cljs.tools.reader.reader_types.read_char.call(null,rdr);
if(((-1) === parseInt((ch__$1 | (0)),(16)))){
return cljs.tools.reader.impl.errors.throw_invalid_unicode_escape.call(null,rdr,ch__$1);
} else {
return cljs.tools.reader.edn.read_unicode_char.call(null,rdr,ch__$1,(16),(4),true);
}
break;
default:
if(cljs.tools.reader.impl.utils.numeric_QMARK_.call(null,ch)){
var ch__$1 = cljs.tools.reader.edn.read_unicode_char.call(null,rdr,ch,(8),(3),false);
if(((ch__$1 | (0)) > (223))){
return cljs.tools.reader.impl.errors.throw_bad_octal_number.call(null,rdr);
} else {
return ch__$1;
}
} else {
return cljs.tools.reader.impl.errors.throw_bad_escape_char.call(null,rdr,ch);
}
}
});
cljs.tools.reader.edn.read_string_STAR_ = (function cljs$tools$reader$edn$read_string_STAR_(rdr,_,opts){
var sb = (new goog.string.StringBuffer());
var ch = cljs.tools.reader.reader_types.read_char.call(null,rdr);
while(true){
var G__44452 = ch;
if(cljs.core._EQ_.call(null,null,G__44452)){
return cljs.tools.reader.impl.errors.throw_eof_reading.call(null,rdr,new cljs.core.Keyword(null,"string","string",-1989541586),"\"",sb);
} else {
if(cljs.core._EQ_.call(null,"\\",G__44452)){
var G__44455 = (function (){var G__44453 = sb;
G__44453.append(cljs.tools.reader.edn.escape_char.call(null,sb,rdr));
return G__44453;
})();
var G__44456 = cljs.tools.reader.reader_types.read_char.call(null,rdr);
sb = G__44455;
ch = G__44456;
continue;
} else {
if(cljs.core._EQ_.call(null,"\"",G__44452)){
return [cljs.core.str.cljs$core$IFn$_invoke$arity$1(sb)].join('');
} else {
var G__44457 = (function (){var G__44454 = sb;
G__44454.append(ch);
return G__44454;
})();
var G__44458 = cljs.tools.reader.reader_types.read_char.call(null,rdr);
sb = G__44457;
ch = G__44458;
continue;
}
}
}
break;
}
});
cljs.tools.reader.edn.read_symbol = (function cljs$tools$reader$edn$read_symbol(rdr,initch){
var temp__5457__auto__ = cljs.tools.reader.edn.read_token.call(null,rdr,new cljs.core.Keyword(null,"symbol","symbol",-1038572696),initch);
if(cljs.core.truth_(temp__5457__auto__)){
var token = temp__5457__auto__;
var G__44459 = token;
switch (G__44459) {
case "nil":
return null;
break;
case "true":
return true;
break;
case "false":
return false;
break;
case "/":
return new cljs.core.Symbol(null,"/","/",-1371932971,null);
break;
default:
var or__35498__auto__ = (function (){var temp__5457__auto____$1 = cljs.tools.reader.impl.commons.parse_symbol.call(null,token);
if(cljs.core.truth_(temp__5457__auto____$1)){
var p = temp__5457__auto____$1;
return cljs.core.symbol.call(null,p.call(null,(0)),p.call(null,(1)));
} else {
return null;
}
})();
if(cljs.core.truth_(or__35498__auto__)){
return or__35498__auto__;
} else {
return cljs.tools.reader.impl.errors.throw_invalid.call(null,rdr,new cljs.core.Keyword(null,"symbol","symbol",-1038572696),token);
}
}
} else {
return null;
}
});
cljs.tools.reader.edn.read_keyword = (function cljs$tools$reader$edn$read_keyword(reader,initch,opts){
var ch = cljs.tools.reader.reader_types.read_char.call(null,reader);
if(!(cljs.tools.reader.impl.utils.whitespace_QMARK_.call(null,ch))){
var token = cljs.tools.reader.edn.read_token.call(null,reader,new cljs.core.Keyword(null,"keyword","keyword",811389747),ch);
var s = cljs.tools.reader.impl.commons.parse_symbol.call(null,token);
if(cljs.core.truth_((function (){var and__35486__auto__ = s;
if(cljs.core.truth_(and__35486__auto__)){
return ((-1) === token.indexOf("::"));
} else {
return and__35486__auto__;
}
})())){
var ns = s.call(null,(0));
var name = s.call(null,(1));
if((":" === cljs.core.nth.call(null,token,(0)))){
return cljs.tools.reader.impl.errors.throw_invalid.call(null,reader,new cljs.core.Keyword(null,"keyword","keyword",811389747),token);
} else {
return cljs.core.keyword.call(null,ns,name);
}
} else {
return cljs.tools.reader.impl.errors.throw_invalid.call(null,reader,new cljs.core.Keyword(null,"keyword","keyword",811389747),token);
}
} else {
return cljs.tools.reader.impl.errors.throw_single_colon.call(null,reader);
}
});
cljs.tools.reader.edn.wrapping_reader = (function cljs$tools$reader$edn$wrapping_reader(sym){
return (function (rdr,_,opts){
var x__36452__auto__ = sym;
return cljs.core._conj.call(null,(function (){var x__36452__auto____$1 = cljs.tools.reader.edn.read.call(null,rdr,true,null,opts);
return cljs.core._conj.call(null,cljs.core.List.EMPTY,x__36452__auto____$1);
})(),x__36452__auto__);
});
});
cljs.tools.reader.edn.read_meta = (function cljs$tools$reader$edn$read_meta(rdr,_,opts){
var m = cljs.tools.reader.impl.utils.desugar_meta.call(null,cljs.tools.reader.edn.read.call(null,rdr,true,null,opts));
if(cljs.core.map_QMARK_.call(null,m)){
} else {
cljs.tools.reader.impl.errors.throw_bad_metadata.call(null,rdr,m);
}
var o = cljs.tools.reader.edn.read.call(null,rdr,true,null,opts);
if(((!((o == null)))?((((o.cljs$lang$protocol_mask$partition0$ & (131072))) || ((cljs.core.PROTOCOL_SENTINEL === o.cljs$core$IMeta$)))?true:false):false)){
return cljs.core.with_meta.call(null,o,cljs.core.merge.call(null,cljs.core.meta.call(null,o),m));
} else {
return cljs.tools.reader.impl.errors.throw_bad_metadata_target.call(null,rdr,o);
}
});
cljs.tools.reader.edn.read_set = (function cljs$tools$reader$edn$read_set(rdr,_,opts){
var coll = cljs.tools.reader.edn.read_delimited.call(null,new cljs.core.Keyword(null,"set","set",304602554),"}",rdr,opts);
var the_set = cljs.core.set.call(null,coll);
if(cljs.core._EQ_.call(null,cljs.core.count.call(null,coll),cljs.core.count.call(null,the_set))){
} else {
cljs.tools.reader.impl.errors.throw_dup_keys.call(null,rdr,new cljs.core.Keyword(null,"set","set",304602554),coll);
}
return the_set;
});
cljs.tools.reader.edn.read_discard = (function cljs$tools$reader$edn$read_discard(rdr,_,opts){
var G__44462 = rdr;
cljs.tools.reader.edn.read.call(null,G__44462,true,null,true);
return G__44462;
});
cljs.tools.reader.edn.read_namespaced_map = (function cljs$tools$reader$edn$read_namespaced_map(rdr,_,opts){
var token = cljs.tools.reader.edn.read_token.call(null,rdr,new cljs.core.Keyword(null,"namespaced-map","namespaced-map",1235665380),cljs.tools.reader.reader_types.read_char.call(null,rdr));
var temp__5455__auto__ = (function (){var G__44463 = token;
var G__44463__$1 = (((G__44463 == null))?null:cljs.tools.reader.impl.commons.parse_symbol.call(null,G__44463));
if((G__44463__$1 == null)){
return null;
} else {
return cljs.tools.reader.impl.utils.second_SINGLEQUOTE_.call(null,G__44463__$1);
}
})();
if(cljs.core.truth_(temp__5455__auto__)){
var ns = temp__5455__auto__;
var ch = cljs.tools.reader.impl.commons.read_past.call(null,cljs.tools.reader.impl.utils.whitespace_QMARK_,rdr);
if((ch === "{")){
var items = cljs.tools.reader.edn.read_delimited.call(null,new cljs.core.Keyword(null,"namespaced-map","namespaced-map",1235665380),"}",rdr,opts);
if(cljs.core.odd_QMARK_.call(null,cljs.core.count.call(null,items))){
cljs.tools.reader.impl.errors.throw_odd_map.call(null,rdr,null,null,items);
} else {
}
var keys = cljs.tools.reader.impl.utils.namespace_keys.call(null,[cljs.core.str.cljs$core$IFn$_invoke$arity$1(ns)].join(''),cljs.core.take_nth.call(null,(2),items));
var vals = cljs.core.take_nth.call(null,(2),cljs.core.rest.call(null,items));
if(cljs.core._EQ_.call(null,cljs.core.count.call(null,cljs.core.set.call(null,keys)),cljs.core.count.call(null,keys))){
} else {
cljs.tools.reader.impl.errors.throw_dup_keys.call(null,rdr,new cljs.core.Keyword(null,"namespaced-map","namespaced-map",1235665380),keys);
}
return cljs.core.zipmap.call(null,keys,vals);
} else {
return cljs.tools.reader.impl.errors.throw_ns_map_no_map.call(null,rdr,token);
}
} else {
return cljs.tools.reader.impl.errors.throw_bad_ns.call(null,rdr,token);
}
});
cljs.tools.reader.edn.read_symbolic_value = (function cljs$tools$reader$edn$read_symbolic_value(rdr,_,opts){
var sym = cljs.tools.reader.edn.read.call(null,rdr,true,null,opts);
var G__44464 = sym;
if(cljs.core._EQ_.call(null,new cljs.core.Symbol(null,"NaN","NaN",666918153,null),G__44464)){
return Number.NaN;
} else {
if(cljs.core._EQ_.call(null,new cljs.core.Symbol(null,"-Inf","-Inf",-2123243689,null),G__44464)){
return Number.NEGATIVE_INFINITY;
} else {
if(cljs.core._EQ_.call(null,new cljs.core.Symbol(null,"Inf","Inf",647172781,null),G__44464)){
return Number.POSITIVE_INFINITY;
} else {
return cljs.tools.reader.impl.errors.reader_error.call(null,rdr,["Invalid token: ##",cljs.core.str.cljs$core$IFn$_invoke$arity$1(sym)].join(''));
}
}
}
});
cljs.tools.reader.edn.macros = (function cljs$tools$reader$edn$macros(ch){
var G__44465 = ch;
switch (G__44465) {
case "\"":
return cljs.tools.reader.edn.read_string_STAR_;
break;
case ":":
return cljs.tools.reader.edn.read_keyword;
break;
case ";":
return cljs.tools.reader.impl.commons.read_comment;
break;
case "^":
return cljs.tools.reader.edn.read_meta;
break;
case "(":
return cljs.tools.reader.edn.read_list;
break;
case ")":
return cljs.tools.reader.edn.read_unmatched_delimiter;
break;
case "[":
return cljs.tools.reader.edn.read_vector;
break;
case "]":
return cljs.tools.reader.edn.read_unmatched_delimiter;
break;
case "{":
return cljs.tools.reader.edn.read_map;
break;
case "}":
return cljs.tools.reader.edn.read_unmatched_delimiter;
break;
case "\\":
return cljs.tools.reader.edn.read_char_STAR_;
break;
case "#":
return cljs.tools.reader.edn.read_dispatch;
break;
default:
return null;
}
});
cljs.tools.reader.edn.dispatch_macros = (function cljs$tools$reader$edn$dispatch_macros(ch){
var G__44467 = ch;
switch (G__44467) {
case "^":
return cljs.tools.reader.edn.read_meta;
break;
case "{":
return cljs.tools.reader.edn.read_set;
break;
case "<":
return cljs.tools.reader.impl.commons.throwing_reader.call(null,"Unreadable form");
break;
case "!":
return cljs.tools.reader.impl.commons.read_comment;
break;
case "_":
return cljs.tools.reader.edn.read_discard;
break;
case ":":
return cljs.tools.reader.edn.read_namespaced_map;
break;
case "#":
return cljs.tools.reader.edn.read_symbolic_value;
break;
default:
return null;
}
});
cljs.tools.reader.edn.read_tagged = (function cljs$tools$reader$edn$read_tagged(rdr,initch,opts){
var tag = cljs.tools.reader.edn.read.call(null,rdr,true,null,opts);
var object = cljs.tools.reader.edn.read.call(null,rdr,true,null,opts);
if(!((tag instanceof cljs.core.Symbol))){
cljs.tools.reader.impl.errors.throw_bad_reader_tag.call(null,rdr,"Reader tag must be a symbol");
} else {
}
var temp__5455__auto__ = (function (){var or__35498__auto__ = cljs.core.get.call(null,new cljs.core.Keyword(null,"readers","readers",-2118263030).cljs$core$IFn$_invoke$arity$1(opts),tag);
if(cljs.core.truth_(or__35498__auto__)){
return or__35498__auto__;
} else {
return cljs.tools.reader.default_data_readers.call(null,tag);
}
})();
if(cljs.core.truth_(temp__5455__auto__)){
var f = temp__5455__auto__;
return f.call(null,object);
} else {
var temp__5455__auto____$1 = new cljs.core.Keyword(null,"default","default",-1987822328).cljs$core$IFn$_invoke$arity$1(opts);
if(cljs.core.truth_(temp__5455__auto____$1)){
var d = temp__5455__auto____$1;
return d.call(null,tag,object);
} else {
return cljs.tools.reader.impl.errors.throw_unknown_reader_tag.call(null,rdr,tag);
}
}
});
/**
* Reads the first object from an IPushbackReader.
* Returns the object read. If EOF, throws if eof-error? is true otherwise returns eof.
* If no reader is provided, *in* will be used.
*
* Reads data in the edn format (subset of Clojure data):
* http://edn-format.org
*
* clojure.tools.reader.edn/read doesn't depend on dynamic Vars, all configuration
* is done by passing an opt map.
*
* opts is a map that can include the following keys:
* :eof - value to return on end-of-file. When not supplied, eof throws an exception.
* :readers - a map of tag symbols to data-reader functions to be considered before default-data-readers.
* When not supplied, only the default-data-readers will be used.
* :default - A function of two args, that will, if present and no reader is found for a tag,
* be called with the tag and the value.
*/
cljs.tools.reader.edn.read = (function cljs$tools$reader$edn$read(var_args){
var G__44470 = arguments.length;
switch (G__44470) {
case 1:
return cljs.tools.reader.edn.read.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
break;
case 2:
return cljs.tools.reader.edn.read.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
break;
case 4:
return cljs.tools.reader.edn.read.cljs$core$IFn$_invoke$arity$4((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]));
break;
default:
throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
}
});
cljs.tools.reader.edn.read.cljs$core$IFn$_invoke$arity$1 = (function (reader){
return cljs.tools.reader.edn.read.call(null,cljs.core.PersistentArrayMap.EMPTY,reader);
});
cljs.tools.reader.edn.read.cljs$core$IFn$_invoke$arity$2 = (function (p__44471,reader){
var map__44472 = p__44471;
var map__44472__$1 = ((((!((map__44472 == null)))?((((map__44472.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__44472.cljs$core$ISeq$)))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__44472):map__44472);
var opts = map__44472__$1;
var eof = cljs.core.get.call(null,map__44472__$1,new cljs.core.Keyword(null,"eof","eof",-489063237));
var eof_error_QMARK_ = !(cljs.core.contains_QMARK_.call(null,opts,new cljs.core.Keyword(null,"eof","eof",-489063237)));
return cljs.tools.reader.edn.read.call(null,reader,eof_error_QMARK_,eof,opts);
});
cljs.tools.reader.edn.read.cljs$core$IFn$_invoke$arity$4 = (function (reader,eof_error_QMARK_,eof,opts){
try{while(true){
var ch = cljs.tools.reader.reader_types.read_char.call(null,reader);
if(cljs.tools.reader.impl.utils.whitespace_QMARK_.call(null,ch)){
continue;
} else {
if((ch == null)){
if(cljs.core.truth_(eof_error_QMARK_)){
return cljs.tools.reader.impl.errors.throw_eof_error.call(null,reader,null);
} else {
return eof;
}
} else {
if(cljs.tools.reader.impl.commons.number_literal_QMARK_.call(null,reader,ch)){
return cljs.tools.reader.edn.read_number.call(null,reader,ch,opts);
} else {
var f = cljs.tools.reader.edn.macros.call(null,ch);
if(cljs.core.truth_(f)){
var res = f.call(null,reader,ch,opts);
if((res === reader)){
continue;
} else {
return res;
}
} else {
return cljs.tools.reader.edn.read_symbol.call(null,reader,ch);
}
}
}
}
break;
}
}catch (e44474){if((e44474 instanceof Error)){
var e = e44474;
if(cljs.tools.reader.impl.utils.ex_info_QMARK_.call(null,e)){
var d = cljs.core.ex_data.call(null,e);
if(cljs.core._EQ_.call(null,new cljs.core.Keyword(null,"reader-exception","reader-exception",-1938323098),new cljs.core.Keyword(null,"type","type",1174270348).cljs$core$IFn$_invoke$arity$1(d))){
throw e;
} else {
throw cljs.core.ex_info.call(null,e.message,cljs.core.merge.call(null,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"type","type",1174270348),new cljs.core.Keyword(null,"reader-exception","reader-exception",-1938323098)], null),d,(cljs.core.truth_(cljs.tools.reader.reader_types.indexing_reader_QMARK_.call(null,reader))?new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"line","line",212345235),cljs.tools.reader.reader_types.get_line_number.call(null,reader),new cljs.core.Keyword(null,"column","column",2078222095),cljs.tools.reader.reader_types.get_column_number.call(null,reader),new cljs.core.Keyword(null,"file","file",-1269645878),cljs.tools.reader.reader_types.get_file_name.call(null,reader)], null):null)),e);
}
} else {
throw cljs.core.ex_info.call(null,e.message,cljs.core.merge.call(null,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"type","type",1174270348),new cljs.core.Keyword(null,"reader-exception","reader-exception",-1938323098)], null),(cljs.core.truth_(cljs.tools.reader.reader_types.indexing_reader_QMARK_.call(null,reader))?new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"line","line",212345235),cljs.tools.reader.reader_types.get_line_number.call(null,reader),new cljs.core.Keyword(null,"column","column",2078222095),cljs.tools.reader.reader_types.get_column_number.call(null,reader),new cljs.core.Keyword(null,"file","file",-1269645878),cljs.tools.reader.reader_types.get_file_name.call(null,reader)], null):null)),e);
}
} else {
throw e44474;
}
}});
cljs.tools.reader.edn.read.cljs$lang$maxFixedArity = 4;
/**
* Reads one object from the string s.
* Returns nil when s is nil or empty.
*
* Reads data in the edn format (subset of Clojure data):
* http://edn-format.org
*
* opts is a map as per clojure.tools.reader.edn/read
*/
cljs.tools.reader.edn.read_string = (function cljs$tools$reader$edn$read_string(var_args){
var G__44477 = arguments.length;
switch (G__44477) {
case 1:
return cljs.tools.reader.edn.read_string.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
break;
case 2:
return cljs.tools.reader.edn.read_string.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
break;
default:
throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
}
});
cljs.tools.reader.edn.read_string.cljs$core$IFn$_invoke$arity$1 = (function (s){
return cljs.tools.reader.edn.read_string.call(null,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"eof","eof",-489063237),null], null),s);
});
cljs.tools.reader.edn.read_string.cljs$core$IFn$_invoke$arity$2 = (function (opts,s){
if(cljs.core.truth_((function (){var and__35486__auto__ = s;
if(cljs.core.truth_(and__35486__auto__)){
return cljs.core.not_EQ_.call(null,s,"");
} else {
return and__35486__auto__;
}
})())){
return cljs.tools.reader.edn.read.call(null,opts,cljs.tools.reader.reader_types.string_push_back_reader.call(null,s));
} else {
return null;
}
});
cljs.tools.reader.edn.read_string.cljs$lang$maxFixedArity = 2;
//# sourceMappingURL=edn.js.map?rel=1517021946884
+1
View File
@@ -0,0 +1 @@
{"version":3,"file":"\/home\/didier\/clojupyter\/website\/target\/cljsbuild\/public\/js\/out\/cljs\/tools\/reader\/edn.js","sources":["edn.cljs?rel=1517021946888"],"lineCount":936,"mappings":";AAQA;;;;;;;;;AAoBA,AAAA;AAAA;AAAA,AAEA,iDAAA,jDAAgBA,0GAAoBC;AAApC,AACE,IAAAC,qBAAK,EAAK,CAAA,QAAeD;AAAzB,AAAA,GAAAC;AAAA,IAAAA,yBACK,EAAK,CAAA,QAAeD;AADzB,AAAA,GAAAC;AAAA,IAAAA,yBAEK,EAAK,CAAA,QAAeD;AAFzB,AAAA,GAAAC;AAGK,OAACC,uCAAOF;;AAHbC;;;AAAAA;;;AAAAA;;;AAKF,+CAAA,\/CAAgBE,sGAAkBH;AAAlC,AACE,QAAI,CAAA,QAAeA,SACf,CAAA,QAAeA,SACf,CAAA,QAAeA;;AAErB,AAAA,mCAAA,2CAAAI,9EAAOE;AAAP,AAAA,IAAAD,WAAA,AAAA;AAAA,AAAA,QAAAA;KAAA;AAAA,OAAAC,+DAAA,CAAA,UAAA,MAAA,CAAA,UAAA,MAAA,CAAA,UAAA;;;KAAA;AAAA,OAAAA,+DAAA,CAAA,UAAA,MAAA,CAAA,UAAA,MAAA,CAAA,UAAA,MAAA,CAAA,UAAA;;;;AAAA,MAAA,KAAAC,MAAA,CAAA,8DAAA,AAAA;;;;;AAAA,AAAA,iEAAA,jEAAOD,4EACHE,IAAIC,KAAKC;AADb,AAEK,kEAAA,3DAACJ,2CAAWE,IAAIC,KAAKC;;;AAF1B,AAAA,iEAAA,jEAAOJ,4EAGHE,IAAIC,KAAKC,OAAOC;AAHpB,AAIK,GACC,AAACC,wBAAIF;AACL,OAACG,2DAAuBL,IAAIC;;AAF7B,oBAIC,iBAAAR,qBAAKU;AAAL,AAAA,oBAAAV;AACK,OAACE,uDAAiBO;;AADvBT;;;AAEA,OAACa,uDAAmBN,IAAIC,KAAKC;;AAN9B,AASC,IAAOK,KAAG,KAAAC;IACHhB,KAAG;AAAI,AAACiB,gDAAOT,IAAIE;;AAAQA;;;;AADlC,AAEE,GAAI,CAAI,AAACQ,yDAAYlB,SACb,AAACD,yDAAmBC,SACpB,OAAA,NAAMA;AACZ,oDAAKe;;AACL,GAAI,AAACZ,uDAAiBH;AACpB,OAACc,uDAAmBN,IAAIC,KAAKT;;AAC7B,eAAO,iBAAAmB,WAAMJ;AAAN,AAAS,AAAAI,gBAAS,AAACC,mDAAUZ;;AAA7BW;;eAAoC,AAACE,mDAAUb;;;;;;;;;;;;;AArBlE,AAAA,2DAAA,3DAAOF;;AAAP,AAuBA,AAAA,AAEA,sCAAA,tCAAOgB,oFACJd,IAAIe,EAAEC;AADT,AAEE,IAAAC,qBAAY,AAACL,mDAAUZ;AAAvB,AAAA,oBAAAiB;AAAA,SAAAA,LAASzB;AAAT,AACE,IAAAyB,yBAAY,AAACE,gDAAgB3B;AAA7B,AAAA,oBAAAyB;AAAA,SAAAA,LAASC;AAAT,AACE,OAACA,aAAGlB,IAAIR,GAAGwB;;AACX,IAAAC,yBAAa,AAACI,4CAAY,iBAAAC,WAAMtB;AAAN,AAAU,gDAAAsB,hDAACb,yDAAOjB;;AAAlB8B;KAAuB9B,GAAGwB;AAApD,AAAA,oBAAAC;AAAA,UAAAA,NAASG;AAAT,AACEA;;AACA,OAACG,0DAAsBvB,IAAIR;;;;AAC\/B,OAACgC,8DAA0BxB;;;AAE\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 truncated
@@ -0,0 +1,131 @@
;; Copyright (c) Nicola Mometto, Rich Hickey & contributors.
;; The use and distribution terms for this software are covered by the
;; Eclipse Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php)
;; which can be found in the file epl-v10.html at the root of this distribution.
;; By using this software in any fashion, you are agreeing to be bound by
;; the terms of this license.
;; You must not remove this notice, or any other, from this software.
(ns cljs.tools.reader.impl.commons
(:refer-clojure :exclude [char])
(:require
[cljs.tools.reader.impl.errors :refer [reader-error]]
[cljs.tools.reader.reader-types :refer [peek-char read-char]]
[cljs.tools.reader.impl.utils :refer [numeric? newline? char]]))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; helpers
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defn ^boolean number-literal?
"Checks whether the reader is at the start of a number literal"
[^not-native reader initch]
(or (numeric? initch)
(and (or (identical? \+ initch) (identical? \- initch))
(numeric? (peek-char reader)))))
(defn read-past
"Read until first character that doesn't match pred, returning
char."
[pred ^not-native rdr]
(loop [ch (read-char rdr)]
(if ^boolean (pred ch)
(recur (read-char rdr))
ch)))
(defn skip-line
"Advances the reader to the end of a line. Returns the reader"
[^not-native reader]
(loop []
(when-not (newline? (read-char reader))
(recur)))
reader)
(def int-pattern #"^([-+]?)(?:(0)|([1-9][0-9]*)|0[xX]([0-9A-Fa-f]+)|0([0-7]+)|([1-9][0-9]?)[rR]([0-9A-Za-z]+)|0[0-9]+)(N)?$")
(def ratio-pattern #"([-+]?[0-9]+)/([0-9]+)")
(def float-pattern #"([-+]?[0-9]+(\.[0-9]*)?([eE][-+]?[0-9]+)?)(M)?")
(defn- match-int
[s]
(let [m (vec (re-find int-pattern s))]
(if-not (nil? (m 2))
0
(let [^boolean negate? (identical? "-" (m 1))
a (cond
(not (nil? (m 3))) [(m 3) 10]
(not (nil? (m 4))) [(m 4) 16]
(not (nil? (m 5))) [(m 5) 8]
(not (nil? (m 7))) [(m 7) (js/parseInt (m 6))]
:else [nil nil])
n (a 0)]
(when-not (nil? n)
(let [bn (js/parseInt n (a 1))
bn (if negate? (* -1 bn) bn)]
(when-not (js/isNaN bn)
bn)))))))
(defn- match-ratio
[s]
(let [m (vec (re-find ratio-pattern s))
numerator (m 1)
denominator (m 2)
numerator (if (re-find #"^\+" numerator)
(subs numerator 1)
numerator)]
(/ (-> numerator js/parseInt) ;;; No ratio type in cljs
(-> denominator js/parseInt)))); So will convert to js/Number
(defn- match-float
[s]
(let [m (vec (re-find float-pattern s))]
(if-not (nil? (m 4)) ;; for BigDecimal "10.03M", as all parsed to js/Number
(js/parseFloat (m 1))
(js/parseFloat s))))
(defn ^boolean matches? [pattern s]
(let [[match] (re-find pattern s)]
(identical? match s)))
(defn match-number [s]
(if (matches? int-pattern s)
(match-int s)
(if (matches? float-pattern s)
(match-float s)
(when (matches? ratio-pattern s)
(match-ratio s)))))
(defn parse-symbol
"Parses a string into a vector of the namespace and symbol"
[token]
(when-not (or (identical? "" token)
(true? (.test #":$" token))
(true? (.test #"^::" token)))
(let [ns-idx (.indexOf token "/")
ns (when (pos? ns-idx)
(subs token 0 ns-idx))]
(if-not (nil? ns)
(let [ns-idx (inc ns-idx)]
(when-not (== ns-idx (count token))
(let [sym (subs token ns-idx)]
(when (and (not (numeric? (nth sym 0)))
(not (identical? "" sym))
(false? (.test #":$" ns))
(or (identical? sym "/")
(== -1 (.indexOf sym "/"))))
[ns sym]))))
(when (or (identical? token "/")
(== -1 (.indexOf token "/")))
[nil token])))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; readers
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defn read-comment
[rdr & _]
(skip-line rdr))
(defn throwing-reader
[msg]
(fn [rdr & _]
(reader-error rdr msg)))
@@ -0,0 +1 @@
{:rename-macros {}, :renames {}, :externs {parseInt {}, isNaN {}, parseFloat {}}, :use-macros {}, :excludes #{char}, :name cljs.tools.reader.impl.commons, :imports nil, :requires {cljs.tools.reader.impl.errors cljs.tools.reader.impl.errors, cljs.tools.reader.reader-types cljs.tools.reader.reader-types, cljs.tools.reader.impl.utils cljs.tools.reader.impl.utils}, :cljs.spec/speced-vars [], :uses {char cljs.tools.reader.impl.utils, numeric? cljs.tools.reader.impl.utils, reader-error cljs.tools.reader.impl.errors, peek-char cljs.tools.reader.reader-types, read-char cljs.tools.reader.reader-types, newline? cljs.tools.reader.impl.utils}, :defs {match-number {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/cljs/tools/reader/impl/commons.cljs", :line 89, :column 7, :end-line 89, :end-column 19, :arglists (quote ([s]))}, :name cljs.tools.reader.impl.commons/match-number, :variadic false, :file "target/cljsbuild/public/js/out/cljs/tools/reader/impl/commons.cljs", :end-column 19, :method-params ([s]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 89, :end-line 89, :max-fixed-arity 1, :fn-var true, :arglists (quote ([s]))}, skip-line {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/cljs/tools/reader/impl/commons.cljs", :line 36, :column 7, :end-line 36, :end-column 16, :arglists (quote ([reader])), :doc "Advances the reader to the end of a line. Returns the reader"}, :name cljs.tools.reader.impl.commons/skip-line, :variadic false, :file "target/cljsbuild/public/js/out/cljs/tools/reader/impl/commons.cljs", :end-column 16, :method-params ([reader]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 36, :end-line 36, :max-fixed-arity 1, :fn-var true, :arglists (quote ([reader])), :doc "Advances the reader to the end of a line. Returns the reader"}, int-pattern {:name cljs.tools.reader.impl.commons/int-pattern, :file "target/cljsbuild/public/js/out/cljs/tools/reader/impl/commons.cljs", :line 44, :column 1, :end-line 44, :end-column 17, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/cljs/tools/reader/impl/commons.cljs", :line 44, :column 6, :end-line 44, :end-column 17}, :tag any}, read-comment {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/cljs/tools/reader/impl/commons.cljs", :line 124, :column 7, :end-line 124, :end-column 19, :arglists (quote ([rdr & _])), :top-fn {:variadic true, :max-fixed-arity 1, :method-params [(rdr _)], :arglists ([rdr & _]), :arglists-meta (nil)}}, :name cljs.tools.reader.impl.commons/read-comment, :variadic true, :file "target/cljsbuild/public/js/out/cljs/tools/reader/impl/commons.cljs", :end-column 19, :top-fn {:variadic true, :max-fixed-arity 1, :method-params [(rdr _)], :arglists ([rdr & _]), :arglists-meta (nil)}, :method-params [(rdr _)], :protocol-impl nil, :arglists-meta (nil), :column 1, :line 124, :end-line 124, :max-fixed-arity 1, :fn-var true, :arglists ([rdr & _])}, match-ratio {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/cljs/tools/reader/impl/commons.cljs", :line 67, :column 8, :end-line 67, :end-column 19, :private true, :arglists (quote ([s]))}, :private true, :name cljs.tools.reader.impl.commons/match-ratio, :variadic false, :file "target/cljsbuild/public/js/out/cljs/tools/reader/impl/commons.cljs", :end-column 19, :method-params ([s]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 67, :end-line 67, :max-fixed-arity 1, :fn-var true, :arglists (quote ([s]))}, match-int {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/cljs/tools/reader/impl/commons.cljs", :line 48, :column 8, :end-line 48, :end-column 17, :private true, :arglists (quote ([s]))}, :private true, :name cljs.tools.reader.impl.commons/match-int, :variadic false, :file "target/cljsbuild/public/js/out/cljs/tools/reader/impl/commons.cljs", :end-column 17, :method-params ([s]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 48, :end-line 48, :max-fixed-arity 1, :fn-var true, :arglists (quote ([s]))}, parse-symbol {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/cljs/tools/reader/impl/commons.cljs", :line 97, :column 7, :end-line 97, :end-column 19, :arglists (quote ([token])), :doc "Parses a string into a vector of the namespace and symbol"}, :name cljs.tools.reader.impl.commons/parse-symbol, :variadic false, :file "target/cljsbuild/public/js/out/cljs/tools/reader/impl/commons.cljs", :end-column 19, :method-params ([token]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 97, :end-line 97, :max-fixed-arity 1, :fn-var true, :arglists (quote ([token])), :doc "Parses a string into a vector of the namespace and symbol"}, number-literal? {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/clLine truncated
@@ -0,0 +1,191 @@
// Compiled by ClojureScript 1.9.946 {}
goog.provide('cljs.tools.reader.impl.commons');
goog.require('cljs.core');
goog.require('cljs.tools.reader.impl.errors');
goog.require('cljs.tools.reader.reader_types');
goog.require('cljs.tools.reader.impl.utils');
/**
* Checks whether the reader is at the start of a number literal
*/
cljs.tools.reader.impl.commons.number_literal_QMARK_ = (function cljs$tools$reader$impl$commons$number_literal_QMARK_(reader,initch){
return (cljs.tools.reader.impl.utils.numeric_QMARK_.call(null,initch)) || (((("+" === initch)) || (("-" === initch))) && (cljs.tools.reader.impl.utils.numeric_QMARK_.call(null,cljs.tools.reader.reader_types.peek_char.call(null,reader))));
});
/**
* Read until first character that doesn't match pred, returning
* char.
*/
cljs.tools.reader.impl.commons.read_past = (function cljs$tools$reader$impl$commons$read_past(pred,rdr){
var ch = cljs.tools.reader.reader_types.read_char.call(null,rdr);
while(true){
if(pred.call(null,ch)){
var G__44276 = cljs.tools.reader.reader_types.read_char.call(null,rdr);
ch = G__44276;
continue;
} else {
return ch;
}
break;
}
});
/**
* Advances the reader to the end of a line. Returns the reader
*/
cljs.tools.reader.impl.commons.skip_line = (function cljs$tools$reader$impl$commons$skip_line(reader){
while(true){
if(cljs.tools.reader.impl.utils.newline_QMARK_.call(null,cljs.tools.reader.reader_types.read_char.call(null,reader))){
} else {
continue;
}
break;
}
return reader;
});
cljs.tools.reader.impl.commons.int_pattern = /^([-+]?)(?:(0)|([1-9][0-9]*)|0[xX]([0-9A-Fa-f]+)|0([0-7]+)|([1-9][0-9]?)[rR]([0-9A-Za-z]+)|0[0-9]+)(N)?$/;
cljs.tools.reader.impl.commons.ratio_pattern = /([-+]?[0-9]+)\/([0-9]+)/;
cljs.tools.reader.impl.commons.float_pattern = /([-+]?[0-9]+(\.[0-9]*)?([eE][-+]?[0-9]+)?)(M)?/;
cljs.tools.reader.impl.commons.match_int = (function cljs$tools$reader$impl$commons$match_int(s){
var m = cljs.core.vec.call(null,cljs.core.re_find.call(null,cljs.tools.reader.impl.commons.int_pattern,s));
if(!((m.call(null,(2)) == null))){
return (0);
} else {
var negate_QMARK_ = ("-" === m.call(null,(1)));
var a = ((!((m.call(null,(3)) == null)))?new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [m.call(null,(3)),(10)], null):((!((m.call(null,(4)) == null)))?new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [m.call(null,(4)),(16)], null):((!((m.call(null,(5)) == null)))?new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [m.call(null,(5)),(8)], null):((!((m.call(null,(7)) == null)))?new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [m.call(null,(7)),parseInt(m.call(null,(6)))], null):new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [null,null], null)
))));
var n = a.call(null,(0));
if((n == null)){
return null;
} else {
var bn = parseInt(n,a.call(null,(1)));
var bn__$1 = ((negate_QMARK_)?((-1) * bn):bn);
if(cljs.core.truth_(isNaN(bn__$1))){
return null;
} else {
return bn__$1;
}
}
}
});
cljs.tools.reader.impl.commons.match_ratio = (function cljs$tools$reader$impl$commons$match_ratio(s){
var m = cljs.core.vec.call(null,cljs.core.re_find.call(null,cljs.tools.reader.impl.commons.ratio_pattern,s));
var numerator = m.call(null,(1));
var denominator = m.call(null,(2));
var numerator__$1 = (cljs.core.truth_(cljs.core.re_find.call(null,/^\+/,numerator))?cljs.core.subs.call(null,numerator,(1)):numerator);
return (parseInt(numerator__$1) / parseInt(denominator));
});
cljs.tools.reader.impl.commons.match_float = (function cljs$tools$reader$impl$commons$match_float(s){
var m = cljs.core.vec.call(null,cljs.core.re_find.call(null,cljs.tools.reader.impl.commons.float_pattern,s));
if(!((m.call(null,(4)) == null))){
return parseFloat(m.call(null,(1)));
} else {
return parseFloat(s);
}
});
cljs.tools.reader.impl.commons.matches_QMARK_ = (function cljs$tools$reader$impl$commons$matches_QMARK_(pattern,s){
var vec__44277 = cljs.core.re_find.call(null,pattern,s);
var match = cljs.core.nth.call(null,vec__44277,(0),null);
return (match === s);
});
cljs.tools.reader.impl.commons.match_number = (function cljs$tools$reader$impl$commons$match_number(s){
if(cljs.tools.reader.impl.commons.matches_QMARK_.call(null,cljs.tools.reader.impl.commons.int_pattern,s)){
return cljs.tools.reader.impl.commons.match_int.call(null,s);
} else {
if(cljs.tools.reader.impl.commons.matches_QMARK_.call(null,cljs.tools.reader.impl.commons.float_pattern,s)){
return cljs.tools.reader.impl.commons.match_float.call(null,s);
} else {
if(cljs.tools.reader.impl.commons.matches_QMARK_.call(null,cljs.tools.reader.impl.commons.ratio_pattern,s)){
return cljs.tools.reader.impl.commons.match_ratio.call(null,s);
} else {
return null;
}
}
}
});
/**
* Parses a string into a vector of the namespace and symbol
*/
cljs.tools.reader.impl.commons.parse_symbol = (function cljs$tools$reader$impl$commons$parse_symbol(token){
if((("" === token)) || (/:$/.test(token) === true) || (/^::/.test(token) === true)){
return null;
} else {
var ns_idx = token.indexOf("/");
var ns = (((ns_idx > (0)))?cljs.core.subs.call(null,token,(0),ns_idx):null);
if(!((ns == null))){
var ns_idx__$1 = (ns_idx + (1));
if((ns_idx__$1 === cljs.core.count.call(null,token))){
return null;
} else {
var sym = cljs.core.subs.call(null,token,ns_idx__$1);
if((!(cljs.tools.reader.impl.utils.numeric_QMARK_.call(null,cljs.core.nth.call(null,sym,(0))))) && (!(("" === sym))) && (/:$/.test(ns) === false) && (((sym === "/")) || (((-1) === sym.indexOf("/"))))){
return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [ns,sym], null);
} else {
return null;
}
}
} else {
if(((token === "/")) || (((-1) === token.indexOf("/")))){
return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [null,token], null);
} else {
return null;
}
}
}
});
cljs.tools.reader.impl.commons.read_comment = (function cljs$tools$reader$impl$commons$read_comment(var_args){
var args__36784__auto__ = [];
var len__36777__auto___44282 = arguments.length;
var i__36778__auto___44283 = (0);
while(true){
if((i__36778__auto___44283 < len__36777__auto___44282)){
args__36784__auto__.push((arguments[i__36778__auto___44283]));
var G__44284 = (i__36778__auto___44283 + (1));
i__36778__auto___44283 = G__44284;
continue;
} else {
}
break;
}
var argseq__36785__auto__ = ((((1) < args__36784__auto__.length))?(new cljs.core.IndexedSeq(args__36784__auto__.slice((1)),(0),null)):null);
return cljs.tools.reader.impl.commons.read_comment.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__36785__auto__);
});
cljs.tools.reader.impl.commons.read_comment.cljs$core$IFn$_invoke$arity$variadic = (function (rdr,_){
return cljs.tools.reader.impl.commons.skip_line.call(null,rdr);
});
cljs.tools.reader.impl.commons.read_comment.cljs$lang$maxFixedArity = (1);
cljs.tools.reader.impl.commons.read_comment.cljs$lang$applyTo = (function (seq44280){
var G__44281 = cljs.core.first.call(null,seq44280);
var seq44280__$1 = cljs.core.next.call(null,seq44280);
return cljs.tools.reader.impl.commons.read_comment.cljs$core$IFn$_invoke$arity$variadic(G__44281,seq44280__$1);
});
cljs.tools.reader.impl.commons.throwing_reader = (function cljs$tools$reader$impl$commons$throwing_reader(msg){
return (function() {
var G__44285__delegate = function (rdr,_){
return cljs.tools.reader.impl.errors.reader_error.call(null,rdr,msg);
};
var G__44285 = function (rdr,var_args){
var _ = null;
if (arguments.length > 1) {
var G__44286__i = 0, G__44286__a = new Array(arguments.length - 1);
while (G__44286__i < G__44286__a.length) {G__44286__a[G__44286__i] = arguments[G__44286__i + 1]; ++G__44286__i;}
_ = new cljs.core.IndexedSeq(G__44286__a,0,null);
}
return G__44285__delegate.call(this,rdr,_);};
G__44285.cljs$lang$maxFixedArity = 1;
G__44285.cljs$lang$applyTo = (function (arglist__44287){
var rdr = cljs.core.first(arglist__44287);
var _ = cljs.core.rest(arglist__44287);
return G__44285__delegate(rdr,_);
});
G__44285.cljs$core$IFn$_invoke$arity$variadic = G__44285__delegate;
return G__44285;
})()
;
});
//# sourceMappingURL=commons.js.map?rel=1517021946510
@@ -0,0 +1 @@
{"version":3,"file":"\/home\/didier\/clojupyter\/website\/target\/cljsbuild\/public\/js\/out\/cljs\/tools\/reader\/impl\/commons.js","sources":["commons.cljs?rel=1517021946511"],"lineCount":191,"mappings":";AAQA;;;;;AAWA;;;uDAAA,vDAAeA,sHAEAC,OAAOC;AAFtB,AAGE,QAAI,AAACC,sDAASD,aACV,CAAK,CAAI,CAAA,QAAeA,aAAQ,CAAA,QAAgBA,cAC3C,AAACC,sDAAS,AAACC,mDAAUH;;AAEhC;;;;2CAAA,3CAAMI,8FAGHC,KAAiBC;AAHpB,AAIE,IAAOC,KAAG,AAACC,mDAAUF;;AAArB,AACE,GAAI,AAAUD,eAAKE;AACjB,eAAO,AAACC,mDAAUF;;;;AAClBC;;;;;AAEN;;;2CAAA,3CAAME,8FAEST;AAFf,AAGE;AAAA,AACE,GAAU,AAACU,sDAAS,AAACF,mDAAUR;AAA\/B;AAAA,AACE;;;;;AACJA;;AAEF,6CAAA,7CAAKW;AACL,+CAAA,\/CAAKC;AACL,+CAAA,\/CAAKC;AAEL,2CAAA,3CAAOC,8FACJC;AADH,AAEE,IAAMC,IAAE,AAACC,wBAAI,AAACC,4BAAQP,2CAAYI;AAAlC,AACE,GAAA,EAAQ,qBAAA,pBAAM,YAAA,ZAACC;AAAf;;AAEE,IAAeG,gBAAQ,CAAA,QAAgB,YAAA,ZAACH;IAClCI,IAAE,iCAAA,oGAAA,aAAA,iCAAA,oGAAA,aAAA,iCAAA,oGAAA,YAAA,iCAAA,uIAAA,AAAA,mFAAA,KAAA,nrBACC,EAAK,qBAAA,pBAAM,YAAA,ZAACJ,+GAAQ,YAAA,ZAACA,gCACrB,EAAK,qBAAA,pBAAM,YAAA,ZAACA,+GAAQ,YAAA,ZAACA,gCACrB,EAAK,qBAAA,pBAAM,YAAA,ZAACA,+GAAQ,YAAA,ZAACA,+BACrB,EAAK,qBAAA,pBAAM,YAAA,ZAACA,+GAAQ,YAAA,ZAACA,iBAAK,AAACK,SAAY,YAAA,ZAACL;;IAE3CM,IAAE,YAAA,ZAACF;AAPT,AAQE,GAAU,MAAA,LAAME;AAAhB;;AAAA,AACE,IAAMC,KAAG,AAACF,SAAYC,EAAE,YAAA,ZAACF;IACnBG,SAAG,EAAIJ,eAAQ,CAAA,OAAMI,IAAIA;AAD\/B,AAEE,oBAAU,AAACC,MAASD;AAApB;;AAAA,AACEA;;;;;AAEd,6CAAA,7CAAOE,kGACJV;AADH,AAEE,IAAMC,IAAE,AAACC,wBAAI,AAACC,4BAAQN,6CAAcG;IAC9BW,YAAU,YAAA,ZAACV;IACXW,cAAY,YAAA,ZAACX;IACbU,gBAAU,kBAAI,4BAAA,5BAACR,kCAAeQ,YAClB,mCAAA,nCAACE,yBAAKF,eACNA;AALlB,AAME,QAAG,SAAIA,TAAYL,0BAChB,SAAIM,TAAYN;;AAEvB,6CAAA,7CAAOQ,kGACJd;AADH,AAEE,IAAMC,IAAE,AAACC,wBAAI,AAACC,4BAAQL,6CAAcE;AAApC,AACE,GAAA,EAAQ,qBAAA,pBAAM,YAAA,ZAACC;AACb,OAACc,WAAc,YAAA,ZAACd;;AAChB,OAACc,WAAcf;;;AAErB,gDAAA,hDAAegB,wGAAUC,QAAQjB;AAAjC,AACE,IAAAkB,aAAc,AAACf,4BAAQc,QAAQjB;YAA\/B,AAAAmB,wBAAAD,WAAA,IAAA,\/CAAOE;AAAP,AACE,QAAYA,UAAMpB;;AAEtB,8CAAA,9CAAMqB,oGAAcrB;AAApB,AACE,GAAI,AAACgB,wDAASpB,2CAAYI;AACxB,OAACD,mDAAUC;;AACX,GAAI,AAACgB,wDAASlB,6CAAcE;AAC1B,OAACc,qDAAYd;;AACb,GAAM,AAACgB,wDAASnB,6CAAcG;AAA9B,AACE,OAACU,qDAAYV;;AADf;;;;;AAGN;;;8CAAA,9CAAMsB,oGAEHC;AAFH,AAGE,GAAU,CAAI,CAAA,OAAeA,YACf,AAAO,AAAA,UAAaA,qBACpB,AAAO,AAAA,WAAcA;AAFnC;;AAAA,AAGE,IAAMC,SAAO,cAAA,dAAUD;IACjBE,KAAG,kBAAA,2CAAA,3DAAM,UAAA,TAAMD,eACV,+BAAA,\/BAACX,yBAAKU,UAAQC;AAFzB,AAGE,GAAA,EAAQ,OAAA,NAAMC;AACZ,IAAMD,aAAO,UAAA,TAAKA;AAAlB,AACE,GAAU,CAAIA,eAAO,AAACE,0BAAMH;AAA5B;;AAAA,AACE,IAAMI,MAAI,AAACd,yBAAKU,MAAMC;AAAtB,AACE,GAAM,CAAK,EAAK,AAACrC,sDAAS,4BAAA,5BAACgC,wBAAIQ,gBACpB,EAAK,CAAA,OAAeA,WACpB,AAAQ,AAAA,UAAaF,mBACrB,CAAI,SAAA,RAAYE,kBACZ,CAAA,SAAO,YAAA,ZAAUA;AAJhC,AAAA,0FAKGF,GAAGE;;AALN;;;;AAMN,GAAM,CAAI,WAAA,VAAYJ,oBACZ,CAAA,SAAO,cAAA,dAAUA;AAD3B,AAAA,0FAAA,KAEOA;;AAFP;;;;;AAQR,AAAA,8CAAA,sDAAAK,pGAAMM;AAAN,AAAA,IAAAL,sBAAA;AAAA,AAAA,IAAAC,2BAAA,AAAA;AAAA,AAAA,IAAAC,yBAAA;;AAAA,AAAA,GAAA,CAAAA,yBAAAD;AAAA,AAAA,AAAAD,yBAAA,CAAA,UAAAE;;AAAA,eAAA,CAAAA,yBAAA;;;;AAAA;;;;AAAA,IAAAC,wBAAA,EAAA,CAAA,MAAA,AAAAH,6BAAA,AAAA,KAAAI,qBAAA,AAAAJ,0BAAA,KAAA,IAAA,OAAA;AAAA,AAAA,OAAAK,iFAAA,CAAA,UAAA,MAAAF;;;AAAA,AAAA,AAAA,AAAAE,mFAAA,WACG3C,IAAMgD;AADT,AAEE,OAAC7C,mDAAUH;;;AAFb,AAAA,AAAA2C,sEAAA;;AAAA,AAAA,AAAAA,gEAAA,WAAAC;AAAA,AAAA,IAAAC,WAAA,AAAAC,0BAAAF;IAAAA,eAAA,AAAAG,yBAAAH;AAAA,AAAA,OAAAD,iFAAAE,SAAAD;;;AAAA,AAIA,iDAAA,jDAAMK,0GACHC;AADH,AAEE;mCAAKlD,IAAMgD;AAAX,AACE,OAACG,qDAAanD,IAAIkD;;yBADflD;IAAMgD;;;;EAAAA;;oCAANhD,IAAMgD;;;IAANhD;IAAMgD;0BAANhD,IAAMgD","names":["cljs.tools.reader.impl.commons\/number-literal?","reader","initch","cljs.tools.reader.impl.utils\/numeric?","cljs.tools.reader.reader-types\/peek-char","cljs.tools.reader.impl.commons\/read-past","pred","rdr","ch","cljs.tools.reader.reader-types\/read-char","cljs.tools.reader.impl.commons\/skip-line","cljs.tools.reader.impl.utils\/newline?","cljs.tools.reader.impl.commons\/int-pattern","cljs.tools.reader.impl.commons\/ratio-pattern","cljs.tools.reader.impl.commons\/float-pattern","cljs.tools.reader.impl.commons\/match-int","s","m","cljs.core\/vec","cljs.core\/re-find","negate?","a","js\/parseInt","n","bn","js\/isNaN","cljs.tools.reader.impl.commons\/match-ratio","numerator","denominator","cljs.core\/subs","cljs.tools.reader.impl.commons\/match-float","js\/parseFloat","cljs.tools.reader.impl.commons\/matches?","pattern","vec__44277","cljs.core\/nth","match","cljs.tools.reader.impl.commons\/match-number","cljs.tools.reader.impl.commons\/parse-symbol","token","ns-idx","ns","cljs.core\/count","sym","var_args","args__36784__auto__","len__36777__auto__","i__36778__auto__","argseq__36785__auto__","cljs.core\/IndexedSeq","cljs.tools.reader.impl.commons\/read-comment","seq44280","G__44281","cljs.core\/first","cljs.core\/next","_","cljs.tools.reader.impl.commons\/throwing-reader","msg","cljs.tools.reader.impl.errors\/reader-error"]}
@@ -0,0 +1,253 @@
;; Copyright (c) Russ Olsen, Nicola Mometto, Rich Hickey & contributors.
;; The use and distribution terms for this software are covered by the
;; Eclipse Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php)
;; which can be found in the file epl-v10.html at the root of this distribution.
;; By using this software in any fashion, you are agreeing to be bound by
;; the terms of this license.
;; You must not remove this notice, or any other, from this software.
(ns cljs.tools.reader.impl.errors
(:require [cljs.tools.reader.reader-types :as types]
[clojure.string :as s]
[cljs.tools.reader.impl.inspect :as i]))
(defn- ex-details
[rdr ex-type]
(let [details {:type :reader-exception
:ex-kind ex-type}]
(if (types/indexing-reader? rdr)
(assoc
details
:file (types/get-file-name rdr)
:line (types/get-line-number rdr)
:col (types/get-column-number rdr))
details)))
(defn- throw-ex
"Throw an ex-info error."
[rdr ex-type & msg]
(let [details (ex-details rdr ex-type)
file (:file details)
line (:line details)
col (:col details)
msg1 (if file (str file " "))
msg2 (if line (str "[line " line ", col " col "]"))
msg3 (if (or msg1 msg2) " ")
full-msg (apply str msg1 msg2 msg3 msg)]
(throw (ex-info full-msg details))))
(defn reader-error
"Throws an ExceptionInfo with the given message.
If rdr is an IndexingReader, additional information about column and line number is provided"
[rdr & msgs]
(throw-ex rdr :reader-error (apply str msgs)))
(defn illegal-arg-error
"Throws an ExceptionInfo with the given message.
If rdr is an IndexingReader, additional information about column and line number is provided"
[rdr & msgs]
(throw-ex rdr :illegal-argument (apply str msgs)))
(defn eof-error
"Throws an ExceptionInfo with the given message.
If rdr is an IndexingReader, additional information about column and line number is provided"
[rdr & msgs]
(throw-ex rdr :eof (apply str msgs)))
(defn throw-eof-delimited
([rdr kind column line] (throw-eof-delimited rdr kind line column nil))
([rdr kind line column n]
(eof-error
rdr
"Unexpected EOF while reading "
(if n
(str "item " n " of "))
(name kind)
(if line
(str ", starting at line " line " and column " column))
".")))
(defn throw-odd-map [rdr line col elements]
(reader-error
rdr
"The map literal starting with "
(i/inspect (first elements))
(if line (str " on line " line " column " col))
" contains "
(count elements)
" form(s). Map literals must contain an even number of forms."))
(defn throw-invalid-number [rdr token]
(reader-error
rdr
"Invalid number: "
token
"."))
(defn throw-invalid-unicode-literal [rdr token]
(throw
(illegal-arg-error
rdr
"Invalid unicode literal: \\"
token
".")))
(defn throw-invalid-unicode-escape [rdr ch]
(reader-error
rdr
"Invalid unicode escape: \\u"
ch
"."))
(defn throw-invalid [rdr kind token]
(reader-error rdr "Invalid " (name kind) ": " token "."))
(defn throw-eof-at-start [rdr kind]
(eof-error rdr "Unexpected EOF while reading start of " (name kind) "."))
(defn throw-bad-char [rdr kind ch]
(reader-error rdr "Invalid character: " ch " found while reading " (name kind) "."))
(defn throw-eof-at-dispatch [rdr]
(eof-error rdr "Unexpected EOF while reading dispatch character."))
(defn throw-bad-dispatch [rdr ch]
(reader-error rdr "No dispatch macro for " ch "."))
(defn throw-unmatch-delimiter [rdr ch]
(reader-error rdr "Unmatched delimiter " ch "."))
(defn throw-eof-reading [rdr kind & start]
(let [init (case kind :regex "#\"" :string \")]
(eof-error rdr "Unexpected EOF reading " (name kind) " starting " (apply str init start) ".")))
(defn throw-no-dispatch [rdr ch]
(throw-bad-dispatch rdr ch))
(defn throw-invalid-unicode-char[rdr token]
(reader-error
rdr
"Invalid unicode character \\"
token
"."))
(defn throw-invalid-unicode-digit-in-token[rdr ch token]
(illegal-arg-error
rdr
"Invalid digit "
ch
" in unicode character \\"
token
"."))
(defn throw-invalid-unicode-digit[rdr ch]
(illegal-arg-error
rdr
"Invalid digit "
ch
" in unicode character."))
(defn throw-invalid-unicode-len[rdr actual expected]
(illegal-arg-error
rdr
"Invalid unicode literal. Unicode literals should be "
expected
"characters long. "
"value suppled is "
actual
"characters long."))
(defn throw-invalid-character-literal[rdr token]
(reader-error rdr "Invalid character literal \\u" token "."))
(defn throw-invalid-octal-len[rdr token]
(reader-error
rdr
"Invalid octal escape sequence in a character literal:"
token
". Octal escape sequences must be 3 or fewer digits."))
(defn throw-bad-octal-number [rdr]
(reader-error rdr "Octal escape sequence must be in range [0, 377]."))
(defn throw-unsupported-character[rdr token]
(reader-error
rdr
"Unsupported character: "
token
"."))
(defn throw-eof-in-character [rdr]
(eof-error
rdr
"Unexpected EOF while reading character."))
(defn throw-bad-escape-char [rdr ch]
(reader-error rdr "Unsupported escape character: \\" ch "."))
(defn throw-single-colon [rdr]
(reader-error rdr "A single colon is not a valid keyword."))
(defn throw-bad-metadata [rdr x]
(reader-error
rdr
"Metadata cannot be "
(i/inspect x)
". Metadata must be a Symbol, Keyword, String or Map."))
(defn throw-bad-metadata-target [rdr target]
(reader-error
rdr
"Metadata can not be applied to "
(i/inspect target)
". "
"Metadata can only be applied to IMetas."))
(defn throw-feature-not-keyword [rdr feature]
(reader-error
rdr
"Feature cannot be "
(i/inspect feature)
" Features must be keywords."))
(defn throw-ns-map-no-map [rdr ns-name]
(reader-error rdr "Namespaced map with namespace " ns-name " does not specify a map."))
(defn throw-bad-ns [rdr ns-name]
(reader-error rdr "Invalid value used as namespace in namespaced map: " ns-name "."))
(defn throw-bad-reader-tag [rdr tag]
(reader-error
rdr
"Invalid reader tag: "
(i/inspect tag)
". Reader tags must be symbols."))
(defn throw-unknown-reader-tag [rdr tag]
(reader-error
rdr
"No reader function for tag "
(i/inspect tag)
"."))
(defn- duplicate-keys-error [msg coll]
(letfn [(duplicates [seq]
(for [[id freq] (frequencies seq)
:when (> freq 1)]
id))]
(let [dups (duplicates coll)]
(apply str msg
(when (> (count dups) 1) "s")
": " (interpose ", " dups)))))
(defn throw-dup-keys [rdr kind ks]
(reader-error
rdr
(duplicate-keys-error
(str (s/capitalize (name kind)) " literal contains duplicate key")
ks)))
(defn throw-eof-error [rdr line]
(if line
(eof-error rdr "EOF while reading, starting at line " line ".")
(eof-error rdr "EOF while reading.")))
@@ -0,0 +1 @@
{:rename-macros {}, :renames {}, :externs {Error {}}, :use-macros {}, :excludes #{}, :name cljs.tools.reader.impl.errors, :imports nil, :requires {types cljs.tools.reader.reader-types, cljs.tools.reader.reader-types cljs.tools.reader.reader-types, s clojure.string, clojure.string clojure.string, i cljs.tools.reader.impl.inspect, cljs.tools.reader.impl.inspect cljs.tools.reader.impl.inspect}, :cljs.spec/speced-vars [], :uses nil, :defs {throw-bad-dispatch {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/cljs/tools/reader/impl/errors.cljs", :line 114, :column 7, :end-line 114, :end-column 25, :arglists (quote ([rdr ch]))}, :name cljs.tools.reader.impl.errors/throw-bad-dispatch, :variadic false, :file "target/cljsbuild/public/js/out/cljs/tools/reader/impl/errors.cljs", :end-column 25, :method-params ([rdr ch]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 114, :end-line 114, :max-fixed-arity 2, :fn-var true, :arglists (quote ([rdr ch]))}, throw-invalid-unicode-escape {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/cljs/tools/reader/impl/errors.cljs", :line 95, :column 7, :end-line 95, :end-column 35, :arglists (quote ([rdr ch]))}, :name cljs.tools.reader.impl.errors/throw-invalid-unicode-escape, :variadic false, :file "target/cljsbuild/public/js/out/cljs/tools/reader/impl/errors.cljs", :end-column 35, :method-params ([rdr ch]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 95, :end-line 95, :max-fixed-arity 2, :fn-var true, :arglists (quote ([rdr ch]))}, throw-dup-keys {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/cljs/tools/reader/impl/errors.cljs", :line 243, :column 7, :end-line 243, :end-column 21, :arglists (quote ([rdr kind ks]))}, :name cljs.tools.reader.impl.errors/throw-dup-keys, :variadic false, :file "target/cljsbuild/public/js/out/cljs/tools/reader/impl/errors.cljs", :end-column 21, :method-params ([rdr kind ks]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 243, :end-line 243, :max-fixed-arity 3, :fn-var true, :arglists (quote ([rdr kind ks]))}, throw-bad-ns {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/cljs/tools/reader/impl/errors.cljs", :line 216, :column 7, :end-line 216, :end-column 19, :arglists (quote ([rdr ns-name]))}, :name cljs.tools.reader.impl.errors/throw-bad-ns, :variadic false, :file "target/cljsbuild/public/js/out/cljs/tools/reader/impl/errors.cljs", :end-column 19, :method-params ([rdr ns-name]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 216, :end-line 216, :max-fixed-arity 2, :fn-var true, :arglists (quote ([rdr ns-name]))}, duplicate-keys-error {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/cljs/tools/reader/impl/errors.cljs", :line 233, :column 8, :end-line 233, :end-column 28, :private true, :arglists (quote ([msg coll]))}, :private true, :name cljs.tools.reader.impl.errors/duplicate-keys-error, :variadic false, :file "target/cljsbuild/public/js/out/cljs/tools/reader/impl/errors.cljs", :end-column 28, :method-params ([msg coll]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 233, :end-line 233, :max-fixed-arity 2, :fn-var true, :arglists (quote ([msg coll]))}, throw-unknown-reader-tag {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/cljs/tools/reader/impl/errors.cljs", :line 226, :column 7, :end-line 226, :end-column 31, :arglists (quote ([rdr tag]))}, :name cljs.tools.reader.impl.errors/throw-unknown-reader-tag, :variadic false, :file "target/cljsbuild/public/js/out/cljs/tools/reader/impl/errors.cljs", :end-column 31, :method-params ([rdr tag]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 226, :end-line 226, :max-fixed-arity 2, :fn-var true, :arglists (quote ([rdr tag]))}, throw-eof-at-dispatch {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/cljs/tools/reader/impl/errors.cljs", :line 111, :column 7, :end-line 111, :end-column 28, :arglists (quote ([rdr]))}, :name cljs.tools.reader.impl.errors/throw-eof-at-dispatch, :variadic false, :file "target/cljsbuild/public/js/out/cljs/tools/reader/impl/errors.cljs", :end-column 28, :method-params ([rdr]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 111, :end-line 111, :max-fixed-arity 1, :fn-var true, :arglists (quote ([rdr]))}, throw-bad-metadata-target {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/cljs/tools/reader/impl/errors.cljs", :line 198, :column 7, :end-line 198, :end-column 32, :arglists (quote ([rdr target]))}, :name cljs.tools.reader.impl.errors/throw-bad-metadata-target, :variadic false, :file "target/cljsbuild/public/js/out/cljs/tools/reader/impl/errors.cljs", :end-column 32, :methoLine truncated
@@ -0,0 +1,413 @@
// Compiled by ClojureScript 1.9.946 {}
goog.provide('cljs.tools.reader.impl.errors');
goog.require('cljs.core');
goog.require('cljs.tools.reader.reader_types');
goog.require('clojure.string');
goog.require('cljs.tools.reader.impl.inspect');
cljs.tools.reader.impl.errors.ex_details = (function cljs$tools$reader$impl$errors$ex_details(rdr,ex_type){
var details = new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"type","type",1174270348),new cljs.core.Keyword(null,"reader-exception","reader-exception",-1938323098),new cljs.core.Keyword(null,"ex-kind","ex-kind",1581199296),ex_type], null);
if(cljs.core.truth_(cljs.tools.reader.reader_types.indexing_reader_QMARK_.call(null,rdr))){
return cljs.core.assoc.call(null,details,new cljs.core.Keyword(null,"file","file",-1269645878),cljs.tools.reader.reader_types.get_file_name.call(null,rdr),new cljs.core.Keyword(null,"line","line",212345235),cljs.tools.reader.reader_types.get_line_number.call(null,rdr),new cljs.core.Keyword(null,"col","col",-1959363084),cljs.tools.reader.reader_types.get_column_number.call(null,rdr));
} else {
return details;
}
});
/**
* Throw an ex-info error.
*/
cljs.tools.reader.impl.errors.throw_ex = (function cljs$tools$reader$impl$errors$throw_ex(var_args){
var args__36784__auto__ = [];
var len__36777__auto___44222 = arguments.length;
var i__36778__auto___44223 = (0);
while(true){
if((i__36778__auto___44223 < len__36777__auto___44222)){
args__36784__auto__.push((arguments[i__36778__auto___44223]));
var G__44224 = (i__36778__auto___44223 + (1));
i__36778__auto___44223 = G__44224;
continue;
} else {
}
break;
}
var argseq__36785__auto__ = ((((2) < args__36784__auto__.length))?(new cljs.core.IndexedSeq(args__36784__auto__.slice((2)),(0),null)):null);
return cljs.tools.reader.impl.errors.throw_ex.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__36785__auto__);
});
cljs.tools.reader.impl.errors.throw_ex.cljs$core$IFn$_invoke$arity$variadic = (function (rdr,ex_type,msg){
var details = cljs.tools.reader.impl.errors.ex_details.call(null,rdr,ex_type);
var file = new cljs.core.Keyword(null,"file","file",-1269645878).cljs$core$IFn$_invoke$arity$1(details);
var line = new cljs.core.Keyword(null,"line","line",212345235).cljs$core$IFn$_invoke$arity$1(details);
var col = new cljs.core.Keyword(null,"col","col",-1959363084).cljs$core$IFn$_invoke$arity$1(details);
var msg1 = (cljs.core.truth_(file)?[cljs.core.str.cljs$core$IFn$_invoke$arity$1(file)," "].join(''):null);
var msg2 = (cljs.core.truth_(line)?["[line ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(line),", col ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(col),"]"].join(''):null);
var msg3 = (cljs.core.truth_((function (){var or__35498__auto__ = msg1;
if(cljs.core.truth_(or__35498__auto__)){
return or__35498__auto__;
} else {
return msg2;
}
})())?" ":null);
var full_msg = cljs.core.apply.call(null,cljs.core.str,msg1,msg2,msg3,msg);
throw cljs.core.ex_info.call(null,full_msg,details);
});
cljs.tools.reader.impl.errors.throw_ex.cljs$lang$maxFixedArity = (2);
cljs.tools.reader.impl.errors.throw_ex.cljs$lang$applyTo = (function (seq44219){
var G__44220 = cljs.core.first.call(null,seq44219);
var seq44219__$1 = cljs.core.next.call(null,seq44219);
var G__44221 = cljs.core.first.call(null,seq44219__$1);
var seq44219__$2 = cljs.core.next.call(null,seq44219__$1);
return cljs.tools.reader.impl.errors.throw_ex.cljs$core$IFn$_invoke$arity$variadic(G__44220,G__44221,seq44219__$2);
});
/**
* Throws an ExceptionInfo with the given message.
* If rdr is an IndexingReader, additional information about column and line number is provided
*/
cljs.tools.reader.impl.errors.reader_error = (function cljs$tools$reader$impl$errors$reader_error(var_args){
var args__36784__auto__ = [];
var len__36777__auto___44227 = arguments.length;
var i__36778__auto___44228 = (0);
while(true){
if((i__36778__auto___44228 < len__36777__auto___44227)){
args__36784__auto__.push((arguments[i__36778__auto___44228]));
var G__44229 = (i__36778__auto___44228 + (1));
i__36778__auto___44228 = G__44229;
continue;
} else {
}
break;
}
var argseq__36785__auto__ = ((((1) < args__36784__auto__.length))?(new cljs.core.IndexedSeq(args__36784__auto__.slice((1)),(0),null)):null);
return cljs.tools.reader.impl.errors.reader_error.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__36785__auto__);
});
cljs.tools.reader.impl.errors.reader_error.cljs$core$IFn$_invoke$arity$variadic = (function (rdr,msgs){
return cljs.tools.reader.impl.errors.throw_ex.call(null,rdr,new cljs.core.Keyword(null,"reader-error","reader-error",1610253121),cljs.core.apply.call(null,cljs.core.str,msgs));
});
cljs.tools.reader.impl.errors.reader_error.cljs$lang$maxFixedArity = (1);
cljs.tools.reader.impl.errors.reader_error.cljs$lang$applyTo = (function (seq44225){
var G__44226 = cljs.core.first.call(null,seq44225);
var seq44225__$1 = cljs.core.next.call(null,seq44225);
return cljs.tools.reader.impl.errors.reader_error.cljs$core$IFn$_invoke$arity$variadic(G__44226,seq44225__$1);
});
/**
* Throws an ExceptionInfo with the given message.
* If rdr is an IndexingReader, additional information about column and line number is provided
*/
cljs.tools.reader.impl.errors.illegal_arg_error = (function cljs$tools$reader$impl$errors$illegal_arg_error(var_args){
var args__36784__auto__ = [];
var len__36777__auto___44232 = arguments.length;
var i__36778__auto___44233 = (0);
while(true){
if((i__36778__auto___44233 < len__36777__auto___44232)){
args__36784__auto__.push((arguments[i__36778__auto___44233]));
var G__44234 = (i__36778__auto___44233 + (1));
i__36778__auto___44233 = G__44234;
continue;
} else {
}
break;
}
var argseq__36785__auto__ = ((((1) < args__36784__auto__.length))?(new cljs.core.IndexedSeq(args__36784__auto__.slice((1)),(0),null)):null);
return cljs.tools.reader.impl.errors.illegal_arg_error.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__36785__auto__);
});
cljs.tools.reader.impl.errors.illegal_arg_error.cljs$core$IFn$_invoke$arity$variadic = (function (rdr,msgs){
return cljs.tools.reader.impl.errors.throw_ex.call(null,rdr,new cljs.core.Keyword(null,"illegal-argument","illegal-argument",-1845493170),cljs.core.apply.call(null,cljs.core.str,msgs));
});
cljs.tools.reader.impl.errors.illegal_arg_error.cljs$lang$maxFixedArity = (1);
cljs.tools.reader.impl.errors.illegal_arg_error.cljs$lang$applyTo = (function (seq44230){
var G__44231 = cljs.core.first.call(null,seq44230);
var seq44230__$1 = cljs.core.next.call(null,seq44230);
return cljs.tools.reader.impl.errors.illegal_arg_error.cljs$core$IFn$_invoke$arity$variadic(G__44231,seq44230__$1);
});
/**
* Throws an ExceptionInfo with the given message.
* If rdr is an IndexingReader, additional information about column and line number is provided
*/
cljs.tools.reader.impl.errors.eof_error = (function cljs$tools$reader$impl$errors$eof_error(var_args){
var args__36784__auto__ = [];
var len__36777__auto___44237 = arguments.length;
var i__36778__auto___44238 = (0);
while(true){
if((i__36778__auto___44238 < len__36777__auto___44237)){
args__36784__auto__.push((arguments[i__36778__auto___44238]));
var G__44239 = (i__36778__auto___44238 + (1));
i__36778__auto___44238 = G__44239;
continue;
} else {
}
break;
}
var argseq__36785__auto__ = ((((1) < args__36784__auto__.length))?(new cljs.core.IndexedSeq(args__36784__auto__.slice((1)),(0),null)):null);
return cljs.tools.reader.impl.errors.eof_error.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),argseq__36785__auto__);
});
cljs.tools.reader.impl.errors.eof_error.cljs$core$IFn$_invoke$arity$variadic = (function (rdr,msgs){
return cljs.tools.reader.impl.errors.throw_ex.call(null,rdr,new cljs.core.Keyword(null,"eof","eof",-489063237),cljs.core.apply.call(null,cljs.core.str,msgs));
});
cljs.tools.reader.impl.errors.eof_error.cljs$lang$maxFixedArity = (1);
cljs.tools.reader.impl.errors.eof_error.cljs$lang$applyTo = (function (seq44235){
var G__44236 = cljs.core.first.call(null,seq44235);
var seq44235__$1 = cljs.core.next.call(null,seq44235);
return cljs.tools.reader.impl.errors.eof_error.cljs$core$IFn$_invoke$arity$variadic(G__44236,seq44235__$1);
});
cljs.tools.reader.impl.errors.throw_eof_delimited = (function cljs$tools$reader$impl$errors$throw_eof_delimited(var_args){
var G__44241 = arguments.length;
switch (G__44241) {
case 4:
return cljs.tools.reader.impl.errors.throw_eof_delimited.cljs$core$IFn$_invoke$arity$4((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]));
break;
case 5:
return cljs.tools.reader.impl.errors.throw_eof_delimited.cljs$core$IFn$_invoke$arity$5((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]),(arguments[(4)]));
break;
default:
throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
}
});
cljs.tools.reader.impl.errors.throw_eof_delimited.cljs$core$IFn$_invoke$arity$4 = (function (rdr,kind,column,line){
return cljs.tools.reader.impl.errors.throw_eof_delimited.call(null,rdr,kind,line,column,null);
});
cljs.tools.reader.impl.errors.throw_eof_delimited.cljs$core$IFn$_invoke$arity$5 = (function (rdr,kind,line,column,n){
return cljs.tools.reader.impl.errors.eof_error.call(null,rdr,"Unexpected EOF while reading ",(cljs.core.truth_(n)?["item ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(n)," of "].join(''):null),cljs.core.name.call(null,kind),(cljs.core.truth_(line)?[", starting at line ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(line)," and column ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(column)].join(''):null),".");
});
cljs.tools.reader.impl.errors.throw_eof_delimited.cljs$lang$maxFixedArity = 5;
cljs.tools.reader.impl.errors.throw_odd_map = (function cljs$tools$reader$impl$errors$throw_odd_map(rdr,line,col,elements){
return cljs.tools.reader.impl.errors.reader_error.call(null,rdr,"The map literal starting with ",cljs.tools.reader.impl.inspect.inspect.call(null,cljs.core.first.call(null,elements)),(cljs.core.truth_(line)?[" on line ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(line)," column ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(col)].join(''):null)," contains ",cljs.core.count.call(null,elements)," form(s). Map literals must contain an even number of forms.");
});
cljs.tools.reader.impl.errors.throw_invalid_number = (function cljs$tools$reader$impl$errors$throw_invalid_number(rdr,token){
return cljs.tools.reader.impl.errors.reader_error.call(null,rdr,"Invalid number: ",token,".");
});
cljs.tools.reader.impl.errors.throw_invalid_unicode_literal = (function cljs$tools$reader$impl$errors$throw_invalid_unicode_literal(rdr,token){
throw cljs.tools.reader.impl.errors.illegal_arg_error.call(null,rdr,"Invalid unicode literal: \\",token,".");
});
cljs.tools.reader.impl.errors.throw_invalid_unicode_escape = (function cljs$tools$reader$impl$errors$throw_invalid_unicode_escape(rdr,ch){
return cljs.tools.reader.impl.errors.reader_error.call(null,rdr,"Invalid unicode escape: \\u",ch,".");
});
cljs.tools.reader.impl.errors.throw_invalid = (function cljs$tools$reader$impl$errors$throw_invalid(rdr,kind,token){
return cljs.tools.reader.impl.errors.reader_error.call(null,rdr,"Invalid ",cljs.core.name.call(null,kind),": ",token,".");
});
cljs.tools.reader.impl.errors.throw_eof_at_start = (function cljs$tools$reader$impl$errors$throw_eof_at_start(rdr,kind){
return cljs.tools.reader.impl.errors.eof_error.call(null,rdr,"Unexpected EOF while reading start of ",cljs.core.name.call(null,kind),".");
});
cljs.tools.reader.impl.errors.throw_bad_char = (function cljs$tools$reader$impl$errors$throw_bad_char(rdr,kind,ch){
return cljs.tools.reader.impl.errors.reader_error.call(null,rdr,"Invalid character: ",ch," found while reading ",cljs.core.name.call(null,kind),".");
});
cljs.tools.reader.impl.errors.throw_eof_at_dispatch = (function cljs$tools$reader$impl$errors$throw_eof_at_dispatch(rdr){
return cljs.tools.reader.impl.errors.eof_error.call(null,rdr,"Unexpected EOF while reading dispatch character.");
});
cljs.tools.reader.impl.errors.throw_bad_dispatch = (function cljs$tools$reader$impl$errors$throw_bad_dispatch(rdr,ch){
return cljs.tools.reader.impl.errors.reader_error.call(null,rdr,"No dispatch macro for ",ch,".");
});
cljs.tools.reader.impl.errors.throw_unmatch_delimiter = (function cljs$tools$reader$impl$errors$throw_unmatch_delimiter(rdr,ch){
return cljs.tools.reader.impl.errors.reader_error.call(null,rdr,"Unmatched delimiter ",ch,".");
});
cljs.tools.reader.impl.errors.throw_eof_reading = (function cljs$tools$reader$impl$errors$throw_eof_reading(var_args){
var args__36784__auto__ = [];
var len__36777__auto___44247 = arguments.length;
var i__36778__auto___44248 = (0);
while(true){
if((i__36778__auto___44248 < len__36777__auto___44247)){
args__36784__auto__.push((arguments[i__36778__auto___44248]));
var G__44249 = (i__36778__auto___44248 + (1));
i__36778__auto___44248 = G__44249;
continue;
} else {
}
break;
}
var argseq__36785__auto__ = ((((2) < args__36784__auto__.length))?(new cljs.core.IndexedSeq(args__36784__auto__.slice((2)),(0),null)):null);
return cljs.tools.reader.impl.errors.throw_eof_reading.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__36785__auto__);
});
cljs.tools.reader.impl.errors.throw_eof_reading.cljs$core$IFn$_invoke$arity$variadic = (function (rdr,kind,start){
var init = (function (){var G__44246 = kind;
var G__44246__$1 = (((G__44246 instanceof cljs.core.Keyword))?G__44246.fqn:null);
switch (G__44246__$1) {
case "regex":
return "#\"";
break;
case "string":
return "\"";
break;
default:
throw (new Error(["No matching clause: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(G__44246__$1)].join('')));
}
})();
return cljs.tools.reader.impl.errors.eof_error.call(null,rdr,"Unexpected EOF reading ",cljs.core.name.call(null,kind)," starting ",cljs.core.apply.call(null,cljs.core.str,init,start),".");
});
cljs.tools.reader.impl.errors.throw_eof_reading.cljs$lang$maxFixedArity = (2);
cljs.tools.reader.impl.errors.throw_eof_reading.cljs$lang$applyTo = (function (seq44243){
var G__44244 = cljs.core.first.call(null,seq44243);
var seq44243__$1 = cljs.core.next.call(null,seq44243);
var G__44245 = cljs.core.first.call(null,seq44243__$1);
var seq44243__$2 = cljs.core.next.call(null,seq44243__$1);
return cljs.tools.reader.impl.errors.throw_eof_reading.cljs$core$IFn$_invoke$arity$variadic(G__44244,G__44245,seq44243__$2);
});
cljs.tools.reader.impl.errors.throw_no_dispatch = (function cljs$tools$reader$impl$errors$throw_no_dispatch(rdr,ch){
return cljs.tools.reader.impl.errors.throw_bad_dispatch.call(null,rdr,ch);
});
cljs.tools.reader.impl.errors.throw_invalid_unicode_char = (function cljs$tools$reader$impl$errors$throw_invalid_unicode_char(rdr,token){
return cljs.tools.reader.impl.errors.reader_error.call(null,rdr,"Invalid unicode character \\",token,".");
});
cljs.tools.reader.impl.errors.throw_invalid_unicode_digit_in_token = (function cljs$tools$reader$impl$errors$throw_invalid_unicode_digit_in_token(rdr,ch,token){
return cljs.tools.reader.impl.errors.illegal_arg_error.call(null,rdr,"Invalid digit ",ch," in unicode character \\",token,".");
});
cljs.tools.reader.impl.errors.throw_invalid_unicode_digit = (function cljs$tools$reader$impl$errors$throw_invalid_unicode_digit(rdr,ch){
return cljs.tools.reader.impl.errors.illegal_arg_error.call(null,rdr,"Invalid digit ",ch," in unicode character.");
});
cljs.tools.reader.impl.errors.throw_invalid_unicode_len = (function cljs$tools$reader$impl$errors$throw_invalid_unicode_len(rdr,actual,expected){
return cljs.tools.reader.impl.errors.illegal_arg_error.call(null,rdr,"Invalid unicode literal. Unicode literals should be ",expected,"characters long. ","value suppled is ",actual,"characters long.");
});
cljs.tools.reader.impl.errors.throw_invalid_character_literal = (function cljs$tools$reader$impl$errors$throw_invalid_character_literal(rdr,token){
return cljs.tools.reader.impl.errors.reader_error.call(null,rdr,"Invalid character literal \\u",token,".");
});
cljs.tools.reader.impl.errors.throw_invalid_octal_len = (function cljs$tools$reader$impl$errors$throw_invalid_octal_len(rdr,token){
return cljs.tools.reader.impl.errors.reader_error.call(null,rdr,"Invalid octal escape sequence in a character literal:",token,". Octal escape sequences must be 3 or fewer digits.");
});
cljs.tools.reader.impl.errors.throw_bad_octal_number = (function cljs$tools$reader$impl$errors$throw_bad_octal_number(rdr){
return cljs.tools.reader.impl.errors.reader_error.call(null,rdr,"Octal escape sequence must be in range [0, 377].");
});
cljs.tools.reader.impl.errors.throw_unsupported_character = (function cljs$tools$reader$impl$errors$throw_unsupported_character(rdr,token){
return cljs.tools.reader.impl.errors.reader_error.call(null,rdr,"Unsupported character: ",token,".");
});
cljs.tools.reader.impl.errors.throw_eof_in_character = (function cljs$tools$reader$impl$errors$throw_eof_in_character(rdr){
return cljs.tools.reader.impl.errors.eof_error.call(null,rdr,"Unexpected EOF while reading character.");
});
cljs.tools.reader.impl.errors.throw_bad_escape_char = (function cljs$tools$reader$impl$errors$throw_bad_escape_char(rdr,ch){
return cljs.tools.reader.impl.errors.reader_error.call(null,rdr,"Unsupported escape character: \\",ch,".");
});
cljs.tools.reader.impl.errors.throw_single_colon = (function cljs$tools$reader$impl$errors$throw_single_colon(rdr){
return cljs.tools.reader.impl.errors.reader_error.call(null,rdr,"A single colon is not a valid keyword.");
});
cljs.tools.reader.impl.errors.throw_bad_metadata = (function cljs$tools$reader$impl$errors$throw_bad_metadata(rdr,x){
return cljs.tools.reader.impl.errors.reader_error.call(null,rdr,"Metadata cannot be ",cljs.tools.reader.impl.inspect.inspect.call(null,x),". Metadata must be a Symbol, Keyword, String or Map.");
});
cljs.tools.reader.impl.errors.throw_bad_metadata_target = (function cljs$tools$reader$impl$errors$throw_bad_metadata_target(rdr,target){
return cljs.tools.reader.impl.errors.reader_error.call(null,rdr,"Metadata can not be applied to ",cljs.tools.reader.impl.inspect.inspect.call(null,target),". ","Metadata can only be applied to IMetas.");
});
cljs.tools.reader.impl.errors.throw_feature_not_keyword = (function cljs$tools$reader$impl$errors$throw_feature_not_keyword(rdr,feature){
return cljs.tools.reader.impl.errors.reader_error.call(null,rdr,"Feature cannot be ",cljs.tools.reader.impl.inspect.inspect.call(null,feature)," Features must be keywords.");
});
cljs.tools.reader.impl.errors.throw_ns_map_no_map = (function cljs$tools$reader$impl$errors$throw_ns_map_no_map(rdr,ns_name){
return cljs.tools.reader.impl.errors.reader_error.call(null,rdr,"Namespaced map with namespace ",ns_name," does not specify a map.");
});
cljs.tools.reader.impl.errors.throw_bad_ns = (function cljs$tools$reader$impl$errors$throw_bad_ns(rdr,ns_name){
return cljs.tools.reader.impl.errors.reader_error.call(null,rdr,"Invalid value used as namespace in namespaced map: ",ns_name,".");
});
cljs.tools.reader.impl.errors.throw_bad_reader_tag = (function cljs$tools$reader$impl$errors$throw_bad_reader_tag(rdr,tag){
return cljs.tools.reader.impl.errors.reader_error.call(null,rdr,"Invalid reader tag: ",cljs.tools.reader.impl.inspect.inspect.call(null,tag),". Reader tags must be symbols.");
});
cljs.tools.reader.impl.errors.throw_unknown_reader_tag = (function cljs$tools$reader$impl$errors$throw_unknown_reader_tag(rdr,tag){
return cljs.tools.reader.impl.errors.reader_error.call(null,rdr,"No reader function for tag ",cljs.tools.reader.impl.inspect.inspect.call(null,tag),".");
});
cljs.tools.reader.impl.errors.duplicate_keys_error = (function cljs$tools$reader$impl$errors$duplicate_keys_error(msg,coll){
var duplicates = (function cljs$tools$reader$impl$errors$duplicate_keys_error_$_duplicates(seq){
var iter__36380__auto__ = (function cljs$tools$reader$impl$errors$duplicate_keys_error_$_duplicates_$_iter__44261(s__44262){
return (new cljs.core.LazySeq(null,(function (){
var s__44262__$1 = s__44262;
while(true){
var temp__5457__auto__ = cljs.core.seq.call(null,s__44262__$1);
if(temp__5457__auto__){
var s__44262__$2 = temp__5457__auto__;
if(cljs.core.chunked_seq_QMARK_.call(null,s__44262__$2)){
var c__36378__auto__ = cljs.core.chunk_first.call(null,s__44262__$2);
var size__36379__auto__ = cljs.core.count.call(null,c__36378__auto__);
var b__44264 = cljs.core.chunk_buffer.call(null,size__36379__auto__);
if((function (){var i__44263 = (0);
while(true){
if((i__44263 < size__36379__auto__)){
var vec__44265 = cljs.core._nth.call(null,c__36378__auto__,i__44263);
var id = cljs.core.nth.call(null,vec__44265,(0),null);
var freq = cljs.core.nth.call(null,vec__44265,(1),null);
if((freq > (1))){
cljs.core.chunk_append.call(null,b__44264,id);
var G__44271 = (i__44263 + (1));
i__44263 = G__44271;
continue;
} else {
var G__44272 = (i__44263 + (1));
i__44263 = G__44272;
continue;
}
} else {
return true;
}
break;
}
})()){
return cljs.core.chunk_cons.call(null,cljs.core.chunk.call(null,b__44264),cljs$tools$reader$impl$errors$duplicate_keys_error_$_duplicates_$_iter__44261.call(null,cljs.core.chunk_rest.call(null,s__44262__$2)));
} else {
return cljs.core.chunk_cons.call(null,cljs.core.chunk.call(null,b__44264),null);
}
} else {
var vec__44268 = cljs.core.first.call(null,s__44262__$2);
var id = cljs.core.nth.call(null,vec__44268,(0),null);
var freq = cljs.core.nth.call(null,vec__44268,(1),null);
if((freq > (1))){
return cljs.core.cons.call(null,id,cljs$tools$reader$impl$errors$duplicate_keys_error_$_duplicates_$_iter__44261.call(null,cljs.core.rest.call(null,s__44262__$2)));
} else {
var G__44273 = cljs.core.rest.call(null,s__44262__$2);
s__44262__$1 = G__44273;
continue;
}
}
} else {
return null;
}
break;
}
}),null,null));
});
return iter__36380__auto__.call(null,cljs.core.frequencies.call(null,seq));
});
var dups = duplicates.call(null,coll);
return cljs.core.apply.call(null,cljs.core.str,msg,(((cljs.core.count.call(null,dups) > (1)))?"s":null),": ",cljs.core.interpose.call(null,", ",dups));
});
cljs.tools.reader.impl.errors.throw_dup_keys = (function cljs$tools$reader$impl$errors$throw_dup_keys(rdr,kind,ks){
return cljs.tools.reader.impl.errors.reader_error.call(null,rdr,cljs.tools.reader.impl.errors.duplicate_keys_error.call(null,[cljs.core.str.cljs$core$IFn$_invoke$arity$1(clojure.string.capitalize.call(null,cljs.core.name.call(null,kind)))," literal contains duplicate key"].join(''),ks));
});
cljs.tools.reader.impl.errors.throw_eof_error = (function cljs$tools$reader$impl$errors$throw_eof_error(rdr,line){
if(cljs.core.truth_(line)){
return cljs.tools.reader.impl.errors.eof_error.call(null,rdr,"EOF while reading, starting at line ",line,".");
} else {
return cljs.tools.reader.impl.errors.eof_error.call(null,rdr,"EOF while reading.");
}
});
//# sourceMappingURL=errors.js.map?rel=1517021946468
@@ -0,0 +1 @@
{"version":3,"file":"\/home\/didier\/clojupyter\/website\/target\/cljsbuild\/public\/js\/out\/cljs\/tools\/reader\/impl\/errors.js","sources":["errors.cljs?rel=1517021946470"],"lineCount":413,"mappings":";AAQA;;;;;AAKA,2CAAA,3CAAOA,8FACJC,IAAIC;AADP,AAEE,cAAA,2CAAA,qDAAA,8EAAA,xLAAMC,mPACkBD;AADxB,AAEE,oBAAI,AAACE,gEAAuBH;AAC1B,yCAAA,kHAAA,kHAAA,tQAACI,0BACAF,8DACM,AAACG,uDAAoBL,yDACrB,AAACM,yDAAsBN,yDACxB,AAACO,2DAAwBP;;AAC\/BE;;;AAEN,AAAA;;;yCAAA,iDAAAM,1FAAOM;AAAP,AAAA,IAAAL,sBAAA;AAAA,AAAA,IAAAC,2BAAA,AAAA;AAAA,AAAA,IAAAC,yBAAA;;AAAA,AAAA,GAAA,CAAAA,yBAAAD;AAAA,AAAA,AAAAD,yBAAA,CAAA,UAAAE;;AAAA,eAAA,CAAAA,yBAAA;;;;AAAA;;;;AAAA,IAAAC,wBAAA,EAAA,CAAA,MAAA,AAAAH,6BAAA,AAAA,KAAAI,qBAAA,AAAAJ,0BAAA,KAAA,IAAA,OAAA;AAAA,AAAA,OAAAK,4EAAA,CAAA,UAAA,MAAA,CAAA,UAAA,MAAAF;;;AAAA,AAAA,AAAA,AAAAE,8EAAA,WAEGd,IAAIC,QAAUmB;AAFjB,AAGE,IAAMlB,UAAQ,AAACH,mDAAWC,IAAIC;IACxBoB,OAAK,AAAA,oFAAOnB;IACZoB,OAAK,AAAA,kFAAOpB;IACZqB,MAAI,AAAA,kFAAMrB;IACVsB,OAAK,yFAAA,vEAAIH,MAAK,mDAAA,NAAKA;IACnBI,OAAK,4JAAA,1IAAIH,MAAK,CAAA,2DAAA,0DAAA,hEAAcA,2DAAcC;IAC1CG,OAAK,kBAAI,iBAAAC,oBAAIH;AAAJ,AAAA,oBAAAG;AAAAA;;AAASF;;MAAb,IAAA;IACLG,WAAS,AAACC,0BAAMC,cAAIN,KAAKC,KAAKC,KAAKN;AAPzC,AAQE,MAAO,AAACW,4BAAQH,SAAS1B;;;AAX7B,AAAA,AAAAY,iEAAA;;AAAA,AAAA,AAAAA,2DAAA,WAAAC;AAAA,AAAA,IAAAC,WAAA,AAAAC,0BAAAF;IAAAA,eAAA,AAAAG,yBAAAH;IAAAI,WAAA,AAAAF,0BAAAF;IAAAA,eAAA,AAAAG,yBAAAH;AAAA,AAAA,OAAAD,4EAAAE,SAAAG,SAAAJ;;;AAAA,AAaA,AAAA;;;;6CAAA,qDAAAP,lGAAMwB;AAAN,AAAA,IAAAvB,sBAAA;AAAA,AAAA,IAAAC,2BAAA,AAAA;AAAA,AAAA,IAAAC,yBAAA;;AAAA,AAAA,GAAA,CAAAA,yBAAAD;AAAA,AAAA,AAAAD,yBAAA,CAAA,UAAAE;;AAAA,eAAA,CAAAA,yBAAA;;;;AAAA;;;;AAAA,IAAAC,wBAAA,EAAA,CAAA,MAAA,AAAAH,6BAAA,AAAA,KAAAI,qBAAA,AAAAJ,0BAAA,KAAA,IAAA,OAAA;AAAA,AAAA,OAAAuB,gFAAA,CAAA,UAAA,MAAApB;;;AAAA,AAAA,AAAA,AAAAoB,kFAAA,WAGGhC,IAAMmC;AAHT,AAIE,4DAAA,rDAACrB,iDAASd,yEAAkB,AAAC6B,0BAAMC,cAAIK;;;AAJzC,AAAA,AAAAH,qEAAA;;AAAA,AAAA,AAAAA,+DAAA,WAAAC;AAAA,AAAA,IAAAC,WAAA,AAAAjB,0BAAAgB;IAAAA,eAAA,AAAAf,yBAAAe;AAAA,AAAA,OAAAD,gFAAAE,SAAAD;;;AAAA,AAMA,AAAA;;;;kDAAA,0DAAAzB,5GAAM4B;AAAN,AAAA,IAAA3B,sBAAA;AAAA,AAAA,IAAAC,2BAAA,AAAA;AAAA,AAAA,IAAAC,yBAAA;;AAAA,AAAA,GAAA,CAAAA,yBAAAD;AAAA,AAAA,AAAAD,yBAAA,CAAA,UAAAE;;AAAA,eAAA,CAAAA,yBAAA;;;;AAAA;;;;AAAA,IAAAC,wBAAA,EAAA,CAAA,MAAA,AAAAH,6BAAA,AAAA,KAAAI,qBAAA,AAAAJ,0BAAA,KAAA,IAAA,OAAA;AAAA,AAAA,OAAA2B,qFAAA,CAAA,UAAA,MAAAxB;;;AAAA,AAAA,AAAA,AAAAwB,uFAAA,WAGGpC,IAAMmC;AAHT,AAIE,4DAAA,rDAACrB,iDAASd,kFAAsB,AAAC6B,0BAAMC,cAAIK;;;AAJ7C,AAAA,AAAAC,0EAAA;;AAAA,AAAA,AAAAA,oEAAA,WAAAC;AAAA,AAAA,IAAAC,WAAA,AAAArB,0BAAAoB;IAAAA,eAAA,AAAAnB,yBAAAmB;AAAA,AAAA,OAAAD,qFAAAE,SAAAD;;;AAAA,AAMA,AAAA;;;;0CAAA,kDAAA7B,5FAAM+B;AAAN,AAAA,IAAA9B,sBAAA;AAAA,AAAA,IAAAC,2BAAA,AAAA;AAAA,AAAA,IAAAC,yBAAA;;AAAA,AAAA,GAAA,CAAAA,yBAAAD;AAAA,AAAA,AAAAD,yBAAA,CAAA,UAAAE;;AAAA,eAAA,CAAAA,yBAAA;;;;AAAA;;;;AAAA,IAAAC,wBAAA,EAAA,CAAA,MAAA,AAAAH,6BAAA,AAAA,KAAAI,qBAAA,AAAAJ,0BAAA,KAAA,IAAA,OAAA;AAAA,AAAA,OAAA8B,6EAAA,CAAA,UAAA,MAAA3B;;;AAAA,AAAA,AAAA,AAAA2B,+EAAA,WAGGvC,IAAMmC;AAHT,AAIE,4DAAA,rDAACrB,iDAASd,uDAAS,AAAC6B,0BAAMC,cAAIK;;;AAJhC,AAAA,AAAAI,kEAAA;;AAAA,AAAA,AAAAA,4DAAA,WAAAC;AAAA,AAAA,IAAAC,WAAA,AAAAxB,0BAAAuB;IAAAA,eAAA,AAAAtB,yBAAAsB;AAAA,AAAA,OAAAD,6EAAAE,SAAAD;;;AAAA,AAMA,AAAA,oDAAA,4DAAAhC,hHAAMmC;AAAN,AAAA,IAAAD,WAAA,AAAA;AAAA,AAAA,QAAAA;KAAA;AAAA,OAAAC,gFAAA,CAAA,UAAA,MAAA,CAAA,UAAA,MAAA,CAAA,UAAA,MAAA,CAAA,UAAA;;;KAAA;AAAA,OAAAA,gFAAA,CAAA,UAAA,MAAA,CAAA,UAAA,MAAA,CAAA,UAAA,MAAA,CAAA,UAAA,MAAA,CAAA,UAAA;;;;AAAA,MAAA,KAAAC,MAAA,CAAA,8DAAA,AAAA;;;;;AAAA,AAAA,kFAAA,lFAAMD,6FACF3C,IAAI6C,KAAKC,OAAOxB;AADpB,AAC0B,wFAAA,jFAACqB,4DAAoB3C,IAAI6C,KAAKvB,KAAKwB;;;AAD7D,AAAA,kFAAA,lFAAMH,6FAEF3C,IAAI6C,KAAKvB,KAAKwB,OAAOC;AAFzB,AAGG,6DAAA,uVAAA,7YAACR,kDACAvC,oCAEA,8FAAA,5EAAI+C,GACF,CAAA,uDAAA,HAAaA,0BACf,AAACC,yBAAKH,MACN,8KAAA,5JAAIvB,MACF,CAAA,wEAAA,NAA2BA,iEAAoBwB;;;AAVrD,AAAA,4EAAA,5EAAMH;;AAAN,AAaA,8CAAA,9CAAMM,oGAAejD,IAAIsB,KAAKC,IAAI2B;AAAlC,AACE,gEAAA,0RAAA,iDAAA,pYAAClB,qDACAhC,qCAEA,AAACmD,iDAAU,AAAClC,0BAAMiC,WAClB,6JAAA,3IAAI5B,MAAK,CAAA,8DAAA,NAAiBA,6DAAgBC,kCAE1C,AAAC6B,0BAAMF;;AAGV,qDAAA,rDAAMG,kHAAsBrD,IAAIsD;AAAhC,AACE,gEAAA,yBAAA,lFAACtB,qDACAhC,uBAEAsD;;AAGH,8DAAA,9DAAMC,oIAA+BvD,IAAIsD;AAAzC,AACE,MACC,8DAAA,oCAAA,lGAAClB,0DACApC,kCAEAsD;;AAGJ,6DAAA,7DAAME,kIAA8BxD,IAAIyD;AAAxC,AACE,gEAAA,iCAAA,1FAACzB,qDACAhC,kCAEAyD;;AAGH,8CAAA,9CAAMC,oGAAe1D,IAAI6C,KAAKS;AAA9B,AACE,gEAAA,0CAAA,WAAA,9GAACtB,qDAAahC,eAAe,AAACgD,yBAAKH,WAAWS;;AAEhD,mDAAA,nDAAMK,8GAAoB3D,IAAI6C;AAA9B,AACE,6DAAA,wEAAA,9HAACN,kDAAUvC,6CAA6C,AAACgD,yBAAKH;;AAEhE,+CAAA,\/CAAMe,sGAAgB5D,IAAI6C,KAAKY;AAA\/B,AACE,gEAAA,yBAAA,uDAAA,zIAACzB,qDAAahC,0BAA0ByD,2BAA2B,AAACT,yBAAKH;;AAE3E,sDAAA,tDAAMgB,oHAAuB7D;AAA7B,AACE,6DAAA,tDAACuC,kDAAUvC;;AAEb,mDAAA,nDAAM8D,8GAAoB9D,IAAIyD;AAA9B,AACE,gEAAA,4BAAA,rFAACzB,qDAAahC,6BAA6ByD;;AAE7C,wDAAA,xDAAMM,wHAAyB\/D,IAAIyD;AAAnC,AACE,gEAAA,0BAAA,nFAACzB,qDAAahC,2BAA2ByD;;AAE3C,AAAA,kDAAA,0DAAAjD,5GAAMwD;AAAN,AAAA,IAAAvD,sBAAA;AAAA,AAAA,IAAAC,2BAAA,AAAA;AAAA,AAAA,IAAAC,yBAAA;;AAAA,AAAA,GAAA,CAAAA,yBAAAD;AAAA,AAAA,AAAAD,yBAAA,CAAA,UAAAE;;AAAA,eAAA,CAAAA,yBAAA;;;;AAAA;;;;AALine truncated
@@ -0,0 +1,90 @@
;; Copyright (c) Russ Olsen, Nicola Mometto, Rich Hickey & contributors.
;; The use and distribution terms for this software are covered by the
;; Eclipse Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php)
;; which can be found in the file epl-v10.html at the root of this distribution.
;; By using this software in any fashion, you are agreeing to be bound by
;; the terms of this license.
;; You must not remove this notice, or any other, from this software.
(ns cljs.tools.reader.impl.inspect)
(declare inspect*)
(defn- inspect*-col [truncate col start end]
(let [n (count col)
l (if truncate 0 (min 10 n))
elements (map (partial inspect* true) (take l col))
content (apply str (interpose " " elements))
suffix (if (< l n) "...")]
(str start content suffix end)))
(defn- dispatch-inspect
[_ x]
(cond
(nil? x) :nil
(string? x) :string
(keyword? x) :strable
(number? x) :strable
(symbol? x) :strable
(vector? x) :vector
(list? x) :list
(map? x) :map
(set? x) :set
(= x true) :strable
(= x false) :strable
:default (type x)))
(defmulti inspect* dispatch-inspect)
(defmethod inspect* :string [truncate ^String x]
(let [n (if truncate 5 20)
suffix (if (> (.-length x) n) "...\"" "\"")]
(str
\"
(.substring ^String x 0 (min n (.-length x)))
suffix)))
(defmethod inspect* :strable [truncate x] (str x))
(defmethod inspect* cljs.coreIndexedSeq [truncate x]
"<indexed seq>")
(defmethod inspect* cljs.core/PersistentArrayMapSeq [truncate x]
"<map seq>")
(defmethod inspect* cljs.core/NodeSeq [truncate x]
"<map seq>")
(defmethod inspect* cljs.core/Cons [truncate x] "<cons>")
(defmethod inspect* cljs.core/LazySeq [truncate x] "<lazy seq>")
(defmethod inspect* :nil [_ _] "nil")
(defmethod inspect* :list [truncate col]
(inspect*-col truncate col \( \)))
(defmethod inspect* :map [truncate m]
(let [len (count m)
n-shown (if truncate 0 len)
contents (apply concat (take n-shown m))
suffix (if (> len n-shown) "...}" \})]
(inspect*-col truncate contents \{ suffix)))
(defmethod inspect* :set [truncate col]
(inspect*-col truncate col "#{" \}))
(defmethod inspect* :vector [truncate col]
(inspect*-col truncate col \[ \]))
(defmethod inspect* :default [truncate x]
(pr-str (type x)))
(defn inspect
"Return a string description of the value supplied.
May be the a string version of the value itself (e.g. \"true\")
or it may be a description (e.g. \"an instance of Foo\").
If truncate is true then return a very terse version of
the inspection."
([x] (inspect* false x))
([truncate x] (inspect* truncate x)))
@@ -0,0 +1 @@
{:rename-macros {}, :renames {}, :externs {Error {}}, :use-macros {}, :excludes #{}, :name cljs.tools.reader.impl.inspect, :imports nil, :requires nil, :cljs.spec/speced-vars [], :uses nil, :defs {inspect* {:name cljs.tools.reader.impl.inspect/inspect*, :file "target/cljsbuild/public/js/out/cljs/tools/reader/impl/inspect.cljs", :line 37, :column 1, :end-line 37, :end-column 19, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/cljs/tools/reader/impl/inspect.cljs", :line 37, :column 11, :end-line 37, :end-column 19}, :tag cljs.core/MultiFn}, inspect*-col {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/cljs/tools/reader/impl/inspect.cljs", :line 13, :column 8, :end-line 13, :end-column 20, :private true, :arglists (quote ([truncate col start end]))}, :private true, :name cljs.tools.reader.impl.inspect/inspect*-col, :variadic false, :file "target/cljsbuild/public/js/out/cljs/tools/reader/impl/inspect.cljs", :end-column 20, :method-params ([truncate col start end]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 13, :end-line 13, :max-fixed-arity 4, :fn-var true, :arglists (quote ([truncate col start end]))}, dispatch-inspect {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/cljs/tools/reader/impl/inspect.cljs", :line 21, :column 8, :end-line 21, :end-column 24, :private true, :arglists (quote ([_ x]))}, :private true, :name cljs.tools.reader.impl.inspect/dispatch-inspect, :variadic false, :file "target/cljsbuild/public/js/out/cljs/tools/reader/impl/inspect.cljs", :end-column 24, :method-params ([_ x]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 21, :end-line 21, :max-fixed-arity 2, :fn-var true, :arglists (quote ([_ x]))}, inspect {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/cljs/tools/reader/impl/inspect.cljs", :line 83, :column 7, :end-line 83, :end-column 14, :arglists (quote ([x] [truncate x])), :doc "Return a string description of the value supplied.\n May be the a string version of the value itself (e.g. \"true\")\n or it may be a description (e.g. \"an instance of Foo\").\n If truncate is true then return a very terse version of\n the inspection.", :top-fn {:variadic false, :max-fixed-arity 2, :method-params ([x] [truncate x]), :arglists ([x] [truncate x]), :arglists-meta (nil nil)}}, :name cljs.tools.reader.impl.inspect/inspect, :variadic false, :file "target/cljsbuild/public/js/out/cljs/tools/reader/impl/inspect.cljs", :end-column 14, :top-fn {:variadic false, :max-fixed-arity 2, :method-params ([x] [truncate x]), :arglists ([x] [truncate x]), :arglists-meta (nil nil)}, :method-params ([x] [truncate x]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 83, :end-line 83, :max-fixed-arity 2, :fn-var true, :arglists ([x] [truncate x]), :doc "Return a string description of the value supplied.\n May be the a string version of the value itself (e.g. \"true\")\n or it may be a description (e.g. \"an instance of Foo\").\n If truncate is true then return a very terse version of\n the inspection."}}, :cljs.spec/registry-ref [], :require-macros nil, :cljs.analyzer/constants {:seen #{:default :string :vector :strable :list :nil :set :hierarchy :map}, :order [:nil :string :strable :vector :list :map :set :default :hierarchy]}, :doc nil}
@@ -0,0 +1,156 @@
// Compiled by ClojureScript 1.9.946 {}
goog.provide('cljs.tools.reader.impl.inspect');
goog.require('cljs.core');
cljs.tools.reader.impl.inspect.inspect_STAR__col = (function cljs$tools$reader$impl$inspect$inspect_STAR__col(truncate,col,start,end){
var n = cljs.core.count.call(null,col);
var l = (cljs.core.truth_(truncate)?(0):(function (){var x__35857__auto__ = (10);
var y__35858__auto__ = n;
return ((x__35857__auto__ < y__35858__auto__) ? x__35857__auto__ : y__35858__auto__);
})());
var elements = cljs.core.map.call(null,cljs.core.partial.call(null,cljs.tools.reader.impl.inspect.inspect_STAR_,true),cljs.core.take.call(null,l,col));
var content = cljs.core.apply.call(null,cljs.core.str,cljs.core.interpose.call(null," ",elements));
var suffix = (((l < n))?"...":null);
return [cljs.core.str.cljs$core$IFn$_invoke$arity$1(start),cljs.core.str.cljs$core$IFn$_invoke$arity$1(content),cljs.core.str.cljs$core$IFn$_invoke$arity$1(suffix),cljs.core.str.cljs$core$IFn$_invoke$arity$1(end)].join('');
});
cljs.tools.reader.impl.inspect.dispatch_inspect = (function cljs$tools$reader$impl$inspect$dispatch_inspect(_,x){
if((x == null)){
return new cljs.core.Keyword(null,"nil","nil",99600501);
} else {
if(typeof x === 'string'){
return new cljs.core.Keyword(null,"string","string",-1989541586);
} else {
if((x instanceof cljs.core.Keyword)){
return new cljs.core.Keyword(null,"strable","strable",1877668047);
} else {
if(typeof x === 'number'){
return new cljs.core.Keyword(null,"strable","strable",1877668047);
} else {
if((x instanceof cljs.core.Symbol)){
return new cljs.core.Keyword(null,"strable","strable",1877668047);
} else {
if(cljs.core.vector_QMARK_.call(null,x)){
return new cljs.core.Keyword(null,"vector","vector",1902966158);
} else {
if(cljs.core.list_QMARK_.call(null,x)){
return new cljs.core.Keyword(null,"list","list",765357683);
} else {
if(cljs.core.map_QMARK_.call(null,x)){
return new cljs.core.Keyword(null,"map","map",1371690461);
} else {
if(cljs.core.set_QMARK_.call(null,x)){
return new cljs.core.Keyword(null,"set","set",304602554);
} else {
if(cljs.core._EQ_.call(null,x,true)){
return new cljs.core.Keyword(null,"strable","strable",1877668047);
} else {
if(cljs.core._EQ_.call(null,x,false)){
return new cljs.core.Keyword(null,"strable","strable",1877668047);
} else {
return cljs.core.type.call(null,x);
}
}
}
}
}
}
}
}
}
}
}
});
if(typeof cljs.tools.reader.impl.inspect.inspect_STAR_ !== 'undefined'){
} else {
cljs.tools.reader.impl.inspect.inspect_STAR_ = (function (){var method_table__36553__auto__ = cljs.core.atom.call(null,cljs.core.PersistentArrayMap.EMPTY);
var prefer_table__36554__auto__ = cljs.core.atom.call(null,cljs.core.PersistentArrayMap.EMPTY);
var method_cache__36555__auto__ = cljs.core.atom.call(null,cljs.core.PersistentArrayMap.EMPTY);
var cached_hierarchy__36556__auto__ = cljs.core.atom.call(null,cljs.core.PersistentArrayMap.EMPTY);
var hierarchy__36557__auto__ = cljs.core.get.call(null,cljs.core.PersistentArrayMap.EMPTY,new cljs.core.Keyword(null,"hierarchy","hierarchy",-1053470341),cljs.core.get_global_hierarchy.call(null));
return (new cljs.core.MultiFn(cljs.core.symbol.call(null,"cljs.tools.reader.impl.inspect","inspect*"),cljs.tools.reader.impl.inspect.dispatch_inspect,new cljs.core.Keyword(null,"default","default",-1987822328),hierarchy__36557__auto__,method_table__36553__auto__,prefer_table__36554__auto__,method_cache__36555__auto__,cached_hierarchy__36556__auto__));
})();
}
cljs.core._add_method.call(null,cljs.tools.reader.impl.inspect.inspect_STAR_,new cljs.core.Keyword(null,"string","string",-1989541586),(function (truncate,x){
var n = (cljs.core.truth_(truncate)?(5):(20));
var suffix = (((x.length > n))?"...\"":"\"");
return [cljs.core.str.cljs$core$IFn$_invoke$arity$1("\""),cljs.core.str.cljs$core$IFn$_invoke$arity$1(x.substring((0),(function (){var x__35857__auto__ = n;
var y__35858__auto__ = x.length;
return ((x__35857__auto__ < y__35858__auto__) ? x__35857__auto__ : y__35858__auto__);
})())),cljs.core.str.cljs$core$IFn$_invoke$arity$1(suffix)].join('');
}));
cljs.core._add_method.call(null,cljs.tools.reader.impl.inspect.inspect_STAR_,new cljs.core.Keyword(null,"strable","strable",1877668047),(function (truncate,x){
return [cljs.core.str.cljs$core$IFn$_invoke$arity$1(x)].join('');
}));
cljs.core._add_method.call(null,cljs.tools.reader.impl.inspect.inspect_STAR_,cljs.coreIndexedSeq,(function (truncate,x){
return "<indexed seq>";
}));
cljs.core._add_method.call(null,cljs.tools.reader.impl.inspect.inspect_STAR_,cljs.core.PersistentArrayMapSeq,(function (truncate,x){
return "<map seq>";
}));
cljs.core._add_method.call(null,cljs.tools.reader.impl.inspect.inspect_STAR_,cljs.core.NodeSeq,(function (truncate,x){
return "<map seq>";
}));
cljs.core._add_method.call(null,cljs.tools.reader.impl.inspect.inspect_STAR_,cljs.core.Cons,(function (truncate,x){
return "<cons>";
}));
cljs.core._add_method.call(null,cljs.tools.reader.impl.inspect.inspect_STAR_,cljs.core.LazySeq,(function (truncate,x){
return "<lazy seq>";
}));
cljs.core._add_method.call(null,cljs.tools.reader.impl.inspect.inspect_STAR_,new cljs.core.Keyword(null,"nil","nil",99600501),(function (_,___$1){
return "nil";
}));
cljs.core._add_method.call(null,cljs.tools.reader.impl.inspect.inspect_STAR_,new cljs.core.Keyword(null,"list","list",765357683),(function (truncate,col){
return cljs.tools.reader.impl.inspect.inspect_STAR__col.call(null,truncate,col,"(",")");
}));
cljs.core._add_method.call(null,cljs.tools.reader.impl.inspect.inspect_STAR_,new cljs.core.Keyword(null,"map","map",1371690461),(function (truncate,m){
var len = cljs.core.count.call(null,m);
var n_shown = (cljs.core.truth_(truncate)?(0):len);
var contents = cljs.core.apply.call(null,cljs.core.concat,cljs.core.take.call(null,n_shown,m));
var suffix = (((len > n_shown))?"...}":"}");
return cljs.tools.reader.impl.inspect.inspect_STAR__col.call(null,truncate,contents,"{",suffix);
}));
cljs.core._add_method.call(null,cljs.tools.reader.impl.inspect.inspect_STAR_,new cljs.core.Keyword(null,"set","set",304602554),(function (truncate,col){
return cljs.tools.reader.impl.inspect.inspect_STAR__col.call(null,truncate,col,"#{","}");
}));
cljs.core._add_method.call(null,cljs.tools.reader.impl.inspect.inspect_STAR_,new cljs.core.Keyword(null,"vector","vector",1902966158),(function (truncate,col){
return cljs.tools.reader.impl.inspect.inspect_STAR__col.call(null,truncate,col,"[","]");
}));
cljs.core._add_method.call(null,cljs.tools.reader.impl.inspect.inspect_STAR_,new cljs.core.Keyword(null,"default","default",-1987822328),(function (truncate,x){
return cljs.core.pr_str.call(null,cljs.core.type.call(null,x));
}));
/**
* Return a string description of the value supplied.
* May be the a string version of the value itself (e.g. "true")
* or it may be a description (e.g. "an instance of Foo").
* If truncate is true then return a very terse version of
* the inspection.
*/
cljs.tools.reader.impl.inspect.inspect = (function cljs$tools$reader$impl$inspect$inspect(var_args){
var G__44215 = arguments.length;
switch (G__44215) {
case 1:
return cljs.tools.reader.impl.inspect.inspect.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
break;
case 2:
return cljs.tools.reader.impl.inspect.inspect.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
break;
default:
throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
}
});
cljs.tools.reader.impl.inspect.inspect.cljs$core$IFn$_invoke$arity$1 = (function (x){
return cljs.tools.reader.impl.inspect.inspect_STAR_.call(null,false,x);
});
cljs.tools.reader.impl.inspect.inspect.cljs$core$IFn$_invoke$arity$2 = (function (truncate,x){
return cljs.tools.reader.impl.inspect.inspect_STAR_.call(null,truncate,x);
});
cljs.tools.reader.impl.inspect.inspect.cljs$lang$maxFixedArity = 2;
//# sourceMappingURL=inspect.js.map?rel=1517021946396
@@ -0,0 +1 @@
{"version":3,"file":"\/home\/didier\/clojupyter\/website\/target\/cljsbuild\/public\/js\/out\/cljs\/tools\/reader\/impl\/inspect.js","sources":["inspect.cljs?rel=1517021946397"],"lineCount":156,"mappings":"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","names":["cljs.tools.reader.impl.inspect\/inspect*-col","truncate","col","start","end","n","cljs.core\/count","l","x__35857__auto__","y__35858__auto__","elements","cljs.core\/map","cljs.core\/partial","cljs.tools.reader.impl.inspect\/inspect*","cljs.core\/take","content","cljs.core\/apply","cljs.core\/str","cljs.core\/interpose","suffix","cljs.tools.reader.impl.inspect\/dispatch-inspect","_","x","cljs.core\/Keyword","cljs.core\/Symbol","cljs.core\/vector?","cljs.core\/list?","cljs.core\/map?","cljs.core\/set?","cljs.core\/=","cljs.core\/type","method-table__36553__auto__","cljs.core\/atom","prefer-table__36554__auto__","method-cache__36555__auto__","cached-hierarchy__36556__auto__","hierarchy__36557__auto__","cljs.core\/get","cljs.core\/get-global-hierarchy","cljs.core\/MultiFn","cljs.core\/symbol","cljs.core\/-add-method","cljs\/coreIndexedSeq","cljs.core\/PersistentArrayMapSeq","cljs.core\/NodeSeq","cljs.core\/Cons","cljs.core\/LazySeq","m","len","n-shown","contents","cljs.core\/concat","cljs.core\/pr-str","var_args","G__44215","cljs.tools.reader.impl.inspect\/inspect","js\/Error"]}
@@ -0,0 +1,97 @@
;; Copyright (c) Nicola Mometto, Rich Hickey & contributors.
;; The use and distribution terms for this software are covered by the
;; Eclipse Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php)
;; which can be found in the file epl-v10.html at the root of this distribution.
;; By using this software in any fashion, you are agreeing to be bound by
;; the terms of this license.
;; You must not remove this notice, or any other, from this software.
(ns cljs.tools.reader.impl.utils
(:refer-clojure :exclude [char])
(:require
[clojure.string :as string]
[goog.string :as gstring]))
(defn char [x]
(when-not (nil? x)
(cljs.core/char x)))
(defn ^boolean ex-info? [ex]
(instance? cljs.core.ExceptionInfo ex))
(defrecord ReaderConditional [splicing? form])
(defn ^boolean reader-conditional?
"Return true if the value is the data representation of a reader conditional"
[value]
(instance? ReaderConditional value))
(defn reader-conditional
"Construct a data representation of a reader conditional.
If true, splicing? indicates read-cond-splicing."
[form splicing?]
(ReaderConditional. splicing? form))
(extend-protocol IPrintWithWriter
ReaderConditional
(-pr-writer [coll writer opts]
(-write writer (str "#?" (when (:splicing? coll) "@")))
(pr-writer (:form coll) writer opts)))
(def ws-rx #"[\s]")
(defn ^boolean whitespace?
"Checks whether a given character is whitespace"
[ch]
(when-not (nil? ch)
(if (identical? ch \,)
true
(.test ws-rx ch))))
(defn ^boolean numeric?
"Checks whether a given character is numeric"
[ch]
(when-not (nil? ch)
(gstring/isNumeric ch)))
(defn ^boolean newline?
"Checks whether the character is a newline"
[c]
(or (identical? \newline c)
(identical? "\n" c)
(nil? c)))
(defn desugar-meta
"Resolves syntactical sugar in metadata" ;; could be combined with some other desugar?
[f]
(cond
(keyword? f) {f true}
(symbol? f) {:tag f}
(string? f) {:tag f}
:else f))
(def last-id (atom 0))
(defn next-id
[]
(swap! last-id inc))
(defn namespace-keys [ns keys]
(for [key keys]
(if (or (symbol? key)
(keyword? key))
(let [[key-ns key-name] ((juxt namespace name) key)
->key (if (symbol? key) symbol keyword)]
(cond
(nil? key-ns)
(->key ns key-name)
(= "_" key-ns)
(->key key-name)
:else
key))
key)))
(defn second' [[a b]]
(when-not a b))
@@ -0,0 +1 @@
{:rename-macros {}, :renames {}, :use-macros {}, :excludes #{char}, :name cljs.tools.reader.impl.utils, :imports nil, :requires {string clojure.string, clojure.string clojure.string, gstring goog.string, goog.string goog.string}, :cljs.spec/speced-vars [], :uses nil, :defs {reader-conditional {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/cljs/tools/reader/impl/utils.cljs", :line 29, :column 7, :end-line 29, :end-column 25, :arglists (quote ([form splicing?])), :doc "Construct a data representation of a reader conditional.\n If true, splicing? indicates read-cond-splicing."}, :name cljs.tools.reader.impl.utils/reader-conditional, :variadic false, :file "target/cljsbuild/public/js/out/cljs/tools/reader/impl/utils.cljs", :end-column 25, :method-params ([form splicing?]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 29, :end-line 29, :max-fixed-arity 2, :fn-var true, :arglists (quote ([form splicing?])), :doc "Construct a data representation of a reader conditional.\n If true, splicing? indicates read-cond-splicing."}, whitespace? {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/cljs/tools/reader/impl/utils.cljs", :line 43, :column 16, :end-line 43, :end-column 27, :tag boolean, :arglists (quote ([ch])), :doc "Checks whether a given character is whitespace"}, :name cljs.tools.reader.impl.utils/whitespace?, :variadic false, :file "target/cljsbuild/public/js/out/cljs/tools/reader/impl/utils.cljs", :end-column 27, :method-params ([ch]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 43, :ret-tag boolean, :end-line 43, :max-fixed-arity 1, :tag boolean, :fn-var true, :arglists (quote ([ch])), :doc "Checks whether a given character is whitespace"}, last-id {:name cljs.tools.reader.impl.utils/last-id, :file "target/cljsbuild/public/js/out/cljs/tools/reader/impl/utils.cljs", :line 73, :column 1, :end-line 73, :end-column 13, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/cljs/tools/reader/impl/utils.cljs", :line 73, :column 6, :end-line 73, :end-column 13}, :tag any}, char {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/cljs/tools/reader/impl/utils.cljs", :line 15, :column 7, :end-line 15, :end-column 11, :arglists (quote ([x]))}, :name cljs.tools.reader.impl.utils/char, :variadic false, :file "target/cljsbuild/public/js/out/cljs/tools/reader/impl/utils.cljs", :end-column 11, :method-params ([x]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 15, :end-line 15, :max-fixed-arity 1, :fn-var true, :arglists (quote ([x]))}, numeric? {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/cljs/tools/reader/impl/utils.cljs", :line 51, :column 16, :end-line 51, :end-column 24, :tag boolean, :arglists (quote ([ch])), :doc "Checks whether a given character is numeric"}, :name cljs.tools.reader.impl.utils/numeric?, :variadic false, :file "target/cljsbuild/public/js/out/cljs/tools/reader/impl/utils.cljs", :end-column 24, :method-params ([ch]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 51, :ret-tag boolean, :end-line 51, :max-fixed-arity 1, :tag boolean, :fn-var true, :arglists (quote ([ch])), :doc "Checks whether a given character is numeric"}, ReaderConditional {:num-fields 2, :protocols #{cljs.core/IRecord cljs.core/IEquiv cljs.core/IHash cljs.core/ICollection cljs.core/ICounted cljs.core/ISeqable cljs.core/IMeta cljs.core/ICloneable cljs.core/IPrintWithWriter cljs.core/IIterable cljs.core/IWithMeta cljs.core/IAssociative cljs.core/IMap cljs.core/ILookup}, :name cljs.tools.reader.impl.utils/ReaderConditional, :file "target/cljsbuild/public/js/out/cljs/tools/reader/impl/utils.cljs", :end-column 29, :type true, :column 12, :internal-ctor true, :line 22, :record true, :end-line 22, :skip-protocol-flag #{cljs.core/IRecord cljs.core/IEquiv cljs.core/IHash cljs.core/ICollection cljs.core/ICounted cljs.core/ISeqable cljs.core/IMeta cljs.core/ICloneable cljs.core/IPrintWithWriter cljs.core/IIterable cljs.core/IWithMeta cljs.core/IAssociative cljs.core/IMap cljs.core/ILookup}}, second' {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/cljs/tools/reader/impl/utils.cljs", :line 96, :column 7, :end-line 96, :end-column 14, :arglists (quote ([[a b]]))}, :name cljs.tools.reader.impl.utils/second', :variadic false, :file "target/cljsbuild/public/js/out/cljs/tools/reader/impl/utils.cljs", :end-column 14, :method-params ([p__44193]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 96, :end-line 96, :max-fixed-arity 1, :fn-var true, :arglists (quote ([[a b]]))}, desugar-meta {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/cljs/tools/reader/impl/utils.cljs", :line 64, :column 7, :end-line 64, :end-column 19, :arglists (quote ([f])),Line truncated
+356
View File
@@ -0,0 +1,356 @@
// Compiled by ClojureScript 1.9.946 {}
goog.provide('cljs.tools.reader.impl.utils');
goog.require('cljs.core');
goog.require('clojure.string');
goog.require('goog.string');
cljs.tools.reader.impl.utils.char$ = (function cljs$tools$reader$impl$utils$char(x){
if((x == null)){
return null;
} else {
return cljs.core.char$.call(null,x);
}
});
cljs.tools.reader.impl.utils.ex_info_QMARK_ = (function cljs$tools$reader$impl$utils$ex_info_QMARK_(ex){
return (ex instanceof cljs.core.ExceptionInfo);
});
/**
* @constructor
* @implements {cljs.core.IRecord}
* @implements {cljs.core.IEquiv}
* @implements {cljs.core.IHash}
* @implements {cljs.core.ICollection}
* @implements {cljs.core.ICounted}
* @implements {cljs.core.ISeqable}
* @implements {cljs.core.IMeta}
* @implements {cljs.core.ICloneable}
* @implements {cljs.core.IPrintWithWriter}
* @implements {cljs.core.IIterable}
* @implements {cljs.core.IWithMeta}
* @implements {cljs.core.IAssociative}
* @implements {cljs.core.IMap}
* @implements {cljs.core.ILookup}
*/
cljs.tools.reader.impl.utils.ReaderConditional = (function (splicing_QMARK_,form,__meta,__extmap,__hash){
this.splicing_QMARK_ = splicing_QMARK_;
this.form = form;
this.__meta = __meta;
this.__extmap = __extmap;
this.__hash = __hash;
this.cljs$lang$protocol_mask$partition0$ = 2229667594;
this.cljs$lang$protocol_mask$partition1$ = 139264;
});
cljs.tools.reader.impl.utils.ReaderConditional.prototype.cljs$core$ILookup$_lookup$arity$2 = (function (this__36186__auto__,k__36187__auto__){
var self__ = this;
var this__36186__auto____$1 = this;
return this__36186__auto____$1.cljs$core$ILookup$_lookup$arity$3(null,k__36187__auto__,null);
});
cljs.tools.reader.impl.utils.ReaderConditional.prototype.cljs$core$ILookup$_lookup$arity$3 = (function (this__36188__auto__,k44173,else__36189__auto__){
var self__ = this;
var this__36188__auto____$1 = this;
var G__44177 = k44173;
var G__44177__$1 = (((G__44177 instanceof cljs.core.Keyword))?G__44177.fqn:null);
switch (G__44177__$1) {
case "splicing?":
return self__.splicing_QMARK_;
break;
case "form":
return self__.form;
break;
default:
return cljs.core.get.call(null,self__.__extmap,k44173,else__36189__auto__);
}
});
cljs.tools.reader.impl.utils.ReaderConditional.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (this__36200__auto__,writer__36201__auto__,opts__36202__auto__){
var self__ = this;
var this__36200__auto____$1 = this;
var pr_pair__36203__auto__ = ((function (this__36200__auto____$1){
return (function (keyval__36204__auto__){
return cljs.core.pr_sequential_writer.call(null,writer__36201__auto__,cljs.core.pr_writer,""," ","",opts__36202__auto__,keyval__36204__auto__);
});})(this__36200__auto____$1))
;
return cljs.core.pr_sequential_writer.call(null,writer__36201__auto__,pr_pair__36203__auto__,"#cljs.tools.reader.impl.utils.ReaderConditional{",", ","}",opts__36202__auto__,cljs.core.concat.call(null,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [(new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[new cljs.core.Keyword(null,"splicing?","splicing?",-428596366),self__.splicing_QMARK_],null)),(new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[new cljs.core.Keyword(null,"form","form",-1624062471),self__.form],null))], null),self__.__extmap));
});
cljs.tools.reader.impl.utils.ReaderConditional.prototype.cljs$core$IIterable$_iterator$arity$1 = (function (G__44172){
var self__ = this;
var G__44172__$1 = this;
return (new cljs.core.RecordIter((0),G__44172__$1,2,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"splicing?","splicing?",-428596366),new cljs.core.Keyword(null,"form","form",-1624062471)], null),(cljs.core.truth_(self__.__extmap)?cljs.core._iterator.call(null,self__.__extmap):cljs.core.nil_iter.call(null))));
});
cljs.tools.reader.impl.utils.ReaderConditional.prototype.cljs$core$IMeta$_meta$arity$1 = (function (this__36184__auto__){
var self__ = this;
var this__36184__auto____$1 = this;
return self__.__meta;
});
cljs.tools.reader.impl.utils.ReaderConditional.prototype.cljs$core$ICloneable$_clone$arity$1 = (function (this__36181__auto__){
var self__ = this;
var this__36181__auto____$1 = this;
return (new cljs.tools.reader.impl.utils.ReaderConditional(self__.splicing_QMARK_,self__.form,self__.__meta,self__.__extmap,self__.__hash));
});
cljs.tools.reader.impl.utils.ReaderConditional.prototype.cljs$core$ICounted$_count$arity$1 = (function (this__36190__auto__){
var self__ = this;
var this__36190__auto____$1 = this;
return (2 + cljs.core.count.call(null,self__.__extmap));
});
cljs.tools.reader.impl.utils.ReaderConditional.prototype.cljs$core$IHash$_hash$arity$1 = (function (this__36182__auto__){
var self__ = this;
var this__36182__auto____$1 = this;
var h__35954__auto__ = self__.__hash;
if(!((h__35954__auto__ == null))){
return h__35954__auto__;
} else {
var h__35954__auto____$1 = ((function (h__35954__auto__,this__36182__auto____$1){
return (function (coll__36183__auto__){
return (-209062840 ^ cljs.core.hash_unordered_coll.call(null,coll__36183__auto__));
});})(h__35954__auto__,this__36182__auto____$1))
.call(null,this__36182__auto____$1);
self__.__hash = h__35954__auto____$1;
return h__35954__auto____$1;
}
});
cljs.tools.reader.impl.utils.ReaderConditional.prototype.cljs$core$IEquiv$_equiv$arity$2 = (function (this44174,other44175){
var self__ = this;
var this44174__$1 = this;
return (!((other44175 == null))) && ((this44174__$1.constructor === other44175.constructor)) && (cljs.core._EQ_.call(null,this44174__$1.splicing_QMARK_,other44175.splicing_QMARK_)) && (cljs.core._EQ_.call(null,this44174__$1.form,other44175.form)) && (cljs.core._EQ_.call(null,this44174__$1.__extmap,other44175.__extmap));
});
cljs.tools.reader.impl.utils.ReaderConditional.prototype.cljs$core$IMap$_dissoc$arity$2 = (function (this__36195__auto__,k__36196__auto__){
var self__ = this;
var this__36195__auto____$1 = this;
if(cljs.core.contains_QMARK_.call(null,new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"splicing?","splicing?",-428596366),null,new cljs.core.Keyword(null,"form","form",-1624062471),null], null), null),k__36196__auto__)){
return cljs.core.dissoc.call(null,cljs.core._with_meta.call(null,cljs.core.into.call(null,cljs.core.PersistentArrayMap.EMPTY,this__36195__auto____$1),self__.__meta),k__36196__auto__);
} else {
return (new cljs.tools.reader.impl.utils.ReaderConditional(self__.splicing_QMARK_,self__.form,self__.__meta,cljs.core.not_empty.call(null,cljs.core.dissoc.call(null,self__.__extmap,k__36196__auto__)),null));
}
});
cljs.tools.reader.impl.utils.ReaderConditional.prototype.cljs$core$IAssociative$_assoc$arity$3 = (function (this__36193__auto__,k__36194__auto__,G__44172){
var self__ = this;
var this__36193__auto____$1 = this;
var pred__44178 = cljs.core.keyword_identical_QMARK_;
var expr__44179 = k__36194__auto__;
if(cljs.core.truth_(pred__44178.call(null,new cljs.core.Keyword(null,"splicing?","splicing?",-428596366),expr__44179))){
return (new cljs.tools.reader.impl.utils.ReaderConditional(G__44172,self__.form,self__.__meta,self__.__extmap,null));
} else {
if(cljs.core.truth_(pred__44178.call(null,new cljs.core.Keyword(null,"form","form",-1624062471),expr__44179))){
return (new cljs.tools.reader.impl.utils.ReaderConditional(self__.splicing_QMARK_,G__44172,self__.__meta,self__.__extmap,null));
} else {
return (new cljs.tools.reader.impl.utils.ReaderConditional(self__.splicing_QMARK_,self__.form,self__.__meta,cljs.core.assoc.call(null,self__.__extmap,k__36194__auto__,G__44172),null));
}
}
});
cljs.tools.reader.impl.utils.ReaderConditional.prototype.cljs$core$ISeqable$_seq$arity$1 = (function (this__36198__auto__){
var self__ = this;
var this__36198__auto____$1 = this;
return cljs.core.seq.call(null,cljs.core.concat.call(null,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [(new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[new cljs.core.Keyword(null,"splicing?","splicing?",-428596366),self__.splicing_QMARK_],null)),(new cljs.core.PersistentVector(null,2,(5),cljs.core.PersistentVector.EMPTY_NODE,[new cljs.core.Keyword(null,"form","form",-1624062471),self__.form],null))], null),self__.__extmap));
});
cljs.tools.reader.impl.utils.ReaderConditional.prototype.cljs$core$IWithMeta$_with_meta$arity$2 = (function (this__36185__auto__,G__44172){
var self__ = this;
var this__36185__auto____$1 = this;
return (new cljs.tools.reader.impl.utils.ReaderConditional(self__.splicing_QMARK_,self__.form,G__44172,self__.__extmap,self__.__hash));
});
cljs.tools.reader.impl.utils.ReaderConditional.prototype.cljs$core$ICollection$_conj$arity$2 = (function (this__36191__auto__,entry__36192__auto__){
var self__ = this;
var this__36191__auto____$1 = this;
if(cljs.core.vector_QMARK_.call(null,entry__36192__auto__)){
return this__36191__auto____$1.cljs$core$IAssociative$_assoc$arity$3(null,cljs.core._nth.call(null,entry__36192__auto__,(0)),cljs.core._nth.call(null,entry__36192__auto__,(1)));
} else {
return cljs.core.reduce.call(null,cljs.core._conj,this__36191__auto____$1,entry__36192__auto__);
}
});
cljs.tools.reader.impl.utils.ReaderConditional.getBasis = (function (){
return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"splicing?","splicing?",1211935161,null),new cljs.core.Symbol(null,"form","form",16469056,null)], null);
});
cljs.tools.reader.impl.utils.ReaderConditional.cljs$lang$type = true;
cljs.tools.reader.impl.utils.ReaderConditional.cljs$lang$ctorPrSeq = (function (this__36224__auto__){
return cljs.core._conj.call(null,cljs.core.List.EMPTY,"cljs.tools.reader.impl.utils/ReaderConditional");
});
cljs.tools.reader.impl.utils.ReaderConditional.cljs$lang$ctorPrWriter = (function (this__36224__auto__,writer__36225__auto__){
return cljs.core._write.call(null,writer__36225__auto__,"cljs.tools.reader.impl.utils/ReaderConditional");
});
cljs.tools.reader.impl.utils.__GT_ReaderConditional = (function cljs$tools$reader$impl$utils$__GT_ReaderConditional(splicing_QMARK_,form){
return (new cljs.tools.reader.impl.utils.ReaderConditional(splicing_QMARK_,form,null,null,null));
});
cljs.tools.reader.impl.utils.map__GT_ReaderConditional = (function cljs$tools$reader$impl$utils$map__GT_ReaderConditional(G__44176){
return (new cljs.tools.reader.impl.utils.ReaderConditional(new cljs.core.Keyword(null,"splicing?","splicing?",-428596366).cljs$core$IFn$_invoke$arity$1(G__44176),new cljs.core.Keyword(null,"form","form",-1624062471).cljs$core$IFn$_invoke$arity$1(G__44176),null,cljs.core.not_empty.call(null,cljs.core.dissoc.call(null,G__44176,new cljs.core.Keyword(null,"splicing?","splicing?",-428596366),new cljs.core.Keyword(null,"form","form",-1624062471))),null));
});
/**
* Return true if the value is the data representation of a reader conditional
*/
cljs.tools.reader.impl.utils.reader_conditional_QMARK_ = (function cljs$tools$reader$impl$utils$reader_conditional_QMARK_(value){
return (value instanceof cljs.tools.reader.impl.utils.ReaderConditional);
});
/**
* Construct a data representation of a reader conditional.
* If true, splicing? indicates read-cond-splicing.
*/
cljs.tools.reader.impl.utils.reader_conditional = (function cljs$tools$reader$impl$utils$reader_conditional(form,splicing_QMARK_){
return (new cljs.tools.reader.impl.utils.ReaderConditional(splicing_QMARK_,form,null,null,null));
});
cljs.tools.reader.impl.utils.ReaderConditional.prototype.cljs$core$IPrintWithWriter$ = cljs.core.PROTOCOL_SENTINEL;
cljs.tools.reader.impl.utils.ReaderConditional.prototype.cljs$core$IPrintWithWriter$_pr_writer$arity$3 = (function (coll,writer,opts){
var coll__$1 = this;
cljs.core._write.call(null,writer,["#?",cljs.core.str.cljs$core$IFn$_invoke$arity$1((cljs.core.truth_(new cljs.core.Keyword(null,"splicing?","splicing?",-428596366).cljs$core$IFn$_invoke$arity$1(coll__$1))?"@":null))].join(''));
return cljs.core.pr_writer.call(null,new cljs.core.Keyword(null,"form","form",-1624062471).cljs$core$IFn$_invoke$arity$1(coll__$1),writer,opts);
});
cljs.tools.reader.impl.utils.ws_rx = /[\s]/;
/**
* Checks whether a given character is whitespace
*/
cljs.tools.reader.impl.utils.whitespace_QMARK_ = (function cljs$tools$reader$impl$utils$whitespace_QMARK_(ch){
if((ch == null)){
return null;
} else {
if((ch === ",")){
return true;
} else {
return cljs.tools.reader.impl.utils.ws_rx.test(ch);
}
}
});
/**
* Checks whether a given character is numeric
*/
cljs.tools.reader.impl.utils.numeric_QMARK_ = (function cljs$tools$reader$impl$utils$numeric_QMARK_(ch){
if((ch == null)){
return null;
} else {
return goog.string.isNumeric(ch);
}
});
/**
* Checks whether the character is a newline
*/
cljs.tools.reader.impl.utils.newline_QMARK_ = (function cljs$tools$reader$impl$utils$newline_QMARK_(c){
return (("\n" === c)) || (("\n" === c)) || ((c == null));
});
/**
* Resolves syntactical sugar in metadata
*/
cljs.tools.reader.impl.utils.desugar_meta = (function cljs$tools$reader$impl$utils$desugar_meta(f){
if((f instanceof cljs.core.Keyword)){
return cljs.core.PersistentArrayMap.createAsIfByAssoc([f,true]);
} else {
if((f instanceof cljs.core.Symbol)){
return new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"tag","tag",-1290361223),f], null);
} else {
if(typeof f === 'string'){
return new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"tag","tag",-1290361223),f], null);
} else {
return f;
}
}
}
});
cljs.tools.reader.impl.utils.last_id = cljs.core.atom.call(null,(0));
cljs.tools.reader.impl.utils.next_id = (function cljs$tools$reader$impl$utils$next_id(){
return cljs.core.swap_BANG_.call(null,cljs.tools.reader.impl.utils.last_id,cljs.core.inc);
});
cljs.tools.reader.impl.utils.namespace_keys = (function cljs$tools$reader$impl$utils$namespace_keys(ns,keys){
var iter__36380__auto__ = (function cljs$tools$reader$impl$utils$namespace_keys_$_iter__44182(s__44183){
return (new cljs.core.LazySeq(null,(function (){
var s__44183__$1 = s__44183;
while(true){
var temp__5457__auto__ = cljs.core.seq.call(null,s__44183__$1);
if(temp__5457__auto__){
var s__44183__$2 = temp__5457__auto__;
if(cljs.core.chunked_seq_QMARK_.call(null,s__44183__$2)){
var c__36378__auto__ = cljs.core.chunk_first.call(null,s__44183__$2);
var size__36379__auto__ = cljs.core.count.call(null,c__36378__auto__);
var b__44185 = cljs.core.chunk_buffer.call(null,size__36379__auto__);
if((function (){var i__44184 = (0);
while(true){
if((i__44184 < size__36379__auto__)){
var key = cljs.core._nth.call(null,c__36378__auto__,i__44184);
cljs.core.chunk_append.call(null,b__44185,((((key instanceof cljs.core.Symbol)) || ((key instanceof cljs.core.Keyword)))?(function (){var vec__44186 = cljs.core.juxt.call(null,cljs.core.namespace,cljs.core.name).call(null,key);
var key_ns = cljs.core.nth.call(null,vec__44186,(0),null);
var key_name = cljs.core.nth.call(null,vec__44186,(1),null);
var __GT_key = (((key instanceof cljs.core.Symbol))?cljs.core.symbol:cljs.core.keyword);
if((key_ns == null)){
return __GT_key.call(null,ns,key_name);
} else {
if(cljs.core._EQ_.call(null,"_",key_ns)){
return __GT_key.call(null,key_name);
} else {
return key;
}
}
})():key));
var G__44192 = (i__44184 + (1));
i__44184 = G__44192;
continue;
} else {
return true;
}
break;
}
})()){
return cljs.core.chunk_cons.call(null,cljs.core.chunk.call(null,b__44185),cljs$tools$reader$impl$utils$namespace_keys_$_iter__44182.call(null,cljs.core.chunk_rest.call(null,s__44183__$2)));
} else {
return cljs.core.chunk_cons.call(null,cljs.core.chunk.call(null,b__44185),null);
}
} else {
var key = cljs.core.first.call(null,s__44183__$2);
return cljs.core.cons.call(null,((((key instanceof cljs.core.Symbol)) || ((key instanceof cljs.core.Keyword)))?(function (){var vec__44189 = cljs.core.juxt.call(null,cljs.core.namespace,cljs.core.name).call(null,key);
var key_ns = cljs.core.nth.call(null,vec__44189,(0),null);
var key_name = cljs.core.nth.call(null,vec__44189,(1),null);
var __GT_key = (((key instanceof cljs.core.Symbol))?cljs.core.symbol:cljs.core.keyword);
if((key_ns == null)){
return __GT_key.call(null,ns,key_name);
} else {
if(cljs.core._EQ_.call(null,"_",key_ns)){
return __GT_key.call(null,key_name);
} else {
return key;
}
}
})():key),cljs$tools$reader$impl$utils$namespace_keys_$_iter__44182.call(null,cljs.core.rest.call(null,s__44183__$2)));
}
} else {
return null;
}
break;
}
}),null,null));
});
return iter__36380__auto__.call(null,keys);
});
cljs.tools.reader.impl.utils.second_SINGLEQUOTE_ = (function cljs$tools$reader$impl$utils$second_SINGLEQUOTE_(p__44193){
var vec__44194 = p__44193;
var a = cljs.core.nth.call(null,vec__44194,(0),null);
var b = cljs.core.nth.call(null,vec__44194,(1),null);
if(cljs.core.truth_(a)){
return null;
} else {
return b;
}
});
//# sourceMappingURL=utils.js.map?rel=1517021946268
@@ -0,0 +1 @@
{"version":3,"file":"\/home\/didier\/clojupyter\/website\/target\/cljsbuild\/public\/js\/out\/cljs\/tools\/reader\/impl\/utils.js","sources":["utils.cljs?rel=1517021946269"],"lineCount":356,"mappings":";AAQA;;;;AAMA,qCAAA,rCAAMA,iFAAMC;AAAZ,AACE,GAAU,MAAA,LAAMA;AAAhB;;AAAA,AACE,OAACC,0BAAeD;;;AAEpB,8CAAA,9CAAeE,oGAAUC;AAAzB,AACE,sBAAWC,dAAwBD;;AAErC,AAAA,AAAA,AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,AAAA,AAAA,AAAA,6FAAA,WAAAE,oBAAAC,5HAAW0D;;AAAX,AAAA,IAAA3D,0BAAA;AAAA,AAAA,OAAAA,+DAAAC,iBAAA;;;AAAA,AAAA,AAAA,6FAAA,WAAAC,oBAAAC,OAAAC,nIAAWuD;;AAAX,AAAA,IAAAzD,0BAAA;AAAA,AAAA,IAAAG,WAAAF;IAAAE,eAAA,EAAA,CAAAA,oBAAAC,oBAAA,AAAAD,aAAA;AAAA,AAAA,QAAAA;KAAA;AAAAE;;;KAAA;AAAAC;;;;AAAA,OAAAC,wBAAAC,gBAAAP,OAAAC;;;;;AAAA,AAAA,AAAA,yGAAA,WAAAO,oBAAAC,sBAAAC,9JAAW8C;;AAAX,AAAA,IAAAhD,0BAAA;AAAA,AAAA,IAAAG,yBAAA;kBAAAC;AAAA,AAAA,OAAAC,yCAAAJ,sBAAAK,oBAAA,GAAA,IAAA,GAAAJ,oBAAAE;;;AAAA,AAAA,OAAAC,yCAAAJ,sBAAAE,uBAAA,mDAAA,KAAA,IAAAD,oBAAA,AAAAK,2BAAA,mFAAA,KAAAC,2BAAA,KAAA,EAAA,IAAA,AAAAA,sCAAA,CAAA,+DAAAZ,wBAAA,OAAA,KAAAY,2BAAA,KAAA,EAAA,IAAA,AAAAA,sCAAA,CAAA,sDAAAX,aAAA,eAAAE;;;AAAA,AAAA,AAAA,iGAAA,WAAAU,5GAAWuC;;AAAX,AAAA,IAAAvC,eAAA;AAAA,AAAA,YAAAC,qBAAA,IAAAD,aAAA,EAAA,mFAAA,+DAAA,8DAAA,kBAAAV,iBAAA,AAAAY,8BAAAZ,iBAAA,AAAAa;;;AAAA,AAAA,AAAA,yFAAA,WAAAC,pGAAWmC;;AAAX,AAAA,IAAAnC,0BAAA;AAAA,AAAAC;;;AAAA,AAAA,AAAA,+FAAA,WAAAC,1GAAWiC;;AAAX,AAAA,IAAAjC,0BAAA;AAAA,AAAA,2DAAAnB,uBAAAC,YAAAiB,cAAAf,gBAAAiB,hHAAWgC;;;AAAX,AAAA,AAAA,6FAAA,WAAA\/B,xGAAW+B;;AAAX,AAAA,IAAA\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 truncated
@@ -0,0 +1,283 @@
;; Copyright (c) Nicola Mometto, Rich Hickey & contributors.
;; The use and distribution terms for this software are covered by the
;; Eclipse Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php)
;; which can be found in the file epl-v10.html at the root of this distribution.
;; By using this software in any fashion, you are agreeing to be bound by
;; the terms of this license.
;; You must not remove this notice, or any other, from this software.
(ns ^{:doc "Protocols and default Reader types implementation"
:author "Bronsa"}
cljs.tools.reader.reader-types
(:refer-clojure :exclude [char read-line])
(:require [cljs.tools.reader.impl.utils :refer [char whitespace? newline?]]
[goog.string])
(:import goog.string.StringBuffer))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; reader protocols
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defprotocol Reader
(read-char [reader]
"Returns the next char from the Reader, nil if the end of stream has been reached")
(peek-char [reader]
"Returns the next char from the Reader without removing it from the reader stream"))
(defprotocol IPushbackReader
(unread [reader ch]
"Pushes back a single character on to the stream"))
(defprotocol IndexingReader
(get-line-number [reader]
"Returns the line number of the next character to be read from the stream")
(get-column-number [reader]
"Returns the column number of the next character to be read from the stream")
(get-file-name [reader]
"Returns the file name the reader is reading from, or nil"))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; reader deftypes
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(deftype StringReader
[s s-len ^:mutable s-pos]
Reader
(read-char [reader]
(when (> s-len s-pos)
(let [r (.charAt s s-pos)]
(set! s-pos (inc s-pos))
r)))
(peek-char [reader]
(when (> s-len s-pos)
(.charAt s s-pos))))
(deftype NodeReadableReader [readable ^:mutable buf]
Reader
(read-char [reader]
(if buf
(let [c (aget buf 0)]
(set! buf nil)
(char c))
(let [c (str (.read readable 1))]
(when c
(char c)))))
(peek-char [reader]
(when-not buf
(set! buf (str (.read readable 1))))
(when buf
(char (aget buf 0)))))
(deftype PushbackReader
[^not-native rdr buf buf-len ^:mutable buf-pos]
Reader
(read-char [reader]
(let [c (if (< buf-pos buf-len)
(aget buf buf-pos)
(read-char rdr))]
(when (< buf-pos buf-len)
(set! buf-pos (inc buf-pos)))
(char c)))
(peek-char [reader]
(let [c (if (< buf-pos buf-len)
(aget buf buf-pos)
(peek-char rdr))]
(char c)))
IPushbackReader
(unread [reader ch]
(when ch
(if (zero? buf-pos) (throw (js/Error. "Pushback buffer is full")))
(set! buf-pos (dec buf-pos))
(aset buf buf-pos ch))))
(defn- normalize-newline [^not-native rdr ch]
(if (identical? \return ch)
(let [c (peek-char rdr)]
(when (or (identical? \formfeed c)
(identical? \newline c))
(read-char rdr))
\newline)
ch))
(deftype IndexingPushbackReader
[^not-native rdr ^:mutable line ^:mutable column
^:mutable line-start? ^:mutable prev
^:mutable prev-column file-name]
Reader
(read-char [reader]
(when-let [ch (read-char rdr)]
(let [ch (normalize-newline rdr ch)]
(set! prev line-start?)
(set! line-start? (newline? ch))
(when line-start?
(set! prev-column column)
(set! column 0)
(set! line (inc line)))
(set! column (inc column))
ch)))
(peek-char [reader]
(peek-char rdr))
IPushbackReader
(unread [reader ch]
(if line-start?
(do (set! line (dec line))
(set! column prev-column))
(set! column (dec column)))
(set! line-start? prev)
(unread rdr ch))
IndexingReader
(get-line-number [reader] (int line))
(get-column-number [reader] (int column))
(get-file-name [reader] file-name))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Source Logging support
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defn merge-meta
"Returns an object of the same type and value as `obj`, with its
metadata merged over `m`."
[obj m]
(let [orig-meta (meta obj)]
(with-meta obj (merge m (dissoc orig-meta :source)))))
(defn- peek-source-log
"Returns a string containing the contents of the top most source
logging frame."
[frames]
(subs (str (:buffer frames)) (first (:offset frames))))
(defn- log-source-char
"Logs `char` to all currently active source logging frames."
[frames char]
(when-let [buffer (:buffer frames)]
(.append buffer char)))
(defn- drop-last-logged-char
"Removes the last logged character from all currently active source
logging frames. Called when pushing a character back."
[frames]
(when-let [buffer (:buffer frames)]
(.set buffer (subs (str buffer) 0 (dec (.getLength buffer))))))
(deftype SourceLoggingPushbackReader
[^not-native rdr ^:mutable line ^:mutable column
^:mutable line-start? ^:mutable prev
^:mutable prev-column file-name frames]
Reader
(read-char [reader]
(when-let [ch (read-char rdr)]
(let [ch (normalize-newline rdr ch)]
(set! prev line-start?)
(set! line-start? (newline? ch))
(when line-start?
(set! prev-column column)
(set! column 0)
(set! line (inc line)))
(set! column (inc column))
(log-source-char @frames ch)
ch)))
(peek-char [reader]
(peek-char rdr))
IPushbackReader
(unread [reader ch]
(if line-start?
(do (set! line (dec line))
(set! column prev-column))
(set! column (dec column)))
(set! line-start? prev)
(when ch
(drop-last-logged-char @frames))
(unread rdr ch))
IndexingReader
(get-line-number [reader] (int line))
(get-column-number [reader] (int column))
(get-file-name [reader] file-name))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Public API
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; fast check for provided implementations
(defn indexing-reader?
"Returns true if the reader satisfies IndexingReader"
[rdr]
(implements? IndexingReader rdr))
(defn string-reader
"Creates a StringReader from a given string"
([s]
(StringReader. s (count s) 0)))
(defn string-push-back-reader
"Creates a PushbackReader from a given string"
([s]
(string-push-back-reader s 1))
([s buf-len]
(PushbackReader. (string-reader s) (object-array buf-len) buf-len buf-len)))
(defn node-readable-push-back-reader [readable]
(PushbackReader. (NodeReadableReader. readable nil) (object-array 1) 1 1))
(defn indexing-push-back-reader
"Creates an IndexingPushbackReader from a given string or PushbackReader"
([s-or-rdr]
(indexing-push-back-reader s-or-rdr 1))
([s-or-rdr buf-len]
(indexing-push-back-reader s-or-rdr buf-len nil))
([s-or-rdr buf-len file-name]
(IndexingPushbackReader.
(if (string? s-or-rdr) (string-push-back-reader s-or-rdr buf-len) s-or-rdr) 1 1 true nil 0 file-name)))
(defn source-logging-push-back-reader
"Creates a SourceLoggingPushbackReader from a given string or PushbackReader"
([s-or-rdr]
(source-logging-push-back-reader s-or-rdr 1))
([s-or-rdr buf-len]
(source-logging-push-back-reader s-or-rdr buf-len nil))
([s-or-rdr buf-len file-name]
(SourceLoggingPushbackReader.
(if (string? s-or-rdr) (string-push-back-reader s-or-rdr buf-len) s-or-rdr)
1
1
true
nil
0
file-name
(atom {:buffer (StringBuffer.) :offset '(0)}))))
(defn read-line
"Reads a line from the reader or from *in* if no reader is specified"
([^not-native rdr]
(loop [c (read-char rdr) s (StringBuffer.)]
(if (newline? c)
(str s)
(recur (read-char rdr) (.append s c))))))
(defn ^boolean source-logging-reader?
[rdr]
(instance? SourceLoggingPushbackReader rdr))
(defn ^boolean line-start?
"Returns true if rdr is an IndexingReader and the current char starts a new line"
[^not-native rdr]
(when (indexing-reader? rdr)
(== 1 (get-column-number rdr))))
(defn log-source*
[reader f]
(let [buffer (:buffer @(.-frames reader))]
(try
(swap! (.-frames reader) update-in [:offset] conj (.getLength buffer))
(let [ret (f)]
(if (implements? IMeta ret)
(merge-meta ret {:source (peek-source-log @ (.-frames reader))})
ret))
(finally
(swap! (.-frames reader) update-in [:offset] rest)))))
@@ -0,0 +1 @@
{:rename-macros {}, :renames {}, :externs {Error {}}, :use-macros {}, :excludes #{char read-line}, :name cljs.tools.reader.reader-types, :imports {StringBuffer goog.string.StringBuffer}, :requires {cljs.tools.reader.impl.utils cljs.tools.reader.impl.utils, goog.string goog.string, StringBuffer goog.string.StringBuffer}, :cljs.spec/speced-vars [], :uses {whitespace? cljs.tools.reader.impl.utils, char cljs.tools.reader.impl.utils, newline? cljs.tools.reader.impl.utils}, :defs {indexing-push-back-reader {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/cljs/tools/reader/reader_types.cljs", :line 227, :column 7, :end-line 227, :end-column 32, :arglists (quote ([s-or-rdr] [s-or-rdr buf-len] [s-or-rdr buf-len file-name])), :doc "Creates an IndexingPushbackReader from a given string or PushbackReader", :top-fn {:variadic false, :max-fixed-arity 3, :method-params ([s-or-rdr] [s-or-rdr buf-len] [s-or-rdr buf-len file-name]), :arglists ([s-or-rdr] [s-or-rdr buf-len] [s-or-rdr buf-len file-name]), :arglists-meta (nil nil nil)}}, :name cljs.tools.reader.reader-types/indexing-push-back-reader, :variadic false, :file "target/cljsbuild/public/js/out/cljs/tools/reader/reader_types.cljs", :end-column 32, :top-fn {:variadic false, :max-fixed-arity 3, :method-params ([s-or-rdr] [s-or-rdr buf-len] [s-or-rdr buf-len file-name]), :arglists ([s-or-rdr] [s-or-rdr buf-len] [s-or-rdr buf-len file-name]), :arglists-meta (nil nil nil)}, :method-params ([s-or-rdr] [s-or-rdr buf-len] [s-or-rdr buf-len file-name]), :protocol-impl nil, :arglists-meta (nil nil nil), :column 1, :line 227, :end-line 227, :max-fixed-arity 3, :fn-var true, :arglists ([s-or-rdr] [s-or-rdr buf-len] [s-or-rdr buf-len file-name]), :doc "Creates an IndexingPushbackReader from a given string or PushbackReader"}, log-source* {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/cljs/tools/reader/reader_types.cljs", :line 272, :column 7, :end-line 272, :end-column 18, :arglists (quote ([reader f]))}, :name cljs.tools.reader.reader-types/log-source*, :variadic false, :file "target/cljsbuild/public/js/out/cljs/tools/reader/reader_types.cljs", :end-column 18, :method-params ([reader f]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 272, :end-line 272, :max-fixed-arity 2, :fn-var true, :arglists (quote ([reader f]))}, merge-meta {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/cljs/tools/reader/reader_types.cljs", :line 139, :column 7, :end-line 139, :end-column 17, :arglists (quote ([obj m])), :doc "Returns an object of the same type and value as `obj`, with its\nmetadata merged over `m`."}, :name cljs.tools.reader.reader-types/merge-meta, :variadic false, :file "target/cljsbuild/public/js/out/cljs/tools/reader/reader_types.cljs", :end-column 17, :method-params ([obj m]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 139, :end-line 139, :max-fixed-arity 2, :fn-var true, :arglists (quote ([obj m])), :doc "Returns an object of the same type and value as `obj`, with its\nmetadata merged over `m`."}, PushbackReader {:num-fields 4, :protocols #{cljs.tools.reader.reader-types/Reader cljs.tools.reader.reader-types/IPushbackReader}, :name cljs.tools.reader.reader-types/PushbackReader, :file "target/cljsbuild/public/js/out/cljs/tools/reader/reader_types.cljs", :end-column 24, :type true, :column 10, :line 71, :record false, :end-line 71, :skip-protocol-flag nil}, ->StringReader {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/cljs/tools/reader/reader_types.cljs", :line 43, :column 10, :end-line 43, :end-column 22, :protocols #{cljs.tools.reader.reader-types/Reader}, :skip-protocol-flag nil, :factory :positional, :arglists (quote ([s s-len s-pos]))}, :protocols #{cljs.tools.reader.reader-types/Reader}, :name cljs.tools.reader.reader-types/->StringReader, :variadic false, :file "target/cljsbuild/public/js/out/cljs/tools/reader/reader_types.cljs", :end-column 22, :method-params ([s s-len s-pos]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :factory :positional, :line 43, :end-line 43, :max-fixed-arity 3, :fn-var true, :arglists (quote ([s s-len s-pos])), :skip-protocol-flag nil}, normalize-newline {:protocol-inline nil, :meta {:file "/home/didier/clojupyter/website/target/cljsbuild/public/js/out/cljs/tools/reader/reader_types.cljs", :line 93, :column 8, :end-line 93, :end-column 25, :private true, :arglists (quote ([rdr ch]))}, :private true, :name cljs.tools.reader.reader-types/normalize-newline, :variadic false, :file "target/cljsbuild/public/js/out/cljs/tools/reader/reader_types.cljs", :end-column 25, :method-params ([rdr ch]), :protocol-impl nil, :arglists-meta (nil nil), :column 1, :line 93, :end-line 93, :max-fixed-arity 2, :fn-var true, :arglists (quote ([rdr ch]))}, peek-source-log {:protocol-inline nil, :meta {:file "/home/didier/cLine truncated
@@ -0,0 +1,783 @@
// Compiled by ClojureScript 1.9.946 {}
goog.provide('cljs.tools.reader.reader_types');
goog.require('cljs.core');
goog.require('cljs.tools.reader.impl.utils');
goog.require('goog.string');
goog.require('goog.string.StringBuffer');
/**
* @interface
*/
cljs.tools.reader.reader_types.Reader = function(){};
/**
* Returns the next char from the Reader, nil if the end of stream has been reached
*/
cljs.tools.reader.reader_types.read_char = (function cljs$tools$reader$reader_types$read_char(reader){
if((!((reader == null))) && (!((reader.cljs$tools$reader$reader_types$Reader$read_char$arity$1 == null)))){
return reader.cljs$tools$reader$reader_types$Reader$read_char$arity$1(reader);
} else {
var x__36231__auto__ = (((reader == null))?null:reader);
var m__36232__auto__ = (cljs.tools.reader.reader_types.read_char[goog.typeOf(x__36231__auto__)]);
if(!((m__36232__auto__ == null))){
return m__36232__auto__.call(null,reader);
} else {
var m__36232__auto____$1 = (cljs.tools.reader.reader_types.read_char["_"]);
if(!((m__36232__auto____$1 == null))){
return m__36232__auto____$1.call(null,reader);
} else {
throw cljs.core.missing_protocol.call(null,"Reader.read-char",reader);
}
}
}
});
/**
* Returns the next char from the Reader without removing it from the reader stream
*/
cljs.tools.reader.reader_types.peek_char = (function cljs$tools$reader$reader_types$peek_char(reader){
if((!((reader == null))) && (!((reader.cljs$tools$reader$reader_types$Reader$peek_char$arity$1 == null)))){
return reader.cljs$tools$reader$reader_types$Reader$peek_char$arity$1(reader);
} else {
var x__36231__auto__ = (((reader == null))?null:reader);
var m__36232__auto__ = (cljs.tools.reader.reader_types.peek_char[goog.typeOf(x__36231__auto__)]);
if(!((m__36232__auto__ == null))){
return m__36232__auto__.call(null,reader);
} else {
var m__36232__auto____$1 = (cljs.tools.reader.reader_types.peek_char["_"]);
if(!((m__36232__auto____$1 == null))){
return m__36232__auto____$1.call(null,reader);
} else {
throw cljs.core.missing_protocol.call(null,"Reader.peek-char",reader);
}
}
}
});
/**
* @interface
*/
cljs.tools.reader.reader_types.IPushbackReader = function(){};
/**
* Pushes back a single character on to the stream
*/
cljs.tools.reader.reader_types.unread = (function cljs$tools$reader$reader_types$unread(reader,ch){
if((!((reader == null))) && (!((reader.cljs$tools$reader$reader_types$IPushbackReader$unread$arity$2 == null)))){
return reader.cljs$tools$reader$reader_types$IPushbackReader$unread$arity$2(reader,ch);
} else {
var x__36231__auto__ = (((reader == null))?null:reader);
var m__36232__auto__ = (cljs.tools.reader.reader_types.unread[goog.typeOf(x__36231__auto__)]);
if(!((m__36232__auto__ == null))){
return m__36232__auto__.call(null,reader,ch);
} else {
var m__36232__auto____$1 = (cljs.tools.reader.reader_types.unread["_"]);
if(!((m__36232__auto____$1 == null))){
return m__36232__auto____$1.call(null,reader,ch);
} else {
throw cljs.core.missing_protocol.call(null,"IPushbackReader.unread",reader);
}
}
}
});
/**
* @interface
*/
cljs.tools.reader.reader_types.IndexingReader = function(){};
/**
* Returns the line number of the next character to be read from the stream
*/
cljs.tools.reader.reader_types.get_line_number = (function cljs$tools$reader$reader_types$get_line_number(reader){
if((!((reader == null))) && (!((reader.cljs$tools$reader$reader_types$IndexingReader$get_line_number$arity$1 == null)))){
return reader.cljs$tools$reader$reader_types$IndexingReader$get_line_number$arity$1(reader);
} else {
var x__36231__auto__ = (((reader == null))?null:reader);
var m__36232__auto__ = (cljs.tools.reader.reader_types.get_line_number[goog.typeOf(x__36231__auto__)]);
if(!((m__36232__auto__ == null))){
return m__36232__auto__.call(null,reader);
} else {
var m__36232__auto____$1 = (cljs.tools.reader.reader_types.get_line_number["_"]);
if(!((m__36232__auto____$1 == null))){
return m__36232__auto____$1.call(null,reader);
} else {
throw cljs.core.missing_protocol.call(null,"IndexingReader.get-line-number",reader);
}
}
}
});
/**
* Returns the column number of the next character to be read from the stream
*/
cljs.tools.reader.reader_types.get_column_number = (function cljs$tools$reader$reader_types$get_column_number(reader){
if((!((reader == null))) && (!((reader.cljs$tools$reader$reader_types$IndexingReader$get_column_number$arity$1 == null)))){
return reader.cljs$tools$reader$reader_types$IndexingReader$get_column_number$arity$1(reader);
} else {
var x__36231__auto__ = (((reader == null))?null:reader);
var m__36232__auto__ = (cljs.tools.reader.reader_types.get_column_number[goog.typeOf(x__36231__auto__)]);
if(!((m__36232__auto__ == null))){
return m__36232__auto__.call(null,reader);
} else {
var m__36232__auto____$1 = (cljs.tools.reader.reader_types.get_column_number["_"]);
if(!((m__36232__auto____$1 == null))){
return m__36232__auto____$1.call(null,reader);
} else {
throw cljs.core.missing_protocol.call(null,"IndexingReader.get-column-number",reader);
}
}
}
});
/**
* Returns the file name the reader is reading from, or nil
*/
cljs.tools.reader.reader_types.get_file_name = (function cljs$tools$reader$reader_types$get_file_name(reader){
if((!((reader == null))) && (!((reader.cljs$tools$reader$reader_types$IndexingReader$get_file_name$arity$1 == null)))){
return reader.cljs$tools$reader$reader_types$IndexingReader$get_file_name$arity$1(reader);
} else {
var x__36231__auto__ = (((reader == null))?null:reader);
var m__36232__auto__ = (cljs.tools.reader.reader_types.get_file_name[goog.typeOf(x__36231__auto__)]);
if(!((m__36232__auto__ == null))){
return m__36232__auto__.call(null,reader);
} else {
var m__36232__auto____$1 = (cljs.tools.reader.reader_types.get_file_name["_"]);
if(!((m__36232__auto____$1 == null))){
return m__36232__auto____$1.call(null,reader);
} else {
throw cljs.core.missing_protocol.call(null,"IndexingReader.get-file-name",reader);
}
}
}
});
/**
* @constructor
* @implements {cljs.tools.reader.reader_types.Reader}
*/
cljs.tools.reader.reader_types.StringReader = (function (s,s_len,s_pos){
this.s = s;
this.s_len = s_len;
this.s_pos = s_pos;
});
cljs.tools.reader.reader_types.StringReader.prototype.cljs$tools$reader$reader_types$Reader$ = cljs.core.PROTOCOL_SENTINEL;
cljs.tools.reader.reader_types.StringReader.prototype.cljs$tools$reader$reader_types$Reader$read_char$arity$1 = (function (reader){
var self__ = this;
var reader__$1 = this;
if((self__.s_len > self__.s_pos)){
var r = self__.s.charAt(self__.s_pos);
self__.s_pos = (self__.s_pos + (1));
return r;
} else {
return null;
}
});
cljs.tools.reader.reader_types.StringReader.prototype.cljs$tools$reader$reader_types$Reader$peek_char$arity$1 = (function (reader){
var self__ = this;
var reader__$1 = this;
if((self__.s_len > self__.s_pos)){
return self__.s.charAt(self__.s_pos);
} else {
return null;
}
});
cljs.tools.reader.reader_types.StringReader.getBasis = (function (){
return new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"s","s",-948495851,null),new cljs.core.Symbol(null,"s-len","s-len",1869978331,null),cljs.core.with_meta(new cljs.core.Symbol(null,"s-pos","s-pos",-540562492,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
});
cljs.tools.reader.reader_types.StringReader.cljs$lang$type = true;
cljs.tools.reader.reader_types.StringReader.cljs$lang$ctorStr = "cljs.tools.reader.reader-types/StringReader";
cljs.tools.reader.reader_types.StringReader.cljs$lang$ctorPrWriter = (function (this__36169__auto__,writer__36170__auto__,opt__36171__auto__){
return cljs.core._write.call(null,writer__36170__auto__,"cljs.tools.reader.reader-types/StringReader");
});
cljs.tools.reader.reader_types.__GT_StringReader = (function cljs$tools$reader$reader_types$__GT_StringReader(s,s_len,s_pos){
return (new cljs.tools.reader.reader_types.StringReader(s,s_len,s_pos));
});
/**
* @constructor
* @implements {cljs.tools.reader.reader_types.Reader}
*/
cljs.tools.reader.reader_types.NodeReadableReader = (function (readable,buf){
this.readable = readable;
this.buf = buf;
});
cljs.tools.reader.reader_types.NodeReadableReader.prototype.cljs$tools$reader$reader_types$Reader$ = cljs.core.PROTOCOL_SENTINEL;
cljs.tools.reader.reader_types.NodeReadableReader.prototype.cljs$tools$reader$reader_types$Reader$read_char$arity$1 = (function (reader){
var self__ = this;
var reader__$1 = this;
if(cljs.core.truth_(self__.buf)){
var c = (self__.buf[(0)]);
self__.buf = null;
return cljs.tools.reader.impl.utils.char$.call(null,c);
} else {
var c = [cljs.core.str.cljs$core$IFn$_invoke$arity$1(self__.readable.read((1)))].join('');
if(cljs.core.truth_(c)){
return cljs.tools.reader.impl.utils.char$.call(null,c);
} else {
return null;
}
}
});
cljs.tools.reader.reader_types.NodeReadableReader.prototype.cljs$tools$reader$reader_types$Reader$peek_char$arity$1 = (function (reader){
var self__ = this;
var reader__$1 = this;
if(cljs.core.truth_(self__.buf)){
} else {
self__.buf = [cljs.core.str.cljs$core$IFn$_invoke$arity$1(self__.readable.read((1)))].join('');
}
if(cljs.core.truth_(self__.buf)){
return cljs.tools.reader.impl.utils.char$.call(null,(self__.buf[(0)]));
} else {
return null;
}
});
cljs.tools.reader.reader_types.NodeReadableReader.getBasis = (function (){
return new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"readable","readable",2113054478,null),cljs.core.with_meta(new cljs.core.Symbol(null,"buf","buf",1426618187,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
});
cljs.tools.reader.reader_types.NodeReadableReader.cljs$lang$type = true;
cljs.tools.reader.reader_types.NodeReadableReader.cljs$lang$ctorStr = "cljs.tools.reader.reader-types/NodeReadableReader";
cljs.tools.reader.reader_types.NodeReadableReader.cljs$lang$ctorPrWriter = (function (this__36169__auto__,writer__36170__auto__,opt__36171__auto__){
return cljs.core._write.call(null,writer__36170__auto__,"cljs.tools.reader.reader-types/NodeReadableReader");
});
cljs.tools.reader.reader_types.__GT_NodeReadableReader = (function cljs$tools$reader$reader_types$__GT_NodeReadableReader(readable,buf){
return (new cljs.tools.reader.reader_types.NodeReadableReader(readable,buf));
});
/**
* @constructor
* @implements {cljs.tools.reader.reader_types.Reader}
* @implements {cljs.tools.reader.reader_types.IPushbackReader}
*/
cljs.tools.reader.reader_types.PushbackReader = (function (rdr,buf,buf_len,buf_pos){
this.rdr = rdr;
this.buf = buf;
this.buf_len = buf_len;
this.buf_pos = buf_pos;
});
cljs.tools.reader.reader_types.PushbackReader.prototype.cljs$tools$reader$reader_types$Reader$ = cljs.core.PROTOCOL_SENTINEL;
cljs.tools.reader.reader_types.PushbackReader.prototype.cljs$tools$reader$reader_types$Reader$read_char$arity$1 = (function (reader){
var self__ = this;
var reader__$1 = this;
var c = (((self__.buf_pos < self__.buf_len))?(self__.buf[self__.buf_pos]):cljs.tools.reader.reader_types.read_char.call(null,self__.rdr));
if((self__.buf_pos < self__.buf_len)){
self__.buf_pos = (self__.buf_pos + (1));
} else {
}
return cljs.tools.reader.impl.utils.char$.call(null,c);
});
cljs.tools.reader.reader_types.PushbackReader.prototype.cljs$tools$reader$reader_types$Reader$peek_char$arity$1 = (function (reader){
var self__ = this;
var reader__$1 = this;
var c = (((self__.buf_pos < self__.buf_len))?(self__.buf[self__.buf_pos]):cljs.tools.reader.reader_types.peek_char.call(null,self__.rdr));
return cljs.tools.reader.impl.utils.char$.call(null,c);
});
cljs.tools.reader.reader_types.PushbackReader.prototype.cljs$tools$reader$reader_types$IPushbackReader$ = cljs.core.PROTOCOL_SENTINEL;
cljs.tools.reader.reader_types.PushbackReader.prototype.cljs$tools$reader$reader_types$IPushbackReader$unread$arity$2 = (function (reader,ch){
var self__ = this;
var reader__$1 = this;
if(cljs.core.truth_(ch)){
if((self__.buf_pos === (0))){
throw (new Error("Pushback buffer is full"));
} else {
}
self__.buf_pos = (self__.buf_pos - (1));
return (self__.buf[self__.buf_pos] = ch);
} else {
return null;
}
});
cljs.tools.reader.reader_types.PushbackReader.getBasis = (function (){
return new cljs.core.PersistentVector(null, 4, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.with_meta(new cljs.core.Symbol(null,"rdr","rdr",190007785,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"tag","tag",-1290361223),new cljs.core.Symbol(null,"not-native","not-native",-236392494,null)], null)),new cljs.core.Symbol(null,"buf","buf",1426618187,null),new cljs.core.Symbol(null,"buf-len","buf-len",404510846,null),cljs.core.with_meta(new cljs.core.Symbol(null,"buf-pos","buf-pos",-807229033,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null))], null);
});
cljs.tools.reader.reader_types.PushbackReader.cljs$lang$type = true;
cljs.tools.reader.reader_types.PushbackReader.cljs$lang$ctorStr = "cljs.tools.reader.reader-types/PushbackReader";
cljs.tools.reader.reader_types.PushbackReader.cljs$lang$ctorPrWriter = (function (this__36169__auto__,writer__36170__auto__,opt__36171__auto__){
return cljs.core._write.call(null,writer__36170__auto__,"cljs.tools.reader.reader-types/PushbackReader");
});
cljs.tools.reader.reader_types.__GT_PushbackReader = (function cljs$tools$reader$reader_types$__GT_PushbackReader(rdr,buf,buf_len,buf_pos){
return (new cljs.tools.reader.reader_types.PushbackReader(rdr,buf,buf_len,buf_pos));
});
cljs.tools.reader.reader_types.normalize_newline = (function cljs$tools$reader$reader_types$normalize_newline(rdr,ch){
if(("\r" === ch)){
var c = cljs.tools.reader.reader_types.peek_char.call(null,rdr);
if((("\f" === c)) || (("\n" === c))){
cljs.tools.reader.reader_types.read_char.call(null,rdr);
} else {
}
return "\n";
} else {
return ch;
}
});
/**
* @constructor
* @implements {cljs.tools.reader.reader_types.IndexingReader}
* @implements {cljs.tools.reader.reader_types.Reader}
* @implements {cljs.tools.reader.reader_types.IPushbackReader}
*/
cljs.tools.reader.reader_types.IndexingPushbackReader = (function (rdr,line,column,line_start_QMARK_,prev,prev_column,file_name){
this.rdr = rdr;
this.line = line;
this.column = column;
this.line_start_QMARK_ = line_start_QMARK_;
this.prev = prev;
this.prev_column = prev_column;
this.file_name = file_name;
});
cljs.tools.reader.reader_types.IndexingPushbackReader.prototype.cljs$tools$reader$reader_types$Reader$ = cljs.core.PROTOCOL_SENTINEL;
cljs.tools.reader.reader_types.IndexingPushbackReader.prototype.cljs$tools$reader$reader_types$Reader$read_char$arity$1 = (function (reader){
var self__ = this;
var reader__$1 = this;
var temp__5457__auto__ = cljs.tools.reader.reader_types.read_char.call(null,self__.rdr);
if(cljs.core.truth_(temp__5457__auto__)){
var ch = temp__5457__auto__;
var ch__$1 = cljs.tools.reader.reader_types.normalize_newline.call(null,self__.rdr,ch);
self__.prev = self__.line_start_QMARK_;
self__.line_start_QMARK_ = cljs.tools.reader.impl.utils.newline_QMARK_.call(null,ch__$1);
if(cljs.core.truth_(self__.line_start_QMARK_)){
self__.prev_column = self__.column;
self__.column = (0);
self__.line = (self__.line + (1));
} else {
}
self__.column = (self__.column + (1));
return ch__$1;
} else {
return null;
}
});
cljs.tools.reader.reader_types.IndexingPushbackReader.prototype.cljs$tools$reader$reader_types$Reader$peek_char$arity$1 = (function (reader){
var self__ = this;
var reader__$1 = this;
return cljs.tools.reader.reader_types.peek_char.call(null,self__.rdr);
});
cljs.tools.reader.reader_types.IndexingPushbackReader.prototype.cljs$tools$reader$reader_types$IPushbackReader$ = cljs.core.PROTOCOL_SENTINEL;
cljs.tools.reader.reader_types.IndexingPushbackReader.prototype.cljs$tools$reader$reader_types$IPushbackReader$unread$arity$2 = (function (reader,ch){
var self__ = this;
var reader__$1 = this;
if(cljs.core.truth_(self__.line_start_QMARK_)){
self__.line = (self__.line - (1));
self__.column = self__.prev_column;
} else {
self__.column = (self__.column - (1));
}
self__.line_start_QMARK_ = self__.prev;
return cljs.tools.reader.reader_types.unread.call(null,self__.rdr,ch);
});
cljs.tools.reader.reader_types.IndexingPushbackReader.prototype.cljs$tools$reader$reader_types$IndexingReader$ = cljs.core.PROTOCOL_SENTINEL;
cljs.tools.reader.reader_types.IndexingPushbackReader.prototype.cljs$tools$reader$reader_types$IndexingReader$get_line_number$arity$1 = (function (reader){
var self__ = this;
var reader__$1 = this;
return (self__.line | (0));
});
cljs.tools.reader.reader_types.IndexingPushbackReader.prototype.cljs$tools$reader$reader_types$IndexingReader$get_column_number$arity$1 = (function (reader){
var self__ = this;
var reader__$1 = this;
return (self__.column | (0));
});
cljs.tools.reader.reader_types.IndexingPushbackReader.prototype.cljs$tools$reader$reader_types$IndexingReader$get_file_name$arity$1 = (function (reader){
var self__ = this;
var reader__$1 = this;
return self__.file_name;
});
cljs.tools.reader.reader_types.IndexingPushbackReader.getBasis = (function (){
return new cljs.core.PersistentVector(null, 7, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.with_meta(new cljs.core.Symbol(null,"rdr","rdr",190007785,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"tag","tag",-1290361223),new cljs.core.Symbol(null,"not-native","not-native",-236392494,null)], null)),cljs.core.with_meta(new cljs.core.Symbol(null,"line","line",1852876762,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),cljs.core.with_meta(new cljs.core.Symbol(null,"column","column",-576213674,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),cljs.core.with_meta(new cljs.core.Symbol(null,"line-start?","line-start?",1357012474,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),cljs.core.with_meta(new cljs.core.Symbol(null,"prev","prev",43462301,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),cljs.core.with_meta(new cljs.core.Symbol(null,"prev-column","prev-column",324083974,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),new cljs.core.Symbol(null,"file-name","file-name",-13685732,null)], null);
});
cljs.tools.reader.reader_types.IndexingPushbackReader.cljs$lang$type = true;
cljs.tools.reader.reader_types.IndexingPushbackReader.cljs$lang$ctorStr = "cljs.tools.reader.reader-types/IndexingPushbackReader";
cljs.tools.reader.reader_types.IndexingPushbackReader.cljs$lang$ctorPrWriter = (function (this__36169__auto__,writer__36170__auto__,opt__36171__auto__){
return cljs.core._write.call(null,writer__36170__auto__,"cljs.tools.reader.reader-types/IndexingPushbackReader");
});
cljs.tools.reader.reader_types.__GT_IndexingPushbackReader = (function cljs$tools$reader$reader_types$__GT_IndexingPushbackReader(rdr,line,column,line_start_QMARK_,prev,prev_column,file_name){
return (new cljs.tools.reader.reader_types.IndexingPushbackReader(rdr,line,column,line_start_QMARK_,prev,prev_column,file_name));
});
/**
* Returns an object of the same type and value as `obj`, with its
* metadata merged over `m`.
*/
cljs.tools.reader.reader_types.merge_meta = (function cljs$tools$reader$reader_types$merge_meta(obj,m){
var orig_meta = cljs.core.meta.call(null,obj);
return cljs.core.with_meta.call(null,obj,cljs.core.merge.call(null,m,cljs.core.dissoc.call(null,orig_meta,new cljs.core.Keyword(null,"source","source",-433931539))));
});
/**
* Returns a string containing the contents of the top most source
* logging frame.
*/
cljs.tools.reader.reader_types.peek_source_log = (function cljs$tools$reader$reader_types$peek_source_log(frames){
return cljs.core.subs.call(null,[cljs.core.str.cljs$core$IFn$_invoke$arity$1(new cljs.core.Keyword(null,"buffer","buffer",617295198).cljs$core$IFn$_invoke$arity$1(frames))].join(''),cljs.core.first.call(null,new cljs.core.Keyword(null,"offset","offset",296498311).cljs$core$IFn$_invoke$arity$1(frames)));
});
/**
* Logs `char` to all currently active source logging frames.
*/
cljs.tools.reader.reader_types.log_source_char = (function cljs$tools$reader$reader_types$log_source_char(frames,char$){
var temp__5457__auto__ = new cljs.core.Keyword(null,"buffer","buffer",617295198).cljs$core$IFn$_invoke$arity$1(frames);
if(cljs.core.truth_(temp__5457__auto__)){
var buffer = temp__5457__auto__;
return buffer.append(char$);
} else {
return null;
}
});
/**
* Removes the last logged character from all currently active source
* logging frames. Called when pushing a character back.
*/
cljs.tools.reader.reader_types.drop_last_logged_char = (function cljs$tools$reader$reader_types$drop_last_logged_char(frames){
var temp__5457__auto__ = new cljs.core.Keyword(null,"buffer","buffer",617295198).cljs$core$IFn$_invoke$arity$1(frames);
if(cljs.core.truth_(temp__5457__auto__)){
var buffer = temp__5457__auto__;
return buffer.set(cljs.core.subs.call(null,[cljs.core.str.cljs$core$IFn$_invoke$arity$1(buffer)].join(''),(0),(buffer.getLength() - (1))));
} else {
return null;
}
});
/**
* @constructor
* @implements {cljs.tools.reader.reader_types.IndexingReader}
* @implements {cljs.tools.reader.reader_types.Reader}
* @implements {cljs.tools.reader.reader_types.IPushbackReader}
*/
cljs.tools.reader.reader_types.SourceLoggingPushbackReader = (function (rdr,line,column,line_start_QMARK_,prev,prev_column,file_name,frames){
this.rdr = rdr;
this.line = line;
this.column = column;
this.line_start_QMARK_ = line_start_QMARK_;
this.prev = prev;
this.prev_column = prev_column;
this.file_name = file_name;
this.frames = frames;
});
cljs.tools.reader.reader_types.SourceLoggingPushbackReader.prototype.cljs$tools$reader$reader_types$Reader$ = cljs.core.PROTOCOL_SENTINEL;
cljs.tools.reader.reader_types.SourceLoggingPushbackReader.prototype.cljs$tools$reader$reader_types$Reader$read_char$arity$1 = (function (reader){
var self__ = this;
var reader__$1 = this;
var temp__5457__auto__ = cljs.tools.reader.reader_types.read_char.call(null,self__.rdr);
if(cljs.core.truth_(temp__5457__auto__)){
var ch = temp__5457__auto__;
var ch__$1 = cljs.tools.reader.reader_types.normalize_newline.call(null,self__.rdr,ch);
self__.prev = self__.line_start_QMARK_;
self__.line_start_QMARK_ = cljs.tools.reader.impl.utils.newline_QMARK_.call(null,ch__$1);
if(cljs.core.truth_(self__.line_start_QMARK_)){
self__.prev_column = self__.column;
self__.column = (0);
self__.line = (self__.line + (1));
} else {
}
self__.column = (self__.column + (1));
cljs.tools.reader.reader_types.log_source_char.call(null,cljs.core.deref.call(null,self__.frames),ch__$1);
return ch__$1;
} else {
return null;
}
});
cljs.tools.reader.reader_types.SourceLoggingPushbackReader.prototype.cljs$tools$reader$reader_types$Reader$peek_char$arity$1 = (function (reader){
var self__ = this;
var reader__$1 = this;
return cljs.tools.reader.reader_types.peek_char.call(null,self__.rdr);
});
cljs.tools.reader.reader_types.SourceLoggingPushbackReader.prototype.cljs$tools$reader$reader_types$IPushbackReader$ = cljs.core.PROTOCOL_SENTINEL;
cljs.tools.reader.reader_types.SourceLoggingPushbackReader.prototype.cljs$tools$reader$reader_types$IPushbackReader$unread$arity$2 = (function (reader,ch){
var self__ = this;
var reader__$1 = this;
if(cljs.core.truth_(self__.line_start_QMARK_)){
self__.line = (self__.line - (1));
self__.column = self__.prev_column;
} else {
self__.column = (self__.column - (1));
}
self__.line_start_QMARK_ = self__.prev;
if(cljs.core.truth_(ch)){
cljs.tools.reader.reader_types.drop_last_logged_char.call(null,cljs.core.deref.call(null,self__.frames));
} else {
}
return cljs.tools.reader.reader_types.unread.call(null,self__.rdr,ch);
});
cljs.tools.reader.reader_types.SourceLoggingPushbackReader.prototype.cljs$tools$reader$reader_types$IndexingReader$ = cljs.core.PROTOCOL_SENTINEL;
cljs.tools.reader.reader_types.SourceLoggingPushbackReader.prototype.cljs$tools$reader$reader_types$IndexingReader$get_line_number$arity$1 = (function (reader){
var self__ = this;
var reader__$1 = this;
return (self__.line | (0));
});
cljs.tools.reader.reader_types.SourceLoggingPushbackReader.prototype.cljs$tools$reader$reader_types$IndexingReader$get_column_number$arity$1 = (function (reader){
var self__ = this;
var reader__$1 = this;
return (self__.column | (0));
});
cljs.tools.reader.reader_types.SourceLoggingPushbackReader.prototype.cljs$tools$reader$reader_types$IndexingReader$get_file_name$arity$1 = (function (reader){
var self__ = this;
var reader__$1 = this;
return self__.file_name;
});
cljs.tools.reader.reader_types.SourceLoggingPushbackReader.getBasis = (function (){
return new cljs.core.PersistentVector(null, 8, 5, cljs.core.PersistentVector.EMPTY_NODE, [cljs.core.with_meta(new cljs.core.Symbol(null,"rdr","rdr",190007785,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"tag","tag",-1290361223),new cljs.core.Symbol(null,"not-native","not-native",-236392494,null)], null)),cljs.core.with_meta(new cljs.core.Symbol(null,"line","line",1852876762,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),cljs.core.with_meta(new cljs.core.Symbol(null,"column","column",-576213674,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),cljs.core.with_meta(new cljs.core.Symbol(null,"line-start?","line-start?",1357012474,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),cljs.core.with_meta(new cljs.core.Symbol(null,"prev","prev",43462301,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),cljs.core.with_meta(new cljs.core.Symbol(null,"prev-column","prev-column",324083974,null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"mutable","mutable",875778266),true], null)),new cljs.core.Symbol(null,"file-name","file-name",-13685732,null),new cljs.core.Symbol(null,"frames","frames",-888748272,null)], null);
});
cljs.tools.reader.reader_types.SourceLoggingPushbackReader.cljs$lang$type = true;
cljs.tools.reader.reader_types.SourceLoggingPushbackReader.cljs$lang$ctorStr = "cljs.tools.reader.reader-types/SourceLoggingPushbackReader";
cljs.tools.reader.reader_types.SourceLoggingPushbackReader.cljs$lang$ctorPrWriter = (function (this__36169__auto__,writer__36170__auto__,opt__36171__auto__){
return cljs.core._write.call(null,writer__36170__auto__,"cljs.tools.reader.reader-types/SourceLoggingPushbackReader");
});
cljs.tools.reader.reader_types.__GT_SourceLoggingPushbackReader = (function cljs$tools$reader$reader_types$__GT_SourceLoggingPushbackReader(rdr,line,column,line_start_QMARK_,prev,prev_column,file_name,frames){
return (new cljs.tools.reader.reader_types.SourceLoggingPushbackReader(rdr,line,column,line_start_QMARK_,prev,prev_column,file_name,frames));
});
/**
* Returns true if the reader satisfies IndexingReader
*/
cljs.tools.reader.reader_types.indexing_reader_QMARK_ = (function cljs$tools$reader$reader_types$indexing_reader_QMARK_(rdr){
if(!((rdr == null))){
if((false) || ((cljs.core.PROTOCOL_SENTINEL === rdr.cljs$tools$reader$reader_types$IndexingReader$))){
return true;
} else {
return false;
}
} else {
return false;
}
});
/**
* Creates a StringReader from a given string
*/
cljs.tools.reader.reader_types.string_reader = (function cljs$tools$reader$reader_types$string_reader(s){
return (new cljs.tools.reader.reader_types.StringReader(s,cljs.core.count.call(null,s),(0)));
});
/**
* Creates a PushbackReader from a given string
*/
cljs.tools.reader.reader_types.string_push_back_reader = (function cljs$tools$reader$reader_types$string_push_back_reader(var_args){
var G__44201 = arguments.length;
switch (G__44201) {
case 1:
return cljs.tools.reader.reader_types.string_push_back_reader.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
break;
case 2:
return cljs.tools.reader.reader_types.string_push_back_reader.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
break;
default:
throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
}
});
cljs.tools.reader.reader_types.string_push_back_reader.cljs$core$IFn$_invoke$arity$1 = (function (s){
return cljs.tools.reader.reader_types.string_push_back_reader.call(null,s,(1));
});
cljs.tools.reader.reader_types.string_push_back_reader.cljs$core$IFn$_invoke$arity$2 = (function (s,buf_len){
return (new cljs.tools.reader.reader_types.PushbackReader(cljs.tools.reader.reader_types.string_reader.call(null,s),cljs.core.object_array.call(null,buf_len),buf_len,buf_len));
});
cljs.tools.reader.reader_types.string_push_back_reader.cljs$lang$maxFixedArity = 2;
cljs.tools.reader.reader_types.node_readable_push_back_reader = (function cljs$tools$reader$reader_types$node_readable_push_back_reader(readable){
return (new cljs.tools.reader.reader_types.PushbackReader((new cljs.tools.reader.reader_types.NodeReadableReader(readable,null)),cljs.core.object_array.call(null,(1)),(1),(1)));
});
/**
* Creates an IndexingPushbackReader from a given string or PushbackReader
*/
cljs.tools.reader.reader_types.indexing_push_back_reader = (function cljs$tools$reader$reader_types$indexing_push_back_reader(var_args){
var G__44204 = arguments.length;
switch (G__44204) {
case 1:
return cljs.tools.reader.reader_types.indexing_push_back_reader.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
break;
case 2:
return cljs.tools.reader.reader_types.indexing_push_back_reader.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
break;
case 3:
return cljs.tools.reader.reader_types.indexing_push_back_reader.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
break;
default:
throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
}
});
cljs.tools.reader.reader_types.indexing_push_back_reader.cljs$core$IFn$_invoke$arity$1 = (function (s_or_rdr){
return cljs.tools.reader.reader_types.indexing_push_back_reader.call(null,s_or_rdr,(1));
});
cljs.tools.reader.reader_types.indexing_push_back_reader.cljs$core$IFn$_invoke$arity$2 = (function (s_or_rdr,buf_len){
return cljs.tools.reader.reader_types.indexing_push_back_reader.call(null,s_or_rdr,buf_len,null);
});
cljs.tools.reader.reader_types.indexing_push_back_reader.cljs$core$IFn$_invoke$arity$3 = (function (s_or_rdr,buf_len,file_name){
return (new cljs.tools.reader.reader_types.IndexingPushbackReader(((typeof s_or_rdr === 'string')?cljs.tools.reader.reader_types.string_push_back_reader.call(null,s_or_rdr,buf_len):s_or_rdr),(1),(1),true,null,(0),file_name));
});
cljs.tools.reader.reader_types.indexing_push_back_reader.cljs$lang$maxFixedArity = 3;
/**
* Creates a SourceLoggingPushbackReader from a given string or PushbackReader
*/
cljs.tools.reader.reader_types.source_logging_push_back_reader = (function cljs$tools$reader$reader_types$source_logging_push_back_reader(var_args){
var G__44207 = arguments.length;
switch (G__44207) {
case 1:
return cljs.tools.reader.reader_types.source_logging_push_back_reader.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
break;
case 2:
return cljs.tools.reader.reader_types.source_logging_push_back_reader.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
break;
case 3:
return cljs.tools.reader.reader_types.source_logging_push_back_reader.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
break;
default:
throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
}
});
cljs.tools.reader.reader_types.source_logging_push_back_reader.cljs$core$IFn$_invoke$arity$1 = (function (s_or_rdr){
return cljs.tools.reader.reader_types.source_logging_push_back_reader.call(null,s_or_rdr,(1));
});
cljs.tools.reader.reader_types.source_logging_push_back_reader.cljs$core$IFn$_invoke$arity$2 = (function (s_or_rdr,buf_len){
return cljs.tools.reader.reader_types.source_logging_push_back_reader.call(null,s_or_rdr,buf_len,null);
});
cljs.tools.reader.reader_types.source_logging_push_back_reader.cljs$core$IFn$_invoke$arity$3 = (function (s_or_rdr,buf_len,file_name){
return (new cljs.tools.reader.reader_types.SourceLoggingPushbackReader(((typeof s_or_rdr === 'string')?cljs.tools.reader.reader_types.string_push_back_reader.call(null,s_or_rdr,buf_len):s_or_rdr),(1),(1),true,null,(0),file_name,cljs.core.atom.call(null,new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"buffer","buffer",617295198),(new goog.string.StringBuffer()),new cljs.core.Keyword(null,"offset","offset",296498311),cljs.core.list((0))], null))));
});
cljs.tools.reader.reader_types.source_logging_push_back_reader.cljs$lang$maxFixedArity = 3;
/**
* Reads a line from the reader or from *in* if no reader is specified
*/
cljs.tools.reader.reader_types.read_line = (function cljs$tools$reader$reader_types$read_line(rdr){
var c = cljs.tools.reader.reader_types.read_char.call(null,rdr);
var s = (new goog.string.StringBuffer());
while(true){
if(cljs.tools.reader.impl.utils.newline_QMARK_.call(null,c)){
return [cljs.core.str.cljs$core$IFn$_invoke$arity$1(s)].join('');
} else {
var G__44209 = cljs.tools.reader.reader_types.read_char.call(null,rdr);
var G__44210 = s.append(c);
c = G__44209;
s = G__44210;
continue;
}
break;
}
});
cljs.tools.reader.reader_types.source_logging_reader_QMARK_ = (function cljs$tools$reader$reader_types$source_logging_reader_QMARK_(rdr){
return (rdr instanceof cljs.tools.reader.reader_types.SourceLoggingPushbackReader);
});
/**
* Returns true if rdr is an IndexingReader and the current char starts a new line
*/
cljs.tools.reader.reader_types.line_start_QMARK_ = (function cljs$tools$reader$reader_types$line_start_QMARK_(rdr){
if(cljs.core.truth_(cljs.tools.reader.reader_types.indexing_reader_QMARK_.call(null,rdr))){
return ((1) === cljs.tools.reader.reader_types.get_column_number.call(null,rdr));
} else {
return null;
}
});
cljs.tools.reader.reader_types.log_source_STAR_ = (function cljs$tools$reader$reader_types$log_source_STAR_(reader,f){
var buffer = new cljs.core.Keyword(null,"buffer","buffer",617295198).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,reader.frames));
try{cljs.core.swap_BANG_.call(null,reader.frames,cljs.core.update_in,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"offset","offset",296498311)], null),cljs.core.conj,buffer.getLength());
var ret = f.call(null);
if(((!((ret == null)))?((((ret.cljs$lang$protocol_mask$partition0$ & (131072))) || ((cljs.core.PROTOCOL_SENTINEL === ret.cljs$core$IMeta$)))?true:false):false)){
return cljs.tools.reader.reader_types.merge_meta.call(null,ret,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"source","source",-433931539),cljs.tools.reader.reader_types.peek_source_log.call(null,cljs.core.deref.call(null,reader.frames))], null));
} else {
return ret;
}
}finally {cljs.core.swap_BANG_.call(null,reader.frames,cljs.core.update_in,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"offset","offset",296498311)], null),cljs.core.rest);
}});
//# sourceMappingURL=reader_types.js.map?rel=1517021946359
@@ -0,0 +1 @@
{"version":3,"file":"\/home\/didier\/clojupyter\/website\/target\/cljsbuild\/public\/js\/out\/cljs\/tools\/reader\/reader_types.js","sources":["reader_types.cljs?rel=1517021946362"],"lineCount":783,"mappings":"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 truncated