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

<>関連の挙動がおかしい #13

Closed
inao opened this issue Mar 18, 2013 · 18 comments
Closed

<>関連の挙動がおかしい #13

inao opened this issue Mar 18, 2013 · 18 comments
Assignees

Comments

@inao
Copy link
Collaborator

inao commented Mar 18, 2013

<>の中の文字が抜けたり、注記になったりするみたいです…。
他にもあるかもですが、発見できた3パターンは以下です。

--- in md2inao
「<a>」
--- expected
「<a>」
--- 現状の動作
「」◆注/◆◆/注◆
--- in md2inao
「<b>」
--- expected
「<b>」
--- 現状の動作
「
--- in md2inao
<a>
--- expected
<a>
--- 現状の動作
◆注/◆◆/注◆
@naoya
Copy link
Owner

naoya commented Mar 18, 2013

これってデグレードなんですかね。
それとも前からあった不具合なのか?

とりあえず見てみます。

@naoya
Copy link
Owner

naoya commented Mar 18, 2013

あー、anchor タグの件は

hoge [RubyMotion](http://www.rubymotion.com/) fuga

これを

hoge RubyMotion◆注/◆http://www.rubymotion.com/◆/注◆ fuga

これに直すようにしたときにデグレードしたっぽいですね。うーむ・・・

@ghost ghost assigned naoya Mar 18, 2013
@naoya
Copy link
Owner

naoya commented Mar 18, 2013

b タグは元々あったバグの模様

@naoya
Copy link
Owner

naoya commented Mar 18, 2013

とりあえず anchor の方ですが、いまは

[Amazon.co.jp](http://www.amazon.co.jp)

が一端 Markdown を経由すると

<a href="http://www.amazon.co.jp">Amazon.co.jp</a>

となり、これを inao 記法で

Amazon.co.jp◆注/◆http://www.amazon.co.jp/◆/注◆

となるようにしています。これはおそらく望ましい結果じゃないかと。これに伴う副作用として

<a>

◆注/◆◆/注◆

になってしまうという不具合につながっています。

ここはトレードオフなので

  • そもそも本文に <a href="...">hoge</a> という記述があっても変換しない
  • 変換はする。ただし <a> のように href 属性がない場合はその限りではない

のいずれかの対応が望ましいと思いますがどうしましょうか? > @inao

@inao
Copy link
Collaborator Author

inao commented Mar 18, 2013

さっそくのご調査ありがとうございます!

<a href="...">hoge</a><a> も原稿中にでてきてもおかしくない文字列ですので、

  • そもそも本文に <a href="...">hoge</a>という記述があっても変換しない

でお願いできますでしょうか?

@naoya
Copy link
Owner

naoya commented Mar 18, 2013

んー、と返事をもらってみて思ったのですが、Markdown のときは HTML は普通に解釈されるはずなので (↑のコメントがそれを証明しているw) 本来 Markdown の本文中に HTML タグを書きたい場合は &lt と &gt でエスケープが必要なんですよね。

ここを本文中の HTML は変換しないというルールにしてしまうと、それが本文中のタグなのか Markdown で parse した結果としてのタグなのかの区別がつかないように思いました。

ので前者の挙動はあんまり好ましくない気がしてきた。後者がいいかどうかもちょっと検討の余地ありです。
仕様からもう一度考えさせてください。

@inao
Copy link
Collaborator Author

inao commented Mar 18, 2013

あー、なるほど。Markdown中にHTMLタグを書く場合は、本来エスケープが必要なんですね。

基本的にはエスケープせずに書けることが今の売りの1つになっている気もします……。
著者の方にとって、どういった仕様がやりやすいんでしょうかね。

@naoya
Copy link
Owner

naoya commented Mar 18, 2013

HTML に関しては Markdown である以上、HTMLエスケープあるいは

`<a href=""></a>`

が必須、というのが正しいと思いますけど。それ以外の通常のコードやコードブロック内でのコードは当然エスケープしなくてよいですし。

そもそも、本文にエスケープせずに HTML を書いた場合 Markdown プレビュー系のアプリで普通に HTML として解釈されるはず。その時点でその書き方では駄目だと気づくべき。

@naoya
Copy link
Owner

naoya commented Mar 18, 2013

で、この辺ふくめてサマリした「Markdown で原稿執筆する場合の簡単な説明書」みたいなのを用意すればいいんじゃないですかね。長くなると読む気が失せるので、ポイントだけしぼったようなやつ。

@naoya
Copy link
Owner

naoya commented Mar 18, 2013

その「HTMLタグを使いたいならエスケープすればいいじゃない」的観点でいくと普通に html を生で書いた場合の挙動は未定義なので、本件の元々である「<a>」 がおかしいとかは、仕様が不定である以上対応の必要がない、ということになるかと思います。

というか、いままでずっとそういう仕様だったようですよ。

よって <a><b> に限らず <s> とか <q> とかも同様になります。(<em> とか <code> とかは対応する inao 記法に変換されます。)

naoya added a commit that referenced this issue Mar 18, 2013
@naoya
Copy link
Owner

naoya commented Mar 18, 2013

とりあえず <a> が ◆注/◆◆/注◆ になってしまうのはおかしいので fix しました。
ただし <a> がそのまま <a> として出るわけではなく、先に述べたように挙動は不定 (現在はタグが消える) になっています。

@inao
Copy link
Collaborator Author

inao commented Mar 18, 2013

もろもろありがとうございます!

サマリは、以下だと長すぎですよね?
注意事項やポイントのみまとめた感じでしょうか。

https://docs.google.com/open?id=0BzbGMS73rIkDZjdCTnBkMDFUaGF2UDJIdTNfaVJUUQ

あと、<a href=""></a>のように``が付いていない場合に、警告を出していただくことって可能でしょうか?
難しそうな気がするのですが、ダメ元でお伺いさせてください。

@naoya
Copy link
Owner

naoya commented Mar 18, 2013

いや長くはないんですが、それの Markdown 版が欲しい感じですね。
どの記法が使えるのか、というのが一目でわかるといいとおもいます。

警告を出すのは難しくはないですが、他の仕様と若干バッティングします。

例えば今は **ほげ** → markdown parser → <strong>ほげ<strong> → md2inao → ◆b/◆ほげ◆/b◆ という風に変換していますが、この場合の <strong> タグは警告の必要がない。実際 <strong> を直接書くと inao 記法の強調に変換されるはず。これは警告しない (というか両者の区別がつかないのでしようがない) ですよね。

一方、@inao さんの提案に従うと例えば <s> の場合は警告することになります。ただしこちらはそれに対応する inao 記法がないから警告すべし、と判定できるだけです。

という潜在的な問題をはらんでいますが、ま、妥協案としては、(inao 記法に定義されてるものは意図しないタグが出力されて気づくでしょうから) 定義されていないものを使ったときは警告しつつhtmlを「消える」とかじゃなくて書いたそのまま出力、ですかね。意味としては「いちおう html そのまま出すけど、それは正しくないからエスケープしろよー将来どうなってもしらないぞー」ということで。

@inao
Copy link
Collaborator Author

inao commented Mar 18, 2013

以下の順番で変換されていきます。

  1. Markdownのサンプル
  2. md2inaoで変換後のイナオ記法のサンプル
  3. idtagreplacerで変換後のInDesignタグテキストのサンプル
  4. InDesignに取り込んでPDFにしたもの

Markdown版は上記の1になります。
これを最新版に対応させる感じで良さそうでしょうか?

@inao
Copy link
Collaborator Author

inao commented Mar 18, 2013

上記の妥協案は、とってもすばらく、また、たいへんありがたいです。
これでお願いできるとうれしいです><

@naoya
Copy link
Owner

naoya commented Mar 19, 2013

ちとドキュメントの話は別 issue に立てます

@naoya
Copy link
Owner

naoya commented Mar 19, 2013

ひとまず <> はそのまま出力するようにしました。警告もコマンドライン番では出ます。
わかりやすいように色を付けました。

警告

ただし現状、以下の制限があります。

  • <a> と単独で書いたものは <a></a> と勝手に閉じタグが補完される
    • これは内部で使ってる HTML::TreeBuilder の仕様上避けがたい・・・
  • <strong> のように inao 記法に対応してしまってるものは警告がでない
    • inao 記法そのままで◆b/◆に変換される

兎に角、HTML をそのまま本文にタグとして載せたいときはエスケープしろ、ということで。

Web版で警告が見れない問題は別 issue にあるので、そちらで引き続き。

@naoya naoya closed this as completed Mar 19, 2013
@inao
Copy link
Collaborator Author

inao commented Mar 19, 2013

ありがとうございます!
警告がとっても見やすいです。

(おおー、画像をここに直接表示できるんですね。知りませんでした)

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

No branches or pull requests

2 participants