From cf75b249c7fb60a7ce2a06b12ee17e2b4cb8c6bc Mon Sep 17 00:00:00 2001 From: Mitsuru Kariya Date: Fri, 16 Oct 2015 00:32:57 +0900 Subject: [PATCH] =?UTF-8?q?=E9=9A=A3=E3=82=8A=E5=90=88=E3=81=A3=E3=81=9F?= =?UTF-8?q?=20code=20=E3=82=92=E7=B5=90=E5=90=88=E3=81=99=E3=82=8B?= =?UTF-8?q?=E3=82=88=E3=81=86=E3=81=AB=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 文中の code の一部をリンクにしたい場合、コードを分割する必要があり ますが、そうすると html では code 要素が分割されてしまい妙に間が 空いて間が抜けて見えてしまいます。 そこで、隣り合った code 要素を結合するようにしてみました。 ただし、markdown の書き方の問題でそれだけではうまくいかないので、 まず最初に、 ...... に変換してから結合するようにしています。 また、code 要素の間は空白 1 文字まで許容しています。 ちゃんと html を解釈した方が良いとは思うのですが、ちょっと横着 をして、単なる正規表現で処理しちゃってます。 現時点で cpprefjp では変換エラーは発生しませんでした。 全ページ目視確認したわけでは無いのですが、何ページかサンプルで 見た感じではうまく変換できているようでした。 いかがでしょうか? --- run.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/run.py b/run.py index 00defec..3284f41 100755 --- a/run.py +++ b/run.py @@ -35,6 +35,10 @@ def make_html_path(path): return os.path.join(settings.OUTPUT_DIR, path + '.html') +_SWAP_A_AND_CODE_RE = re.compile(r'<(a|span)\b([^>]*)>([^<]*)()') +_MERGE_ADJACENT_CODE_RE = re.compile(r'( ?)') + + def md_to_html(md_data, path, hrefs=None): paths = path.split('/') @@ -61,6 +65,8 @@ def md_to_html(md_data, path, hrefs=None): md._html_attribute_hrefs = hrefs html = md.convert(md_data) + html = _SWAP_A_AND_CODE_RE.sub(r'<\1\2>\3', html) + html = _MERGE_ADJACENT_CODE_RE.sub(r'\1', html) return html, { 'meta_result': md._meta_result, 'mathjax_enabled': md._mathjax_enabled