Files
bara-lang/docs/API.bg.md
T

4.2 KiB
Raw Blame History

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 — Текущо namespace
    • ms — Време за изпълнение в милисекунди
    • 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