12345678910111213141516171819202122232425262728293031323334353637 |
- #!/usr/bin/env hy
- (import os.path)
- (import hy.compiler)
- (import hy.core)
- ;; absolute path for Hy core
- (setv *core-path* (os.path.dirname hy.core.--file--))
- (defn collect-macros [collected-names opened-file]
- (while True
- (try
- (let [data (read opened-file)]
- (if (and (in (first data)
- '(defmacro defmacro/g! defn))
- (not (.startswith (second data) "_")))
- (.add collected-names (second data))))
- (except [e EOFError] (break)))))
- (defmacro core-file [filename]
- `(open (os.path.join *core-path* ~filename)))
- (defmacro contrib-file [filename]
- `(open (os.path.join *core-path* ".." "contrib" ~filename)))
- (defn collect-core-names []
- (doto (set)
- (.update hy.core.language.*exports*)
- (.update hy.core.shadow.*exports*)
- (collect-macros (core-file "macros.hy"))
- (collect-macros (core-file "bootstrap.hy"))))
|