AsciiDoc エディタ

github.com

動機

以前にオンライン AsciiDoc エディタを web サービスとして公開していましたが、ドメインの失効とともにサイトは閉じました。

CodeMirror を使い Vim / Emacs ライクなキーバインドを実装していたものの、やはり操作感は別物であり不満がありました。

そこで今回は公開サービスではなく、個人用サービスとして機能を簡素化し、エディタから簡単に使えるようにしました。

特徴

  • Heroku Button よる手軽な環境構築

  • HTML / PDF への出力

  • 一部拡張機能が利用可能 ( ditaa / Graphviz / PlantUML )

変換したファイルを /tmp/memoroux で管理する以外、データの保存は何も行いません。

拡張機能については、今後増やす予定です。

個人用と言ってもネット上に公開はされていますので、気になる方は Heroku の環境変数 USERNAME / PASSWORD を設定することで、Basic 認証を設定できるようにしています。

ブラウザでの使い方

Heroku 上に作成したサイトへアクセスし、AsciiDoc の編集を行います。

左のテキストエリアに入力し、画面上部の convert ボタンにより、右に変換結果が表示されます。

f:id:nazuma:20190213171339p:plain

API での使い方

私は Emacs を利用しているので、Emacs での使用例を書きます。

Emacs で以下の関数を定義します。その後、AsciiDoc ファイルを編集しては関数を呼び出し、その時に表示されるアドレスをブラウザで開くことで変換結果を確認できます。

なお Emacs のバージョンは、24.5.1 です。

memoroux-host には、作成した Heroku サイトのアドレスを指定してください。

(defvar memoroux-host "https://(app-name).herokuapp.com")

(defun adoc ()
  (interactive)
  (let ((url-request-method "POST")
        (url-request-extra-headers
         '(("Content-Type" . "application/json")))
        (url-request-data
         (json-encode-alist `((id . ,(md5 (buffer-file-name)))
                              (content . ,(buffer-string))
                              (type . "html"))))
        (url (concat memoroux-host "/convert")))
    (switch-to-buffer
     (url-retrieve-synchronously url))
    (goto-char (point-min))
    (re-search-forward "\n\n")
    (princ (concat memoroux-host
                   (assoc-default
                    'url
                    (json-read-from-string
                     (buffer-substring-no-properties (point) (point-max))))))
    (kill-buffer (current-buffer))))

2020.02.11 追記

Basic認証にも対応したelispを作成しました。

gist.github.com