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

GitHub上でのプレビューのために、CommonMarkに対応する #396

Closed
faithandbrave opened this issue Mar 15, 2017 · 21 comments
Closed
Assignees
Labels

Comments

@faithandbrave
Copy link
Member

faithandbrave commented Mar 15, 2017

GitHub Flavored MarkdownがCommonMarkベースの仕様になったことで、GitHub上での.mdファイルのプレビューが壊れています。

まず、見出し記法として##helloの代わりに## helloのようにスペースを空ける必要があります。
それと、インデントしたコードブロックのプレビューが壊れているので、調査して直す必要があります。( https://github.com/cpprefjp/site/blob/master/reference/cmath.md )

@faithandbrave
Copy link
Member Author

見出しは対応完了。

インデントしたコードブロックは、いままでコードブロックの開始だけ4スペースを入れていましたが、どうやら全体的に4スペースを入れないといけないようです。 http://spec.commonmark.org/0.27/#example-102

例:

  • hello

    #include <iostream>
    
    int main() {
        std::cout << "hello world" << std::endl;
    }
  • world

@faithandbrave
Copy link
Member Author

コードブロックのインデントをCommonMarkに合わせたら、サイト側の描画が崩れたのであとでsite_generatorを調査する。コードブロック内で4スペースのインデントが付いてしまう。

例として、C++11 エイリアステンプレートの仕様のところがそうなっている。

@faithandbrave
Copy link
Member Author

site_generatorで使用しているMarkdownからHTMLへの変換ライブラリであるMarkdownは、方言の切り替えはとくにサポートしていないようです。ですので、現状の仕組みではGitHubプレビューのCommonMarkと両立させるのは難しそうです。

@melpon と相談したいところです。

@melpon
Copy link
Member

melpon commented Mar 16, 2017

CommonMark の仕様に対応すればGitHubとのプレビューの違いで心配が無くなるっていうのは嬉しいので、対応したいですね。
ただ、現状のシンタックスハイライトとか数式とかの拡張を維持しつつ対応するのは、そこそこコストが掛かりな予感がしています。
うまいことタスクを分散できるといいのですが、それも難しそうな気がしてます。

とりあえず site_generator で CommonMark 対応用のブランチを切って、そこで誰か(多分自分が)作業して、うまく行けばそっちに切り替える感じですかね

@faithandbrave
Copy link
Member Author

暫定対処でやるとしたら、site_generator側でインデントコードブロックを検出して、開始以外のインデントを削除してから変換する、とかですかね。それくらいであれば、boostjpでのリリースノート翻訳が一段落したらぼくの方でもできそうです。
それで済まないことを想定してライブラリの選定からやり直すなら、ライブラリ選定とベース作りは @melpon にお願いして、手伝えるところはぼくもやる、くらいでしょうか。

faithandbrave added a commit that referenced this issue Mar 16, 2017
網羅的な検索はしていないので、ほかにもあるかも。文章中での斜体は積極的に使用していないため、ここだけかも (日本語文章では斜体は目立たないので強調として弱い)。
@k-satoda
Copy link
Contributor

問題になっているのは "インデントしたコードブロック" というより
"リストアイテム中のコードブロック" かなー、と思いました。
http://spec.commonmark.org/0.27/#example-215

The most important thing to notice is that the position of the text
after the list marker determines how much indentation is needed in
subsequent blocks in the list item. ...

挙げられただと "- hello" の "hello" の開始が "- " につづく2桁目なので、
リストアイテム全体に2桁のインデントが必要、ということになるようです。

@faithandbrave リストアイテム以外にも問題になってるところが見つかってたりしますか?

@faithandbrave
Copy link
Member Author

リストアイテムだけですね。対応が必要なファイルの一覧は以下のようになっています:

cpprefjp

site/lang/cpp11/alias_templates.md
site/lang/cpp11/char16_32.md
site/lang/cpp11/defaulted_and_deleted_functions.md
site/lang/cpp11/initializer_lists.md
site/lang/cpp11/inline_namespaces.md
site/lang/cpp11/non_static_data_member_initializers.md
site/lang/cpp11/ref_qualifier_for_this.md
site/lang/cpp11/scoped_enum.md
site/lang/cpp11/uniform_initialization.md
site/lang/cpp11/user_defined_literals.md
site/lang/cpp11/utf8_string_literals.md
site/lang/cpp11/variadic_templates.md
site/lang/cpp14/generic_lambdas.md
site/lang/cpp14/initialize_capture.md
site/reference/cmath/fmod.md
site/reference/cmath/round.md
site/reference/cmath.md
site/reference/deque/op_constructor.md
site/reference/deque/op_equal.md
site/reference/deque/resize.md
site/reference/forward_list/op_constructor.md
site/reference/ios/basic_ios/op_bool.md
site/reference/ios/basic_ios/op_voidptr.md
site/reference/iterator/distance.md
site/reference/list/op_constructor.md
site/reference/map/map/op_constructor.md
site/reference/map/multimap/op_constructor.md
site/reference/numeric/partial_sum.md
site/reference/queue/priority_queue/push.md
site/reference/random/seed_seq/op_constructor.md
site/reference/regex/regex_iterator/op_constructor.md
site/reference/regex/regex_iterator/op_increment.md
site/reference/regex/regex_replace.md
site/reference/regex/regex_token_iterator/op_constructor.md
site/reference/regex/regex_token_iterator/op_increment.md
site/reference/set/set/op_constructor.md
site/reference/stack/push.md
site/reference/string/basic_string/op_constructor.md
site/reference/system_error/op_equal.md
site/reference/unordered_map/unordered_map/op_constructor.md
site/reference/unordered_map/unordered_multimap/emplace_hint.md
site/reference/unordered_map/unordered_multimap/op_constructor.md
site/reference/unordered_set/unordered_multiset/emplace_hint.md
site/reference/unordered_set/unordered_multiset/op_constructor.md
site/reference/unordered_set/unordered_set/op_constructor.md
site/reference/vector/op_constructor.md
site/reference/vector/resize.md

boostjp

site/document/version/1_55_0.md
site/document/version/1_58_0.md
site/document/version/1_59_0.md
site/document/version/1_60_0.md

@kariya-mitsuru
Copy link
Member

markdown_to_html の方にインデントした fenced code block のインデントを削除する処理をプルリクしておきました。

@faithandbrave
Copy link
Member Author

@kariya-mitsuru さんのプルリクをどうするか、site_generatorの方針をどうするかは @melpon にお任せします。

@melpon
Copy link
Member

melpon commented Mar 27, 2017

マージしておきました。
方針としては、短期的にはこうやってちょこちょこ気になる部分を直して、長期的にはがっつりCommonMarkに対応って感じですかね

@faithandbrave
Copy link
Member Author

@kariya-mitsuru さん、 @melpon ありがとうございます。
日時更新でサイト側の描画が正しくできてそうなら、本Issueを終了しようと思います。

@faithandbrave
Copy link
Member Author

@kariya-mitsuru さんがコミットした、以下のようなコード修飾にインデント4スペースを付ける修正ですが、

bb59c68

サイト上では修飾されていないようです。たとえばC++14 初期化キャプチャでのstd::moveのところ:

https://cpprefjp.github.io/lang/cpp14/initialize_capture.html

std::dequeoperator==とかもそうです。

https://cpprefjp.github.io/reference/deque/op_equal.html

@kariya-mitsuru
Copy link
Member

すみません、現状の markdown_to_html ではコード修飾のインデントに対応できてませんでした。
動作確認ができたら markdown_to_html に再度プルリクします。

@kariya-mitsuru
Copy link
Member

プルリクしました。

@faithandbrave
Copy link
Member Author

マージしました。
cpprefjp/markdown_to_html#3
今夜の日時更新をお待ちください。

@faithandbrave
Copy link
Member Author

faithandbrave commented Mar 28, 2017

すいません、ページ側の対応がまだ全部おわってなかったですね。cpprefjpの方はおそらく全て修正されていると思います。
boostjpの方は手を付けていないので、私の方でやっておきます。

@kariya-mitsuru
Copy link
Member

コードブロックがタブでインデントされていると、GitHub 上ではコードの行頭に不要なスペースが入った状態で表示されてしまっていたようなので、コードブロックのインデントを全てスペースに統一しました。

@faithandbrave
Copy link
Member Author

日時更新は動作していたようですが、ページの変更がとくになさそうでした。
cpprefjp/cpprefjp.github.io@84104bb

@faithandbrave
Copy link
Member Author

boostjp側の対応が完了しました。そちらはコード修飾していないので問題ありません。

@faithandbrave
Copy link
Member Author

すいません、 @kariya-mitsuru さんのPull Requestを取り込んでから、site_generatorのサブモジュールを更新していませんでした。今夜の日時更新で反映されると思います。

@faithandbrave
Copy link
Member Author

正しく反映されていることが確認できました。これでCommonMark対応は完了とします。
このほかに、GitHub上のプレビューが壊れているようなところがあれば、報告お願いします。

e-kwsm added a commit to boostjp/site that referenced this issue Apr 28, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants