naoya / md2inao

Convert markdown to inao-format for WEB+DB PRESS
http://md2inao.bloghackers.net/
211 stars 33 forks source link

半角スペース4つで字下げするリスト(ソースコード)とコマンド図が連続すると、挙動がおかしい #14

Open inao opened 11 years ago

inao commented 11 years ago

リスト(ソースコード)とコマンド図(PDFでは黒地に白文字になる)が連続すると、

などがおきます。

以下、リスト、図の順番の場合です。

--- in md2inao
    ●リスト1::Rubyによる簡易LTSV Parser
    abcd

    !!! cmd
    ●図1::LTSVのParse結果
    abcd
--- expected
◆list/◆
●リスト1   Rubyによる簡易LTSV Parser
abcd
◆/list◆
◆list-white/◆
●図1 LTSVのParse結果
abcd
◆/list-white◆
--- 現状の動作
◆list-white/◆
abcd

!!! cmd
●図1 LTSVのParse結果
abcd
◆/list-white◆

以下、図、リストの順番の場合です。

--- in md2inao
    !!! cmd
    ●図1::LTSVのParse結果
    abcd

    ●リスト1::Rubyによる簡易LTSV Parser
    abcd

--- expected
◆list-white/◆
●図1 LTSVのParse結果
abcd
◆/list-white◆
◆list/◆
●リスト1   Rubyによる簡易LTSV Parser
abcd
◆/list◆

--- 現状の動作
◆list-white/◆
●図1 LTSVのParse結果
abcd

●リスト1   Rubyによる簡易LTSV Parser
abcd
◆/list-white◆
inao commented 11 years ago

こちらは以前からの挙動のようです……。

naoya commented 11 years ago

リスト系は鬼門ですねー。ひとつひとつ潰していくしかない。

inao commented 11 years ago

お手数をおかけしましてたいへん恐縮です:sweat:

naoya commented 11 years ago

これはあれですね、!!!cmd のところが Markdown は、コードの切れ目だってことがわからないというので引き起こされてるバグですね。二つのブロックがそのまま連続していると解釈されてしまっている。

どう対応するのがいいかな・・・むずいw

d-ikeda commented 11 years ago

難しいですね。cmdのときのみ開始タグ~閉じタグ式にするくらいしか思いつきませんでした。

inao commented 10 years ago

受け入れテストですが、inao版は「issue_14_xxx_cmd.t」に追記すればいいですか? InDesign版はどこに追記すればよいでしょうか?

(きょうはこれから出なきゃなので、明日になりそうです)

gfx commented 10 years ago

受け入れテストですが、t/30_indesign_basic_syntax.t をt/issue_14.t にコピーしていただき、DATA以下を削って必要なものを足していただければと思います。

issue_14_xxx_cmd.tのほうは無視してかまいません。InDesign版だけください。

inao commented 10 years ago

@gfx 受け入れテストをpull requestさせていただきました! ご、ご対応がややこしそうな気もしております……。

inao commented 10 years ago

このIssueは、文字が抜ける(キャプションが抜ける)という大きな問題が発生しますので、ラベルはhighとさせていただきました。

gfx commented 10 years ago

こちらなんですが、 ... 記法をつかうと再現しない、ということにはなりませんか?

inao commented 10 years ago

コメントありがとうございます。

以下のテキストで実験しました。 (ここに投稿するために、すべての行頭に半角スペース4つを入れています)

# リスト、図の順番
## 字下げ記法の場合★キャプションがなくなったり、!!! cmdが残ったりする★

    ●リスト1::Rubyによる簡易LTSV Parser
    abcd

    !!! cmd
    ●図1::LTSVのParse結果
    abcd

## Fenced code blocks記法の場合★バッチリ!★

●リスト1::Rubyによる簡易LTSV Parser abcd

!!! cmd ●図1::LTSVのParse結果 abcd


# 図、リストの順番
## 字下げ記法の場合★リストなのに、図で使う白文字になる★

    !!! cmd
    ●図1::LTSVのParse結果
    abcd

    ●リスト1::Rubyによる簡易LTSV Parser
    abcd

## Fenced code blocks記法の場合★!!! cmdが残ったり、改行がなくなったり、スタイルが本文だったりする★

!!! cmd
●図1::LTSVのParse結果
abcd

●リスト1::Rubyによる簡易LTSV Parser
abcd

---

結果は以下が出力されました。

<SJIS-MAC>
<ParaStyle:大見出し>リスト、図の順番
<ParaStyle:中見出し>字下げ記法の場合<CharStyle:赤字>★<CharStyle:>キャプションがなくなったり、!!! cmdが残ったりする<CharStyle:赤字>★<CharStyle:>
<ParaStyle:リスト白文字>abcd
<ParaStyle:リスト白文字>
<ParaStyle:リスト白文字>!!! cmd
<ParaStyle:キャプション>図1  LTSVのParse結果
<ParaStyle:リスト白文字>abcd
<ParaStyle:中見出し>Fenced code blocks記法の場合<CharStyle:赤字>★<CharStyle:>バッチリ!<CharStyle:赤字>★<CharStyle:>
<ParaStyle:キャプション>リスト1    Rubyによる簡易LTSV Parser
<ParaStyle:リスト>abcd
<ParaStyle:キャプション>図1  LTSVのParse結果
<ParaStyle:リスト白文字>abcd
<ParaStyle:大見出し>図、リストの順番
<ParaStyle:中見出し>字下げ記法の場合<CharStyle:赤字>★<CharStyle:>リストなのに、図で使う白文字になる<CharStyle:赤字>★<CharStyle:>
<ParaStyle:キャプション>図1  LTSVのParse結果
<ParaStyle:リスト白文字>abcd
<ParaStyle:リスト白文字>
<ParaStyle:キャプション>リスト1    Rubyによる簡易LTSV Parser
<ParaStyle:リスト白文字>abcd
<ParaStyle:中見出し>Fenced code blocks記法の場合<CharStyle:赤字>★<CharStyle:>!!! cmdが残ったり、改行がなくなったり、スタイルが本文だったりする<CharStyle:赤字>★<CharStyle:>
<ParaStyle:本文>!!! cmd●図1::LTSVのParse結果abcd
<ParaStyle:本文>●リスト1 Rubyによる簡易LTSV Parserabcd

★で括ってコメントしましたように、Fenced code blocks記法だとリスト、図の順番の場合はうまくいきましたが、図、リストの順番の場合はうまくいきませんでした。

inao commented 2 years ago

Fenced code blocks記法の場合は本Issueの対象外であることがわかったので、issue名を変更しました。

c9754d7

本issueのテストを追加しました。 現時点ではこのテストはテスト実行時にスキップさせるように設定しています。 (Fenced code blocks記法のほうのテストは実行します)

ce3a7c7

これまでもFenced code blocks記法を推奨していましたが、半角スペース4つで字下げする記法にはバグがある旨を明記し、より強い推奨にしました。

inao commented 2 years ago

913ddccでテストのバリエーションを増やしました。 本Issue関連のスキップしたテストには本issueのURLを明記しています。