Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

tdiary-style-markdown: *...*で強調表示にならないことがある #112

Closed
kou opened this issue Jan 19, 2018 · 9 comments
Closed
Assignees

Comments

@kou
Copy link
Member

kou commented Jan 19, 2018

前後にスペースがないとダメになっている気がする。

たとえば以下だとダメ。

後半の第5章から第7章は*「開発やメンテナンスにおける、チーム内での良いコミュニケーション」*をテーマにしています。
@piroor
Copy link
Member

piroor commented Jan 23, 2018

https://github.com/clear-code/tdiary-style-markdown
https://github.com/gjtorikian/commonmarker
https://github.com/github/cmark

依存関係を辿るとこのようになっている。どこの問題か?

@piroor piroor self-assigned this Jan 23, 2018
@piroor
Copy link
Member

piroor commented Jan 23, 2018

github/cmark は commonmark/cmark の改造版。
commonmark/cmark に問題があった場合でも、tdiary-style-markdownでの使用という観点では、 commonmark/cmark に直接報告するよりは、一旦github/cmarkに報告し、GitHubのチームがcommonmark/cmarkにフィードバックしてくれるのを待つのがよい。

@piroor
Copy link
Member

piroor commented Jan 23, 2018

commonmarkerで<em>タグを出力している箇所
https://github.com/gjtorikian/commonmarker/blob/master/ext/commonmarker/html.c#L338
これはcmark_node型の引数のプロパティ(メンバー変数?)に対するマッチング。
https://github.com/github/cmark/blob/master/src/html.c
cmarkに全く同じコードがあるので、github/cmark由来の部分と思われる。
よって、フィードバックはgithub/cmarkに行う。

@piroor
Copy link
Member

piroor commented Jan 23, 2018

github/cmarkでは期待通りの結果になった。

$ git clone https://github.com/github/cmark.git
$ cd cmark
$ make
$ echo "foo *bar* bazz" | build/src/cmark-gfm 
<p>foo <em>bar</em> bazz</p>
$ echo "日本語のテキストの*一部分*を協調" | build/src/cmark-gfm 
<p>日本語のテキストの<em>一部分</em>を協調</p>

commonmarkerが使っているcmarkが古い?

@piroor
Copy link
Member

piroor commented Jan 23, 2018

例示されている文章だとうまくいかない。

$ echo "後半の第5章から第7章は*開発やメンテナンスにおける、チーム内での良いコミュニ ケーション*をテーマにしています。"  | build/src/cmark-gfm 
<p>後半の第5章から第7章は<em>開発やメンテナンスにおける、チーム内での良いコミュニケーション</em>をテーマにしています。</p>
$ echo "後半の第5章から第7章は「*開発やメンテナンスにおける、チーム内での良いコミュ ニケーション*」をテーマにしています。"  | build/src/cmark-gfm 
<p>後半の第5章から第7章は「<em>開発やメンテナンスにおける、チーム内での良いコミュニケーション</em>」をテーマにしています。</p>
$ echo "後半の第5章から第7章は*「開発やメンテナンスにおける、チーム内での良いコミュ ニケーション」*をテーマにしています。"  | build/src/cmark-gfm 
<p>後半の第5章から第7章は*「開発やメンテナンスにおける、チーム内での良いコミュニケーション」*をテーマにしています。</p>

禁則処理のように、協調してよい場合とそうでない場合を判別しているようだ。

@piroor
Copy link
Member

piroor commented Jan 23, 2018

の文字コードは\u300c、10進数で12300
https://github.com/github/cmark/blob/master/src/utf8.c#L288 の1つ目の条件にあてはまっている。
詳細はまだ分かっていないが、「」を囲う形の強調はできないように敢えて設計されているという事のように思われる。

@piroor
Copy link
Member

piroor commented Jan 23, 2018

cmarkのtest/spec.txtに以下のような記述がある。

This is not emphasis, because the opening `*` is preceded
by an alphanumeric and followed by punctuation, and hence
not part of a [left-flanking delimiter run]:

```````````````````````````````` example
a*"foo"*
.
<p>a*&quot;foo&quot;*</p>

がpunctuationの一種として定義されていることから、このパターンに当てはまっているように思われる。

@piroor
Copy link
Member

piroor commented Jan 23, 2018

github/cmark-gfm#80 に報告したのでこちらはcloseします。

@piroor piroor closed this as completed Jan 23, 2018
@piroor
Copy link
Member

piroor commented Jan 24, 2018

commonmark/cmark#208
実装のバグではなく仕様のバグとして議論が進んでいる模様です。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants