[前][次][番号順一覧][スレッド一覧]

hikidoc:61

From: Tanaka Akira <akr@f...>
Date: Fri, 09 Mar 2007 16:52:55 +0900
Subject: [hikidoc:61] Re: \"

In article <200703051823.41074.kazuhiko@f...>,
  Kazuhiko <kazuhiko@f...> writes:

> 「何かエスケープする手段がいるよなぁ」と思ってそういう実装にしたのですが、
> undocumentedですみません。
>
> とはいえ、どういう仕様がいいのかいまいち結論を出せていません。
> それらの文字だけバックスラッシュが消えて、それ以外ではバックスラッシュが
> 出る、でいいのかなぁ。例えば、「\'」と出したい時に、入力が「\\'」(今はこ
> れ)と「\\\'」とだとどっちが分かりやすいでしょうか?

バックスラッシュ以外の選択肢はありえませんか?

そもそも、バックスラッシュによるエスケープを全体に適用するのっ
て、嬉しいんでしょうか?

たとえば、" は行頭に 2つあるときには引用になるので、引用にし
たくないときのためにエスケープが必要になるわけです。しかし、
行頭でない、もしくは、行頭であっても 2つでない場合には引用に
はならないので、そこでエスケープを要求される必然性はないはず
です。

にもかかわらず、エスケープが効くので、同じ表現をする方法が無
駄に 2つあることになっています。

% /usr/bin/ruby -rhikidoc -e 'puts HikiDoc.new("\" foo").to_html'
<p>" foo</p>
% /usr/bin/ruby -rhikidoc -e 'puts HikiDoc.new("\\\" foo").to_html'
<p>" foo</p>

% /usr/bin/ruby -rhikidoc -e 'puts HikiDoc.new("a \" b").to_html' 
<p>a " b</p>
% /usr/bin/ruby -rhikidoc -e 'puts HikiDoc.new("a \\\" b").to_html'
<p>a " b</p>

エスケープが必要というのは、だいたい書いたそのままの表示にな
るという wiki の類の利点が壊れているわけで、ソースの状態で推
敲するのが面倒になります。

実際、最近個人的にエスケープについての文章を書いて、\" など
といったものを書く必要があって、書いた通りにならないので嫌な
めにあったわけです。文章を書くときは文章について考えたいので
あって、文章を直接記述できないというのはストレスが溜ります。

もちろん、エスケープにどのような記法を使っても、その記法と同
じものを書きたくなった時に直接は書けないのはしかたのないこと
です。しかし、直接記述できても機能的に問題ないときに記述でき
ないというのには憤りを感じます。\" についていえば、行頭でな
い、また行頭であっても 2つでないときにはエスケープが必要な理
由はないはずです。

さらに、このエスケープが、エスケープという割には不完全なとこ
ろがあって、例えば <em>abc\</em> というものを生成できないの
が怒りを誘います。''abc\'' としても ''abc\\'' としても
''abc\\\'' としても <em> になりません。

これを解決するには \\ を \ にするわけですが、そうするとさら
にソースと出力の差が大きくなって推敲が面倒なことになります。
機能的に完全になること自体は文章を書くのに都合がいいことを意
味しません。

思うに、プラグインの記法を一部借用して、{{doublequote}},
{{singlequote}}, {{open_brace}}, {{close_brace}}, {{colon}}
といったものをエスケープ記法とするのがいいのではないでしょう
か。

そうやってエスケープにはバックスラッシュを使わないことにすれ
ば、バックスラッシュはそのまま出力できるようになります。プラ
グインの名前にいくらか制約ができますが、プラグイン記法はもと
もとそのままの出力にはならないので、そのままの出力にならない
ところを増やさないという利点があります。

ここで、長いのが気に入らないということであれば、{{dq}} あた
りに短くすることは可能でしょう。あるいは {{quot}} とかもあり
うるかもしれません。

なお、それでも長いというのであれば、個々の記法に応じた仕掛け
を入れることも場合によっては可能でしょう。たとえば、行頭の ""
のエスケープ記法として、2つの " の間に空白をひとつ入れたら "
が 2つあるという意味とするとか。
-- 
[田中 哲][たなか あきら][Tanaka Akira]

--
ML: hikidoc@m...
使い方: http://QuickML.com/

[前][次][番号順一覧][スレッド一覧]

        58 2007-02-19 09:32 [akr@f...            ] \"                                 
        60 2007-03-05 10:23 ┗[kazuhiko@f...       ]                                       
->      61 2007-03-09 08:52  ┣[akr@f...            ]                                     
        65 2007-03-12 01:08  ┃┣[zn@m...             ]                                   
        67 2007-03-16 03:47  ┃┗[oneroad@m...        ]                                   
        68 2007-03-16 09:14  ┃ ┗[akr@f...            ]                                 
        69 2007-03-16 13:43  ┃  ┗[hiraku@s...         ]                               
        62 2007-03-10 17:00  ┣[hiraku@s...         ]                                     
        64 2007-03-10 21:01  ┃┗[hiraku@h...         ]                                   
        63 2007-03-10 16:58  ┗[hiraku@h...         ]