cljs.reader/read-keyword
function | removed v1.9.854 | added v0.0-927 | Edit |
(read-keyword reader initch)
(defn read-keyword
[reader initch]
(let [token (read-token reader (read-char reader))
a (re-matches* symbol-pattern token)
_ (when (nil? a) (reader-error reader "Invalid keyword " (str ":" token)))
token (aget a 0)
ns (aget a 1)
name (aget a 2)]
(if (or (and (not (undefined? ns))
(identical? (. ns (substring (- (.-length ns) 2) (.-length ns))) ":/"))
(identical? (aget name (dec (.-length name))) ":")
(not (== (.indexOf token "::" 1) -1)))
(reader-error reader "Invalid token: " token)
(if (and (not (nil? ns)) (> (.-length ns) 0))
(keyword (.substring ns 0 (.indexOf ns "/")) name)
(keyword token)))))