Squeak.ru - шаблоны программирования

макросы организационного режима внутри блоков кода и с использованием babel

Вдохновленный этим отличным постом, я пытаюсь использовать комбинацию org-mode и babel для выдачи запросов к elasticsearch. Например, подсчет количества записей в индексе:

#+BEGIN_SRC sh
curl -XGET 'http://my.uri.example:8080/index/_count'
#+END_SRC

Приведенный выше код можно оценить с помощью C-c C-c, когда точка находится в блоке.1

С другой стороны, в организационном документе можно определить макросы. Мой вопрос: можно ли определить макрос

#+MACRO: live-db http://my.uri.example:8080

и перепишите блок кода следующим образом:

#+BEGIN_SRC sh
curl -XGET '{{{live-db}}}/index/_count'
#+END_SRC

Из коробки у меня не заработало... Вроде babel не разворачивает макрос перед оценкой блока. Идеи?

Редактировать

Теперь, когда я узнал, что могу использовать es-mode, я не буду уточнять свой вопрос. Рассмотрим следующие два запроса:

#+BEGIN_SRC es :url http://mu.uri.stage:8080
GET /users/_search?pretty
{
  "query": {
    "match_all":{}
  }
}
#+END_SRC

и

#+BEGIN_SRC es :url http://mu.uri.live:8080
GET /users/_search?pretty
{
  "query": {
    "match_all":{}
  }
}
#+END_SRC

Они просто отличаются URL-адресом. Я хотел бы определить два макроса:

#+MACRO staging http://my.uri.stage:8080
#+MACRO live http://my.uri.live:8080

а затем использовать макросы в качестве переменных блоков. Является ли это возможным?


1 Убедитесь, что вы включили оценку sh. Добавьте что-то вроде:

(org-babel-do-load-languages
 'org-babel-load-languages
 '((sh . t)))

к вашему .emacs.


  • Относительно вашего первого вопроса см. строки 3088-3089 ox.el: 18.08.2014
  • Макросы раскрываются перед оценкой кода Babel. 18.08.2014
  • (функция org-export-as) 18.08.2014
  • Возможно, об этом следует спросить у Org ML; Николай обязательно вам ответит. 18.08.2014
  • @fniessen, я думаю, он пытается выполнить, а не экспортировать .. В любом случае, хотя макросы раскрываются до выполнения кода babel, они не раскрываются внутри исходных блоков (см. строки 180-192 в lisp/org-macro.el) 12.07.2015
  • См. этот ответ на Emacs SE для фрагмента Elisp, который добавляет расширение org-macros в аргументах заголовка исходного блока. 03.04.2019

Ответы:


1

расширение макросов изначально не поддерживается при выполнении блоков кода, но используется синтаксис ссылок Noweb, который поддерживается намного мощнее.

Однако я сомневаюсь, что он будет работать с использованием es-mode, поскольку он передает URL-адрес в аргументе заголовка, а не переменная.

Это простой пример для блока кода sh:

#+name: staging
: http://my.uri.stage:8080

#+name: live
: http://my.uri.live:8080

#+name: test
#+begin_src sh :var url=staging
echo $url
#+end_src

#+call: test(live)

#+RESULTS:
: http://my.uri.live:8080

#+call: test(staging)

#+RESULTS:
: http://my.uri.stage:8080
12.07.2015
Новые материалы

Угловая структура архитектуры
Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

«Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

Создайте API с помощью Python FastAPI
Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

Веселье с прокси-сервером JavaScript
Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...