4.2 KiB
4.2 KiB
REPL API Референция
JSON REPL Протокол
Стартирайте JSON REPL:
cljnim repl --json
REPL чете по един JSON обект на ред и отговаря с по един JSON обект на ред.
Операции
eval
Оценява единична Clojure форма.
Заявка:
{"op": "eval", "form": "(+ 1 2 3)"}
Отговор (успех):
{
"status": "ok",
"result": {
"type": "unknown",
"value": "6",
"printed": "6"
},
"meta": {
"ns": "user",
"ms": 861.5,
"form": "(+ 1 2 3)"
}
}
Отговор (грешка):
{
"status": "error",
"error": {
"type": "reader/error",
"message": "Unterminated list",
"form": "( + 1 2"
},
"meta": {
"ns": "user",
"ms": 0.1
}
}
Незадължителни полета:
request-id— Correlation ID, върнат в отговораns— Целево namespace (по подразбиране:"user")
eval-batch
Оценява множество форми последователно.
Заявка:
{"op": "eval-batch", "forms": ["(defn f [x] x)", "(f 42)"]}
Отговор:
{
"status": "ok",
"results": [
{"status": "ok", "result": {"type": "var", "name": "f", ...}},
{"status": "ok", "result": {"printed": "42"}, ...}
]
}
get-defs
Листва всички дефинирани променливи в текущата сесия.
Заявка:
{"op": "get-defs"}
Отговор:
{"status": "ok", "defs": ["add", "square"], "ns": "user"}
clear
Изчиства всички дефиниции от сесията.
Заявка:
{"op": "clear"}
Отговор:
{"status": "ok", "cleared": true}
quit
Излиза от REPL.
Заявка:
{"op": "quit"}
Отговор:
{"status": "ok", "bye": true}
Схема на Отговора
Всички отговори съдържат:
status—"ok"или"error"
При успех:
result— Обект с резултат от оценкатаtype—"var","unknown", и т.н.printed— Текстово представяне на резултата
meta— Метаданниns— Текущо namespacems— Време за изпълнение в милисекундиform— Оригиналната форма (ако еeval)
При грешка:
error— Обект с грешкаtype— Категория на грешкатаmessage— Четимо съобщение
meta— Както при успех
Файлови Операции (от Clojure код)
| Функция | Пример | Връща |
|---|---|---|
file/read |
(file/read "path") |
Низ със съдържание или map с грешка |
file/write |
(file/write "path" "content") |
true или map с грешка |
file/append |
(file/append "path" "more") |
true или map с грешка |
file/ls |
(file/ls "dir") |
Вектор с имена на файлове |
file/exists? |
(file/exists? "path") |
true / false |
Git Операции (от Clojure код)
| Функция | Пример | Връща |
|---|---|---|
git/status |
(git/status) |
Map с :branch, :modified, :untracked, :staged, :clean |
git/commit |
(git/commit "msg") |
Map с :sha, :success |
git/push |
(git/push) |
Map с :success, :output |
git/diff |
(git/diff) |
Низ с diff |
git/log |
(git/log) или (git/log 10) |
Вектор с commit низове |
Команди в Човешки REPL
В човешки режим (cljnim repl):
| Команда | Описание |
|---|---|
:quit, :q |
Изход от REPL |
:help, :h |
Показване на помощ |
:defs |
Листване на дефинирани променливи |
:clear |
Изчистване на дефинициите |
:ns |
Показване на текущото namespace |