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

//childを使った入れ子処理のサポート #1492

Closed
kmuto opened this issue Apr 4, 2020 · 5 comments
Closed

//childを使った入れ子処理のサポート #1492

kmuto opened this issue Apr 4, 2020 · 5 comments

Comments

@kmuto
Copy link
Owner

kmuto commented Apr 4, 2020

//child を入れようかどうしようか悩み中です。

https://review-knowledge-ja.readthedocs.io/ja/latest/reviewext/nest.html

音譜記号ではないもの(いつものように\x01とか?)にしようかとは思いますが。

  • 記法側で複雑な入れ子の追加はいろいろ無理だと思っています。
  • コード的にかっこよくはないです。
  • ul,ol,dlというのが何なのか、というのがある程度わかっていること前提になります。
  • ASTに影響するでしょうか?
@takahashim
Copy link
Collaborator

現状では、HTMLでいうと <li> の子要素には ブロックは許さない想定かと思うので、//emlist{...} を許すとなると大きなモデルの変更になると思います。

細かいところでは、 //child の引数は開始と終了の意味にしか使われなくて、ulとolとかは意味ない気がしますね…。

@kmuto
Copy link
Owner Author

kmuto commented Apr 12, 2020

現状では、HTMLでいうと

  • の子要素には ブロックは許さない想定かと思うので、//emlist{...} を許すとなると大きなモデルの変更になると思います。

  • ん、div含めたフローコンテンツは許容ではないでしょうか。とりあえずepubcheckではエラーになりませんでした。
    実際こういうパターンはあるのか、というと手元の制作本でたくさんありますね…。

    細かいところでは、 //child の引数は開始と終了の意味にしか使われなくて、ulとolとかは意味ない気がしますね…。

    と最初思っていたんですが、childが呼ばれたときにそれがどのタイプの箇条書きの継続にあるのかを知るすべがないのでした。終わりは省略できるかもしれないですがあまり意味がないしわかりにくいと考えました。

    機能としては素朴かつ力技なところがあり、箇条書きに関係ないところでも入れられてしまったり、見出しを挟めてしまったりもします(当然壊れた結果にはなります)。いろいろなところにチェックロジックを入れればある程度防げるかもしれませんが今のパーサでは泥縄にしかならなそうなので、「ユーザーがその責任でわかった上で使う」ものになるかと思います。

    @takahashim
    Copy link
    Collaborator

    ん、div含めたフローコンテンツは許容ではないでしょうか。とりあえずepubcheckではエラーになりませんでした。

    あ、これはEPUB等ではなくて、Re:VIEWが想定しているドキュメントモデルの方です。

     * a
    //emlist{
    bbb
    //}
     * c
    

    と書いても、bbbのブロックは箇条書きの内容にはならないですし。現状は箇条書きの内容はパラグラフ的なものになる想定だと思っています。Markdownでの空行が入らないListですね。

    と最初思っていたんですが、childが呼ばれたときにそれがどのタイプの箇条書きの継続にあるのかを知るすべがないのでした。

    これは直前の箇条書きの記述で一意に決まるはずというか、それと異なる指定が来たら矛盾しませんか?

    @kmuto
    Copy link
    Owner Author

    kmuto commented Apr 12, 2020

    と書いても、bbbのブロックは箇条書きの内容にはならないですし。現状は箇条書きの内容はパラグラフ的なものになる想定だと思っています。Markdownでの空行が入らないListですね。

    はい、ドキュメントモデルとしては新たなものになりますね。
    空行有無やほかのリテラル記号(AsciiDocの+とか)といった暗黙な構文のものは入れたくないので、そうなると何かブロックタグを入れるしかないかなと。

    これは直前の箇条書きの記述で一意に決まるはずというか、それと異なる指定が来たら矛盾しませんか?

    はい、矛盾します。
    パーサの実装を変えない範囲で試行錯誤したところでは、補助情報としてどの箇条書きかをユーザーが指定しないと無理でした。
    それも含めてユーザーの責任ということにしたいのですが、やはり厳しいですかね…。

    パーサ変えるなら、箇条書きの中で状態フラグ持たせて情報伝達はできるのかな。それができたとすると、//beginchild//endchildとか、===[child]===[/child]とか?

    @kmuto
    Copy link
    Owner Author

    kmuto commented Apr 13, 2020

    #1497 で//beginchild〜//endchild版での実装を作ってみました。

    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