bitclust
bitclust copied to clipboard
System behind Japanese Ruby reference manual
## 概要 Rubyリファレンスマニュアルのサンプルコードで、`class Foo; end` が `class ;Foo end` と表示されています。 具体例: [Module#private_constant](https://docs.ruby-lang.org/ja/3.1/class/Module.html#I_PRIVATE_CONSTANT)  [ソース](https://github.com/rurema/doctree/edit/master/refm/api/src/_builtin/Module#L1284)を確認したところ、 `class Foo; end` (相当)で書かれていました。  ## 再現確認 irb 上の次のコードで再現することが確認できました。 ```ruby irb> require 'bitclust' irb> BitClust::SyntaxHighlighter.new('class A;...
[BitClustのWiki](https://github.com/rurema/doctree/wiki/BitClust)の情報が古いのか、 すぐ使えないものが多いように思います。 特にhtmlfileサブコマンドについて、使いやすくあって欲しいです。 ```ruby bitclust htmlfile --target=Range Range > t.html bitclust htmlfile ../doctree/refm/api/src/_builtin/Array --target Array > t.html bitclust htmlfile ../doctree/refm/api/src/net/https.rd > a.html bitclust htmlfile src/zlib/GzipReader #ライブラリGzipReader bitclust htmlfile src/zlib/GzipReader --target=Zlib::GZipReader...
`Array`あたりに顕著ですが、`Enumerable`をincludeして継承したメソッドを同名で再定義しています。 継承したメソッドの再定義は、効率化のためだけで機能が同じものも、そうでないものもありますが、 他のクラスのインスタンスでも同名のメソッドが使えることを示唆し、 視野を広げて俯瞰して体系的に捉えやすくなっていいのではないか、と考えています。
定義されていないメソッドが、定義されているメソッドの中に混ざっている例を見ます。 混ざっているのは正しくなく、正確な理解をしたい人の理解を妨げると思うため、 未定義のメソッドを混ざらないように「説明のための未定義のメソッド」などの区分で独立させたいです。 ## 未定義のメソッドの例 ### Objectのインスタンスメソッド 例えば、`Object`のインスタンスメソッドが顕著です。 [Object\#to\_a \(Ruby 3\.0\.0 リファレンスマニュアル\)](https://docs.ruby-lang.org/ja/latest/method/Object/i/to_a.html) > 説明のためここに記載してありますが、このメソッドは実際には Object クラスには定義されていません。必要に応じてサブクラスで定義すべきものです。 ### Array#dup, Array#clone [Array\#clone \(Ruby 3\.0\.0 リファレンスマニュアル\)](https://docs.ruby-lang.org/ja/latest/method/Array/i/dup.html) また、`Array`の`dup`と`clone`は継承されているだけなのに、説明の項目があります。 定義されているかどうかという線引だと削除すべきように思われますが、 自分自身配列でdupメソッドをよく使うし、Arrayは浅いコピーの問題が起きる代表例として載せる価値があるのかもしれないと思っています。 ### Integer#hash [hash メソッドが載っていないクラスがある...
https://github.com/rurema/doctree/pull/2524 で `samplecode` がテキストファイルに使われているのですが、他にも ruby 以外のサンプルファイルをコピーしやすい表示にしたいこともありそうなので、 ruby としての syntax highlight なしで同様の HTML になる `sampleなんとか` があると良さそうだと思いました。
Close https://github.com/rurema/doctree/issues/2365 親クラスから継承している特異メソッドを、クラスのページに表示します。 # Screenshot File classの例 before  after 
関連: https://qiita.com/scivola/questions/3b984e863fdbcb2bd6ec * そもそも各メソッドエントリがバージョン情報を持っていないので、since/untilを解析した後にデータを保存する必要がある * sinceなしで書かれているメソッドはバージョンいくつから存在したことにするか問題 * 厳密にやるなら古いsinceを消せなくなってしまう * それは嫌なので、どのバージョンから追加されたかのメタ情報を書く記法を用意して、それも読むようにするとよいのでは * メタ情報がないときには「少なくともRuby 2.4にはある」みたいな書き方になりそう
https://github.com/rurema/doctree/issues/1579 の関連です。 https://github.com/rurema/bitclust/pull/61 によってドキュメント本文内の不要な空白は削除されましたが、メタタグのdescriptionでは除かれないままのようです。 たとえば `URI::Generic#hostname` のドキュメントのメタタグには不要な空白が含まれています。 ```bash $ curl https://docs.ruby-lang.org/ja/master/method/URI=3a=3aGeneric/i/hostname.html | grep -A 1 description -- ``` これはSlackにURLをはった時、不自然な空白がみえて気が付きました。  そのため、メタタグのdescriptionでも同様にこの空白を取り除いた方が良さそうです。
- https://github.com/rurema/bitclust/issues/86 - https://github.com/rurema/bitclust/issues/88 のようなナビゲーションのマークアップ方法の改善に加えて、sitemap.xml があると良さそうだなと思いました。 _Originally posted by @r7kamura in https://github.com/rurema/bitclust/issues/89#issuecomment-562518003_