134 lines
2.8 KiB
Clojure
134 lines
2.8 KiB
Clojure
(ns Code
|
|
"Elixir Code module — code loading, compilation, and evaluation.
|
|
|
|
In CljElixir: (Code/eval-string \"1 + 2\"), (Code/compile-file \"mod.ex\"), etc.")
|
|
|
|
(defn eval-string
|
|
"Evaluates Elixir code from a string. Returns {result, binding}.
|
|
(Code/eval-string \"1 + 2\") ;=> {3 []}"
|
|
([string])
|
|
([string binding])
|
|
([string binding opts]))
|
|
|
|
(defn eval-quoted
|
|
"Evaluates a quoted Elixir AST.
|
|
(Code/eval-quoted ast binding)"
|
|
([quoted])
|
|
([quoted binding])
|
|
([quoted binding opts]))
|
|
|
|
(defn compile-string
|
|
"Compiles Elixir code from a string."
|
|
([string])
|
|
([string file]))
|
|
|
|
(defn compile-file
|
|
"Compiles an Elixir source file."
|
|
([file])
|
|
([file relative-to]))
|
|
|
|
(defn compile-quoted
|
|
"Compiles a quoted AST."
|
|
([quoted])
|
|
([quoted file]))
|
|
|
|
(defn require-file
|
|
"Requires a file, compiling it if needed. No-op if already loaded."
|
|
([file])
|
|
([file relative-to]))
|
|
|
|
(defn ensure-loaded
|
|
"Ensures the module is loaded. Returns {:module module} or {:error reason}.
|
|
(Code/ensure-loaded Enum) ;=> {:module Enum}"
|
|
[module])
|
|
|
|
(defn ensure-loaded!
|
|
"Ensures the module is loaded. Raises on error."
|
|
[module])
|
|
|
|
(defn ensure-compiled
|
|
"Ensures the module is compiled. Returns {:module module} or {:error reason}."
|
|
[module])
|
|
|
|
(defn ensure-compiled!
|
|
"Ensures the module is compiled. Raises on error."
|
|
[module])
|
|
|
|
(defn loaded?
|
|
"Returns true if the module is loaded.
|
|
(Code/loaded? Enum) ;=> true"
|
|
[module])
|
|
|
|
(defn available?
|
|
"Returns true if the module is available."
|
|
[module])
|
|
|
|
(defn fetch-docs
|
|
"Returns documentation for a module."
|
|
[module])
|
|
|
|
(defn get-docs
|
|
"Returns docs for a module, function, or callback."
|
|
([module spec]))
|
|
|
|
(defn string-to-quoted
|
|
"Parses an Elixir string to AST. Returns {:ok ast} or {:error reason}.
|
|
(Code/string-to-quoted \"1 + 2\") ;=> {:ok {:+ [line: 1] [1 2]}}"
|
|
([string])
|
|
([string opts]))
|
|
|
|
(defn string-to-quoted!
|
|
"Parses to AST. Raises on error."
|
|
([string])
|
|
([string opts]))
|
|
|
|
(defn quoted-to-algebra
|
|
"Converts quoted AST to formatted algebra document."
|
|
([quoted])
|
|
([quoted opts]))
|
|
|
|
(defn format-string!
|
|
"Formats Elixir code string.
|
|
(Code/format-string! \"1+2\") ;=> \"1 + 2\""
|
|
([string])
|
|
([string opts]))
|
|
|
|
(defn format-file!
|
|
"Formats an Elixir source file."
|
|
([file])
|
|
([file opts]))
|
|
|
|
(defn purge
|
|
"Purges a module (removes old code)."
|
|
[module])
|
|
|
|
(defn delete
|
|
"Deletes a module from the VM."
|
|
[module])
|
|
|
|
(defn compiler-options
|
|
"Gets or sets compiler options.
|
|
(Code/compiler-options) ;=> current options"
|
|
([])
|
|
([opts]))
|
|
|
|
(defn put-compiler-option
|
|
"Sets a single compiler option."
|
|
[key value])
|
|
|
|
(defn unrequire-files
|
|
"Un-requires files so they can be required again."
|
|
[files])
|
|
|
|
(defn required-files
|
|
"Returns list of required files."
|
|
[])
|
|
|
|
(defn append-path
|
|
"Appends a path to the code path."
|
|
[path])
|
|
|
|
(defn prepend-path
|
|
"Prepends a path to the code path."
|
|
[path])
|