|
3039 | 3039 | ret
|
3040 | 3040 | (recur fs ret true)))))
|
3041 | 3041 |
|
| 3042 | +;; this case is like :refer-clojure it cannot be used as a spec parser |
| 3043 | +(defn parse-global-refer-spec |
| 3044 | + [env spec] |
| 3045 | + (let [{referred :refer-global |
| 3046 | + renamed :rename} (apply hash-map (concat [:refer-global] [spec])) |
| 3047 | + referred-without-renamed (remove (set (keys renamed)) referred)] |
| 3048 | + ;; TODO: refer validation, this can be lifted easily into common helper from parse-require-spec |
| 3049 | + ;; TODO: rename validation, harder to lift |
| 3050 | + {:use (zipmap referred-without-renamed (repeat 'js)) |
| 3051 | + :rename (into {} |
| 3052 | + (map (fn [[orig new-name]] |
| 3053 | + [new-name (symbol "js" (str orig))])) |
| 3054 | + renamed)})) |
| 3055 | + |
| 3056 | +#_(defn parse-global-require-spec |
| 3057 | + [env deps aliases spec] |
| 3058 | + ) |
| 3059 | + |
3042 | 3060 | (defn parse-require-spec [env macros? deps aliases spec]
|
3043 | 3061 | (if (or (symbol? spec) (string? spec))
|
3044 | 3062 | (recur env macros? deps aliases [spec])
|
|
3292 | 3310 | (select-keys new deep-merge-keys))))
|
3293 | 3311 | new))
|
3294 | 3312 |
|
| 3313 | +(def ns-spec-cases |
| 3314 | + #{:use :use-macros :require :require-macros |
| 3315 | + :import :refer-global :require-global}) |
| 3316 | + |
3295 | 3317 | (defmethod parse 'ns
|
3296 | 3318 | [_ env [_ name & args :as form] _ opts]
|
3297 | 3319 | (when-not *allow-ns*
|
|
3335 | 3357 | (partial use->require env))
|
3336 | 3358 | :use-macros (comp (partial parse-require-spec env true deps aliases)
|
3337 | 3359 | (partial use->require env))
|
3338 |
| - :import (partial parse-import-spec env deps)} |
| 3360 | + :import (partial parse-import-spec env deps) |
| 3361 | + ;:refer-global (partial parse-global-refer-spec env) |
| 3362 | + ;:require-global #(parse-global-require-spec env deps aliases %) |
| 3363 | + } |
3339 | 3364 | valid-forms (atom #{:use :use-macros :require :require-macros :import})
|
3340 | 3365 | reload (atom {:use nil :require nil :use-macros nil :require-macros nil})
|
3341 | 3366 | reloads (atom {})
|
|
0 commit comments