[ruby-list:45782] Re: 改行を含む日本語のコメントを RDoc に通すと、余計な半角スペースが挿入されてしまう。

From: rubikitch@...
Date: 2009-01-01 19:09:08 UTC
List: ruby-list #45782
From: "ツムジ" <the.little.schemer+ruby@gmail.com>
Subject: [ruby-list:45781] 改行を含む日本語のコメントを RDoc に通すと、余計な半角スペースが挿入されてしまう。
Date: Fri, 2 Jan 2009 03:22:05 +0900

> 英語では単語の途中で改行を入れることはほとんどないので、このほうが自然
> でしょうが、日本語の文章の途中に不必要な半角スペースがあると、どうしても
> 気になってしまいます。

そもそもRDocは日本語文字を意識していなかったように思います。
Ruby 1.8のrdocのデフォルトのエンコーディングがiso-8859-1だったくらいですし。

http://redmine.ruby-lang.org/issues/show/235
http://redmine.ruby-lang.org/issues/show/928

Ruby 1.9のrdocのデフォルトのエンコーディングはUTF-8になりました。
以下のスクリプトをRuby 1.9のrdocにかけてみると、

# -*- coding: utf-8 -*-
class Hoge
  # 以前 Scheme の勉強をしている時に、「Scheme を使って Turtle graphics
  # をしよう」というコンセプトでつくられた ChezGraphics というプログラム
  # に出会いました。
  def foo
  end
end

====
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
  <title>RDoc Documentation</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>

<h2>File: <a name="rdoc-japanese-test.rb">rdoc-japanese-test.rb</a></h2>
<table>
  <tr><td>Path:</td><td>rdoc-japanese-test.rb</td></tr>
  <tr><td>Modified:</td><td>2009-01-02 03:57:22 +0900</td></tr>
</table>

<h2>Classes</h2>

<h3>Class <a name="Hoge">Hoge</a> &lt; Object</h3>

(in files 
<a href="#rdoc-japanese-test.rb">rdoc-japanese-test.rb</a>
)

<h3>Methods</h3>
<h4>  method: 
<a name="M000001">foo()</a></h4>
<p>
以前 Scheme の勉強をしている時に、「Scheme を使って Turtle graphics をしよう」というコンセプトでつくられた
ChezGraphics というプログラム に出会いました。
</p>

<blockquote><pre>
<span class="ruby-comment cmt"># File rdoc-japanese-test.rb, line 6</span>
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">foo</span>
  <span class="ruby-keyword kw">end</span>
</pre></blockquote>
</body>
</html>
====

確かにHTML内ではスペースが入っていますね。
しかし、RFC的にはHTML間のスペースは無視されるのが正しいです。

http://www.asahi-net.or.jp/~wq6k-yn/kaigyo.html

現にw3mで表示してみると、スペースは現れません。


$ rdoc19  -1 rdoc-japanese-test.rb | w3m -dump -T text/html

Generating HTML...
rdoc-japanese-test.rb: Cm

== File: rdoc-japanese-test.rb

Path:     rdoc-japanese-test.rb
Modified: 2009-01-02 03:57:22 +0900

== Classes

=== Class Hoge < Object

(in files rdoc-japanese-test.rb )

=== Methods

==== method: foo()

以前 Scheme の勉強をしている時に、「Scheme を使って Turtle graphics をしよう」
というコンセプトでつくられた ChezGraphics というプログラムに出会いました。

  # File rdoc-japanese-test.rb, line 6
    def foo
    end

Files: 1 Classes: 1 Modules: 0 Methods: 1 Elapsed: 0.1s


というわけで、スペースが入るのはブラウザの正しくないレンダリングの問題です。

--
rubikitch
Blog: http://d.hatena.ne.jp/rubikitch/
Site: http://www.rubyist.net/~rubikitch/

In This Thread