Markdownを素のテキストに

モデルの答えをSlackやメールや課題の説明に貼ると、アスタリスクやバッククォートまで付いてきます。ここでは書式の記号だけを落とします。表はタブ区切りにするので、表計算ソフトへそのまま入ります。

箇条書きリンク

入れたものは端末から出ません。 ブラウザの中だけで処理し、どこにも送らず保存もしません。

取り除くもの

見出しの #、引用の >、太字・斜体・打ち消し線のアスタリスクや下線・波線、インラインコードのバッククォート、水平線を外します。画像は代替テキストだけを残し、リンクは文字だけを残すか「文字 (URL)」に開きます。箇条書きの記号は - 一つに揃えるか、番号ごと消します。表は区切り行を外し、セルの間をタブに変えます。空行が三つ以上続けば二つに縮めます。

コードブロックは先に退避します

バッククォート三つで囲んだブロックを先に取り出しておき、残りを処理してから元の場所に戻します。ですからコードの中の * や # はそのままです。言語名を書いた最初の行は落ちます。四つの空白で字下げした古い形式のコードブロックと ~~~ の囲いは認識できず、中の記号も一緒に取り除かれます。

正規表現ゆえにずれる場所

パーサー無しで形だけで探すので、掛け算の 2*3*4 は斜体として読まれることがあり、__init__ のように下線二つで囲んだ名前は下線が落ちます。HTML タグと [ ] のタスク記号には触れません。貼り付け先が Slack なら、アスタリスク一つの独自記法を持っているので ** は文字として残ります。だから先に取り除いてから貼るのです。

箇条書きは二通りに扱います

記号を残す場合は *・+ を - に揃え、番号付きリストの数字はそのまま置きます。混ざっていると貼り付け先で不揃いに見えるからです。記号を消す場合は - も数字も外し、文だけを残します。どちらでも先頭の字下げは残るので、入れ子のリストは入れ子のまま見えます。

リンクは一つの形しか知りません

[文字](URL) の形だけをほどきます。文字だけ残すか、「文字 (URL)」に開くかを選べます。[文字][1] のように番号で指す参照式のリンクと、下に別に書いた [1]: URL の行、<https://…> で囲んだ自動リンク、[^1] の脚注は見分けられず、書かれたまま残ります。むき出しの URL もそのままです。メールや文書に貼るなら URL まで残すほうがよく、Slack のように URL をプレビューに開く場所なら文字だけのほうがすっきりします。

見出し・引用・エスケープが残すもの

見出しは # を外すだけなので、段落との区別がなくなります。引用の > は行頭で一つだけ外すので、> > と重ねた引用は一段残ります。バックスラッシュで守った \* はエスケープとして読まず、アスタリスクだけ落ちてバックスラッシュが残ります。下線式の見出しの === は残り、--- は罫線とみなして消します。

よくある質問

コードブロックの中も落としますか

そのまま残します。コードブロックの中は書式ではなく中身であり、そこのアスタリスクや井桁を消せばコードが壊れます。囲みのバッククォート三つだけを消します。

HTMLに変換しますか

しません。書式を落として素のテキストにするだけです。だからMarkdownのパーサが要らず、ライブラリも増えません。

コードは消えませんか

バッククォートは消え、コードは残ります。コードを消したら貼るものが無くなります。Slackのようにバッククォートを解釈する場所へ貼るなら、残しておくほうがきれいです。

表の列がそろいません

表はタブ区切りで出ます。表計算ソフトに貼れば列が正しく分かれますが、素のエディタに貼るとタブ幅のせいで曲がって見えます — 等幅フォントならそろいます。

貼ると改行が消えます

Markdownでは単独の改行は同じ段落として扱われます。書式を落としても元の改行は残るので、消えるなら貼った先がまたMarkdownとして読んでいるということです — Slackの入力欄がそうします。

タスクリストの `[ ]` は?

触りません。記号を残せば - [ ] やること のままで、消せば - だけ落ちて [ ] やること になります。チェック欄は飾りではなく中身だからです。

貼り付けたものはサーバへ送られますか

送られません。すべてブラウザの中で動き、送信も保存もしません。だからこそ、ふつうならウェブページに貼り付けない社内の設定ファイルや本番のクエリにも使えます。通信を切ったままでも動きます。