Giter VIP home page Giter VIP logo

bitclust's People

Contributors

arikui1911 avatar dogatana avatar fukayatsu avatar hanachin avatar hazi avatar hsbt avatar iwadon avatar junichiito avatar kou avatar krororo avatar no6v avatar norio avatar nurse avatar ohai avatar okkez avatar pocke avatar r7kamura avatar ridec avatar sada avatar scivola avatar sho-h avatar sinsoku avatar swamp09 avatar tagomoris avatar takaram avatar universato avatar wanabe avatar ysjj avatar yugui avatar znz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bitclust's Issues

メソッド検索のページを作る

メソッド(や特殊変数など)の検索機能を試作してみました。
https://scivola.github.io/rurema-search-demo/

HTML,CSS,JavaScript だけでできています。
String#each_codepoint といった形のメソッド名(にクラスがついたもの)と URL との対照データを JSON 的に持たせています。1 MB 程度。
これは statichtml サブコマンドで生成する,という前提です。

検索ページがほしい理由はこんなところです:

  • トップページ → ライブラリー → クラス → メソッドとたどるのが面倒
  • クラス横断的に同名のメソッドの存在が知りたいこともある
  • うろ覚えのメソッド名からささっと見つけたいことがある
  • 特殊変数はそもそもどこに載っているのかすら分からない

メタタグのdescriptionでも、改行による不要な空白を取り除きたい

rurema/doctree#1579 の関連です。

#61 によってドキュメント本文内の不要な空白は削除されましたが、メタタグのdescriptionでは除かれないままのようです。

たとえば URI::Generic#hostname のドキュメントのメタタグには不要な空白が含まれています。

$ curl https://docs.ruby-lang.org/ja/master/method/URI=3a=3aGeneric/i/hostname.html | grep -A 1 description 
<meta name="description" content="自身の hostname を文字列で返します。また、[[m:URI::Generic#host]] が設
定されていない場合は nil を返します。">
--
<dd class="method-description">
<p>

これはSlackにURLをはった時、不自然な空白がみえて気が付きました。
200522133018

そのため、メタタグのdescriptionでも同様にこの空白を取り除いた方が良さそうです。

クラスの継承リストもナビゲーションとして定義したい

#86 と同様クラスの継承リスト部分もnav / ol / liでマークアップしたい

現状だと以下のようにリストとしてマークアップされていない

<p>


クラスの継承リスト: Hash

      &lt; <a href="../class/Enumerable.html">Enumerable</a>
      

      &lt; <a href="../class/Object.html">Object</a>
      

      &lt; <a href="../class/Kernel.html">Kernel</a>
      

      &lt; <a href="../class/BasicObject.html">BasicObject</a>

https://docs.ruby-lang.org/ja/2.6.0/class/Hash.html

検索エンジンの検索結果にfaviconを表示させたい

Googleなどの検索エンジンの検索結果の画面にアイコンが表示されていなさそうです。
Screenshot_20191202_175803_com android chrome

GoogleのSearch Consoleのヘルプページを見ると以下のように書かれています。

ファビコンのサイズが 48 ピクセルの倍数になっていること(例: 48 x 48 ピクセル、96 x 96 ピクセル、144 x 144 ピクセルなど)。SVG ファイルの場合は、サイズに関して特別な指定はありません。有効なファビコン形式は、すべてサポートされています。Google では画像サイズを 16 x 16 ピクセルに変換するため、その解像度で適切に表示されるか、あらかじめご確認ください。16 × 16 ピクセルのファビコンは指定しないでください。
https://support.google.com/webmasters/answer/9290858?hl=ja

るりまのfaviconは16x16サイズのように見えるのでそれが原因かもしれません。
https://github.com/rurema/bitclust/blob/master/theme/default/rurema.png

#@samplecode に /<a>/ があると正しくエスケープされない

最小再現条件は絞り込めていませんが,

#@samplecode
puts /<a>/
#@end

bitclust htmlfile 云々

で処理すると,

<pre class="highlight ruby">
<code>
<span class="nb">puts</span> <span class="sr">/<a>/</span>
</code></pre>

というコードが出来ます。
<a> がエスケープされずにそのまま <a> として入っています。

/<a>/"<a>" に変えると,処理は正常でした。

rurema/doctree#2069 を修正中に発見しました。
MatchData の named_captures には

  m = /(?<a>.)(?<b>.)/.match("01")
  m.named_captures #=> {"a" => "0", "b" => "1"}

  m = /(?<a>.)(?<b>.)?/.match("0")
  m.named_captures #=> {"a" => "0", "b" => nil}

  m = /(?<a>.)(?<a>.)/.match("01")
  m.named_captures #=> {"a" => "1"}

  m = /(?<a>x)|(?<a>y)/.match("x")
  m.named_captures #=> {"a" => "x"}

という個所があり,これを #@samplecode 形式に変えたところ,そこからあとのスタイルが崩れたので気づきました。

Wikiの情報が古いのかすぐ使えないものが多い(特にhtmlfileサブコマンド)

BitClustのWikiの情報が古いのか、
すぐ使えないものが多いように思います。

特にhtmlfileサブコマンドについて、使いやすくあって欲しいです。

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    #クラスGzipReader
bitclust htmlfile --force mkmf.rd                                  #ファイルの全体を強制的に出力する
bitclust htmlfile --ruby=1.8.6 --target=Array Array > t.html       #rubyのバージョンを指定
bitclust htmlfile --capi ../doctree/refm/capi/src/array.c.rd --target=rb_ary_new3 # C API では現状 --target 必須

1番最初のRangeなどクラス指定だけでいけそうな雰囲気ですが、
パスじゃないと上手くいかないように思います。
htmlfileコマンドそのものの問題ですけど、パスが存在しないときにRuby本体のエラー文が10行ほどでるので、わかりにくいです。
これは、別でIssueをたてるべきでしょうかね。

後半の--force--capiについて、
--forceオプションは存在するようですが動かないし、
--capiは、invalid optionだと怒られます。

動かないもの等、Wikiから消したりしていきたいです。

BitClustのシンタックスハイライト機能が終端なしのRangeに対応していない

clear-code/rurema-search#31 からの報告です。

@kou さんがおっしゃるにはシンタックスハイライト機能には以下の問題があるらしいです。

これ、BitClustのシンタックスハイライト機能が終端なしのRangeに対応していなくてエラーになるからなんですよ。
rurema/doctree@55e28e0#diff-3b8de3267235fda393d0c1ea268bf05aR45 で追加されたサンプルコードでエラーが発生します。
終端を持たない範囲オブジェクト:3:6 syntax error, unexpected ')' (BitClust::SyntaxHighlighter::ParseError)
後でBitClustを直そうと思って全然手を付けられていないのでBitClustの方に報告しておいてもらえますか?

samplecode の syntax error でファイル名がわからない

rurema/doctree@6aa2d52 のコミットログに書いた

-:5:12 syntax error, unexpected keyword_ensure, expecting keyword_end (BitClust::SyntaxHighlighter::ParseError)

のようにファイル名が - になっていて、実際の syntax error が起きた samplecode がどのファイルなのか、この行だけだとわかりませんでした。
(src の追加はとりあえず grep で探せるように追加したのですが、テストを確認できておらず失礼しました 🙇)

cannot execute gem-installed `refe` (1.2.2)

$ docker run --rm ruby:2.6.5-alpine sh -c 'set -x && gem install refe2 && refe'
+ gem install refe2
Successfully installed rack-2.0.7
Successfully installed progressbar-1.10.1
Successfully installed bitclust-core-1.2.2
Successfully installed refe2-1.2.2
4 gems installed
+ refe
/usr/local/bundle/gems/refe2-1.2.2/bin/refe:6:in `realpath': No such file or directory @ realpath_rec - /usr/local/bundle/gems/refe2-1.2.2/lib (Errno::ENOENT)
	from /usr/local/bundle/gems/refe2-1.2.2/bin/refe:6:in `realpath'
	from /usr/local/bundle/gems/refe2-1.2.2/bin/refe:6:in `<top (required)>'
	from /usr/local/bundle/bin/refe:23:in `load'
	from /usr/local/bundle/bin/refe:23:in `<main>'

gem に lib ディレクトリが含まれなくなったのが原因のようです。

undef 対応で個別メソッドのページが残っている

rurema/doctree#2348 の CI が失敗している原因を調べてみたところ、 class/Complex.html からは隠れていても、 method/Complex/i/=3c.html のような個別ページが生成されていて、そちらが以下のように check_format タスクで検出されて失敗になっていました。

Found invalid meta info: <dt>[UNKNOWN_META_INFO] @undef:</dt> in /tmp/html/2.5.0/method/Complex/i/=3c.html
Found invalid meta info: <dt>[UNKNOWN_META_INFO] @undef:</dt> in /tmp/html/2.5.0/method/Complex/i/=3c=3d.html
Found invalid meta info: <dt>[UNKNOWN_META_INFO] @undef:</dt> in /tmp/html/2.5.0/method/Complex/i/=3e.html
Found invalid meta info: <dt>[UNKNOWN_META_INFO] @undef:</dt> in /tmp/html/2.5.0/method/Complex/i/=3e=3d.html
Found invalid meta info: <dt>[UNKNOWN_META_INFO] @undef:</dt> in /tmp/html/2.5.0/method/Complex/i/between=3f.html
Found invalid meta info: <dt>[UNKNOWN_META_INFO] @undef:</dt> in /tmp/html/2.5.0/method/Complex/i/clamp.html
Found invalid meta info: <dt>[UNKNOWN_META_INFO] @undef:</dt> in /tmp/html/2.6.0/method/Complex/i/=3c.html
Found invalid meta info: <dt>[UNKNOWN_META_INFO] @undef:</dt> in /tmp/html/2.6.0/method/Complex/i/=3c=3d.html
Found invalid meta info: <dt>[UNKNOWN_META_INFO] @undef:</dt> in /tmp/html/2.6.0/method/Complex/i/=3e.html
Found invalid meta info: <dt>[UNKNOWN_META_INFO] @undef:</dt> in /tmp/html/2.6.0/method/Complex/i/=3e=3d.html
Found invalid meta info: <dt>[UNKNOWN_META_INFO] @undef:</dt> in /tmp/html/2.6.0/method/Complex/i/between=3f.html
Found invalid meta info: <dt>[UNKNOWN_META_INFO] @undef:</dt> in /tmp/html/2.6.0/method/Complex/i/clamp.html
Found invalid meta info: <dt>[UNKNOWN_META_INFO] @undef:</dt> in /tmp/html/2.7.0/method/Complex/i/=3c.html
Found invalid meta info: <dt>[UNKNOWN_META_INFO] @undef:</dt> in /tmp/html/2.7.0/method/Complex/i/=3c=3d.html
Found invalid meta info: <dt>[UNKNOWN_META_INFO] @undef:</dt> in /tmp/html/2.7.0/method/Complex/i/=3e.html
Found invalid meta info: <dt>[UNKNOWN_META_INFO] @undef:</dt> in /tmp/html/2.7.0/method/Complex/i/=3e=3d.html
Found invalid meta info: <dt>[UNKNOWN_META_INFO] @undef:</dt> in /tmp/html/2.7.0/method/Complex/i/between=3f.html
Found invalid meta info: <dt>[UNKNOWN_META_INFO] @undef:</dt> in /tmp/html/2.7.0/method/Complex/i/clamp.html

メソッドの一覧が読み取りづらい

Problem

るりまのドキュメントのクラスのページにそのクラスで定義されているメソッドの一覧がありますが、メソッド間の空白が狭いせいかとても読みづらく感じます。

200225024719

そのため、これをもう少し読みやすくしたいです。

Solution

試しにmarginを入れてみたところ、だいぶ読みやすくなった気がします。

margin-left: 10px

200225024507

margin-left: 5px

200225025020

10pxだと間隔が少し広すぎると感じるので、5pxのほうがちょうどよいと思っています。
5pxのmarginを足そうと思うのですが、どうでしょうか?

margin以外にもなにか良いアイディアがあればコメントください!
とはいえ、marginを入れるのは一瞬でできるし、とりあえず一次対応としてやってしまって良いかなと思っています。それ以上の改善はmarginを入れてから考えるので遅くないと思っています

SEO用にRubyリファレンスマニュアルのトップのページに「るりま」の文言を加えたい

Rubyリファレンスマニュアルの略称として「rurema」「るりま」が定着していると思います。
しかしテンプレートの中に「るりま」や「rurema」の単語が含まれていなさそうです。
なので「Array るりま」などで検索したときリファレンスマニュアルがヒットしていなさそう。

テンプレート内のどこかにキーワードとして「るりま」「rurema」を加えると検索しやすくなると思いますがどうでしょうか?

meta情報のtitleから"instance method"などの表記をなくしたい

problem

現在、るりまのメソッドページのタイトルには最初に「instance method」などの文字列が入っています。

191229211507

メソッドがinstance methodなのかどうかというのはクラス名とメソッド名が#で繋がれているのを見れば分かるので、あまり重要な情報ではありません。それなのに「instance method」が一番先頭に来ているのは、違和感があります。

solution

そのため、タイトル情報から"instance method"という表記をなくす or 後ろに移すのを提案します。

実際のメソッドページに表示されている青帯の部分は変えても変えなくても良いかなと思っています。
191229215519

その他

これってSEOに効果あるんですかね、わからない🤔

同名により再定義されたメソッドが区別できるようにわけてほしい

Arrayあたりに顕著ですが、Enumerableをincludeして継承したメソッドを同名で再定義しています。

継承したメソッドの再定義は、効率化のためだけで機能が同じものも、そうでないものもありますが、
他のクラスのインスタンスでも同名のメソッドが使えることを示唆し、
視野を広げて俯瞰して体系的に捉えやすくなっていいのではないか、と考えています。

あるメソッド(or クラス/モジュール/ライブラリ)がどのバージョンから使えるかを表示する

関連: https://qiita.com/scivola/questions/3b984e863fdbcb2bd6ec

  • そもそも各メソッドエントリがバージョン情報を持っていないので、since/untilを解析した後にデータを保存する必要がある
  • sinceなしで書かれているメソッドはバージョンいくつから存在したことにするか問題
    • 厳密にやるなら古いsinceを消せなくなってしまう
    • それは嫌なので、どのバージョンから追加されたかのメタ情報を書く記法を用意して、それも読むようにするとよいのでは
    • メタ情報がないときには「少なくともRuby 2.4にはある」みたいな書き方になりそう

トップページの「Builtin libraries」などの日本語化

トップページ
https://docs.ruby-lang.org/ja/2.7.0/doc/
には以下のような個所があります。

組み込みライブラリ
 Builtin libraries
標準添付ライブラリ
 All libraries
C API
 All C API

この「Builtin libraries」「All libraries」「All C API」が英語なのはちょっと不親切な気がします。

リンク先のページタイトルである

  • 組み込みライブラリ
  • ライブラリ一覧
  • 関数一覧
    でどうでしょうか。
    (ただ,「関数一覧」はページタイトル自体が誤解を招きそうですが)

Add link to github project

生成したドキュメントに github のるりまプロジェクトへのリンクを付けたい。

Mac + Chrome 環境でサンプルコードが等幅にならずに表示がずれる

Mac + Chrome 環境でサンプルコードが等幅にならずに表示がずれます

例えば

https://docs.ruby-lang.org/ja/latest/method/String/s/new.html

image

Mac + Chrome でコメントが揃わない。

同じ内容を↓のように esa で確認するとズレてないし、Win + Chrome も問題ない。

text = "hoge".encode("EUC-JP")
no_option = String.new(text)                             # => "hoge"
no_option.encoding == Encoding::EUC_JP                   # => true
with_encoding = String.new(text, encoding: "UTF-8")      # => "hoge"
with_encoding.encoding == Encoding::UTF_8                # => true
String.new("test", encoding: "UTF-8", capacity: 100_000) # => "test"
  • Win + Chrome

image

原因

https://qiita.com/tmsanrinsha/items/d493a9889df7dee239bb

たぶんこれ?
hkdnet さんと becolomochi )さんに調べてもらった。

chmファイルで文字化けが発生します。

HTML Help Workshop用ファイルのエンコーディングが utf-8 のため文字化けが発生します。

lib\bitclust\subcommands\chm_command.rb で Windows-31j を指定すれば良いのですが、
pull request を発行するのが良いでしょうか?

サンプルコードの特異メソッド内でObject.newが.newObjectになる

概要

Rubyのリファンレンスマニュアルの「NEWS for Ruby 2.7.0」のページに書かれたサンプルコードの Object.new.newObject で表示されていました。

https://docs.ruby-lang.org/ja/latest/doc/news=2f2_7_0.html

screenshot-bitclust-20211204_1

元ファイルを確認しましたが Object.new と書かれていました。

https://github.com/rurema/doctree/blob/9e56e926abbfe033506a9aee43eb8f2b14b8c446/refm/doc/news/2_7_0.rd#L259-L266

確認内容

bitclustで該当のサンプルコードの生成の確認をしました。
その結果、特異メソッド内で Object.new と書いた時に .newObject となるようでした。

以下は、確認に使用したコードです。

require "bitclust"

parser = BitClust::SyntaxHighlighter.new(<<EOS
def foo
  class << Object.new
    yield #=> warning: `yield' in class syntax will not be supported from Ruby 3.0. [[feature:15575]]
  end
end
foo { p :ok }
EOS
)
puts parser.highlight

以下は実行結果です。

<span class="k">def</span> <span class="nf">foo</span>
  <span class="k">class</span> <span class="o">&lt;&lt;</span> <span class="p">.</span><span class="nf">new</span><span class="nn"></span><span class="o"></span><span class="nc">Object</span>
    <span class="k">yield</span> <span class="c1">#=&gt; warning: `yield' in class syntax will not be supported from Ruby 3.0. [[feature:15575]]
</span>  <span class="k">end</span>
<span class="k">end</span>
foo <span class="p">{</span> <span class="nb">p</span> <span class="ss">:ok</span> <span class="p">}</span>

この状態は on_conston_nl の時の処理が関係しているようでした。

def on_const(token, data)
case
when @stack.last == :class
@name_buffer << token
when @stack.last == :module
@name_buffer << token
when @stack.last == :symbol
data << "#{token}</span>"
@stack.pop
else
on_default(:on_const, token, data)
end
data
end

when @stack.last == :class
namespace = @name_buffer.values_at(0..-3).join
operator = @name_buffer[-2]
name = @name_buffer.last
data << "<span class=\"nn\">#{namespace}</span>"
data << "<span class=\"o\">#{operator}</span>"
data << "<span class=\"nc\">#{name}</span>"
@stack.pop
@name_buffer.clear
end

on_const@name_buffer にトークンの値を代入して on_nl で処理しますが、特異メソッドの Object.new はその処理が合わないようでした。
一旦、 on_const の処理をコメントアウトすると順番が変わり、 Object.new になりました。

    def on_const(token, data)
      on_default(:on_const, token, data)
#     case
#     when @stack.last == :class
#       @name_buffer << token
#     when @stack.last == :module
#       @name_buffer << token
#     else
#       on_default(:on_const, token, data)
#     end
      data
    end

以下は、上記のコメントアウト後に実行した結果です。

<span class="k">def</span> <span class="nf">foo</span>
  <span class="k">class</span> <span class="o">&lt;&lt;</span> <span class="no">Object</span><span class="p">.</span><span class="nf">new</span>
    <span class="k">yield</span> <span class="c1">#=&gt; warning: `yield' in class syntax will not be supported from Ruby 3.0. [[feature:15575]]
</span>  <span class="k">end</span>
<span class="k">end</span>
<span class="nn"></span><span class="o"></span><span class="nc">foo</span> <span class="p">{</span> <span class="nb">p</span> <span class="ss">:ok</span> <span class="p">}</span>

そのまま Object.new と書いたのは問題ありませんでした。
特異メソッド内に書かれた Object.new.newObject になるようでした。

require "bitclust"

parser = BitClust::SyntaxHighlighter.new(<<EOS
Object.new
class C
  class << self
    def foo
      Object.new
    end
  end
end
EOS
)
puts parser.highlight

以下の実行結果になりました。

<span class="no">Object</span><span class="p">.</span><span class="nf">new</span>
<span class="k">class</span> <span class="nn"></span><span class="o"></span><span class="nc">C</span>
  <span class="k">class</span> <span class="o">&lt;&lt;</span> <span class="nc">self</span>
    <span class="k">def</span> <span class="nf">foo</span>
      <span class="p">.</span><span class="nf">new</span><span class="nn"></span><span class="o"></span><span class="nc">Object</span>
    <span class="k">end</span>
  <span class="k">end</span>
<span class="k">end</span>

ご確認よろしくお願いします。

グローバル変数にエイリアスが存在する場合、どちらか片方しか一覧に表示されない

rurema/doctree#1165 からの流れです

例えばEnglishライブラリでは、同じグローバル変数に対して複数のエイリアスが設定されているものがいくつかあります。(例: $FS$FIELD_SEPARATOR)
この場合、ライブラリのページの "追加・再定義されるメソッド" の部分にはこのどちらか片方しか表示されません。
例: https://docs.ruby-lang.org/ja/latest/library/English.html には$FIELD_SEPARATORは表示されているが、$FSは表示されていない

これはページ内をブラウザで検索した時などに不便です。また、インスタンスメソッドに関してはどちらも表示されているようなので、一貫した挙動でもないようです。
そのため、どちらか片方ではなく両方(このケースの場合は$FS$FIELD_SEPARATOR)がここに表示されてほしいです。

記号メソッド呼び出しの構文ハイライトがおかしい

Vector#* のサンプルコードの構文ハイライトが以下のようにおかしくなっています。

matrix-mult-syntax
(左下隅の p が赤くなっています)

以下のミニマムな例からも,どうやら *! といった記号のメソッド(演算子メソッド)をピリオドで呼び出す形式が正しくパースできず,あとの行に影響しているのではないか,と思われます。

matrix-mult-syntax-mini

Protectedインスタンスメソッドが、Publicインスタンスメソッドに混ざっている

doctreeの方で== Protected Instance Methodsを検索すると、10ファイルほどヒットします。
ここに書かれているProtectedインスタンスメソッドが、一般的なPublicインスタンスメソッドと混ざっています。

あまりprotectedは使われてなく数は少ないかもしれませんが、
(ピンポイントで見て)内部向けのメソッドが外部向けのものと混ざるべきではないのでIssueとしてあげておきます。

混ざっている例

1例として、Benchmark::Tmsmemberwiseを貼っておきます。

doctree のテキスト(エディタの画面)

doctree/benchmark.rd at 7dcae13e · rurema/doctree
Image from Gyazo

るりま(HP)

class Benchmark::Tms (Ruby 3.0.0 リファレンスマニュアル)
Image from Gyazo

クラスのメソッド目次に、継承元で定義されているメソッドへのリンクも欲しい

問題

たとえばArray#countのようなメソッドは、るりまのドキュメントではArrayのページには説明が存在せず、Enumerable#countとして存在している。
一方Array#sumはArrayにもEnumerableにも両方存在している。

初心者としては(というか私のようなある程度Rubyに慣れた人間でも)これは混乱の元で、ドキュメントを探すのがちょっと大変。
なぜならばドキュメントを探すためにRubyのメソッドの実装を意識しなければならないため。

解決案

目次の部分に、継承元のメソッドを表示するようにしたい。

例: (これはWebコンソールで適当にいじったやつなので、実装はまだ何もないです)

190930165120

「Enumerableで定義されているメソッド」の中のリンクはEnumerableのページへのリンクで、Arrayのページ内にメソッドの解説まで書く必要はないと思っています。
つまり、単にページ先頭にメソッド一覧へのリンクを作れば良いかなと言う提案です。

bitclust search 時に不正なオプションを与えるとNoMethodErrorが発生する

$ bitclust search foo --invalid-option
invalid option: --invalid-option
/home/sho-h/.rbenv/versions/2.0.0-p247/lib/ruby/gems/2.0.0/gems/bitclust-core-0.8.0/lib/bitclust/runner.rb:128:in `rescue in _run': undefined method `help' for #<BitClust::Searcher:0xf8ad0b08> (NoMethodError)

原因は BitClust::Searcher#help がないからのようなので、SubCommand と同様に追加します。

修正後。

$ bitclust search foo --invalid-option
invalid option: --invalid-option
Usage: bitclust search <pattern>

Object クラスの !~ メソッドが目次では ! になっている

Object クラスの !~ メソッドが目次では ! になっています。
http://docs.ruby-lang.org/ja/2.1.0/class/Object.html

明確に bitclust の問題とわかっているわけではないので�すが、bitclust htmlfile を実行したときに、途中で ID と思われる値が Object/i.=21._builtin になっていました (ただ、この ID がどのように設定されるかも追えていません)。
また、上記ページのページ内リンクの URL も http://docs.ruby-lang.org/ja/2.1.0/class/Object.html#I_--21 となっているので、処理過程のどこかで ~ が抜けてしまっているのかな、という気がします。

gemのリリースできる人を追加したい

あんまりアクティブに活動できてなくて、gemのリリースが滞っていると思うのでgemのリリースをできる人を追加したい。
「やるぞ!」という気持ちの人は手を上げてください。

💭 9月10月あたりは比較的マシなのでなんかできるかも。

配布されているアーカイブ (ruby-refm-1.9.3-dynamic-20120829) の server.rb で何も表示されない

http://cache.ruby-lang.org/pub/ruby/doc/ から ruby-refm-1.9.3-dynamic-20120829.tar.xz をダウンロードして ruby server.rb を実行して http://localhost:10080/ を開いても真っ白なページで内容が表示されません。

原因を調べてみたところ、 f42aba0 の変更で db の代わりに @database_prefix になったのに初期値が設定されていないのが原因のようです。

とりあえず

mkdir -p ~/.bitclust
echo ':database_prefix: db' > ~/.bitclust/config

のように ~/.bitclust/config で設定すれば表示されるようになりました。

意図と違う(?)文字クラス [ \t\z]

数箇所で [ \t\z] という文字クラスが使われています。

しかし,[ ] の中で \z と書いても,文字列終端のアンカーとは解釈されませんし,単に z と書いたのと同じです。
つまり,[ \t\z][ \tz] と同じです。

z をわざわざ \z と書くとは考えられないので,意図と違っているのではないかと思います。

rake test が失敗します (windows 環境)

gem としては

gem list test
*** LOCAL GEMS ***
minitest (5.8.3)
rubytest (0.8.1)
test (1.0.0)
test-unit (3.2.1, 3.1.5)

が入っていますが、次のように失敗します。

rake test
ruby test/run_test.rb
C:/Programs/Ruby/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in require': cannot load such file -- test/unit/notify (LoadError) from C:/Programs/Ruby/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:inrequire'
from test/run_test.rb:6:in <main>' rake aborted! Command failed with status (1): [ruby test/run_test.rb...] C:/Git/bitclust/Rakefile:15:inblock in <top (required)>'
Tasks: TOP => test
(See full trace by running task with --trace)

テストスイーツが異なるためではないかと思うのですが、どの gem を入れれば良いでしょうか。

環境
ruby 2.3.0p0 (2015-12-25 revision 53290) [i386-mingw32]
Windows 10 Pro 64bit

doctree#1150 以前の状態でArray#bsearch_indexのサンプルコードが原因でstatichtmlタスクに失敗する場合がある

以下を参照。

generateした後のDBをfind-minimumなどで検索すると /tmp/db-1.9.3/method/-array/i.rotate=21._builtin に以下が見つかった。

... (元のArray#rotate!の内容) ...

//emlist[例: find-minimum モード][ruby]{
ary = [0, 4, 7, 10, 12]
ary.bsearch_index { |x| x >=   4 } # => 1
ary.bsearch_index { |x| x >=   6 } # => 2
ary.bsearch_index { |x| x >=  -1 } # => 0
ary.bsearch_index { |x| x >= 100 } # => nil
//emlist[例: find-any モード][ruby]{
ary = [0, 4, 7, 10, 12]
# 4 <= v < 8 になる要素の位置を検索
ary.bsearch_index { |x| 1 - x / 4 } # => 2
# 8 <= v < 10 になる要素の位置を検索
ary.bsearch_index { |x| 4 - x / 2 } # => nil

2.2.0以降でも起こりうるかもしれないため、最低でも原因の確認までは必要そうに思いました。

説明のための未定義のメソッド欄の区分を設けたい

定義されていないメソッドが、定義されているメソッドの中に混ざっている例を見ます。
混ざっているのは正しくなく、正確な理解をしたい人の理解を妨げると思うため、
未定義のメソッドを混ざらないように「説明のための未定義のメソッド」などの区分で独立させたいです。

未定義のメソッドの例

Objectのインスタンスメソッド

例えば、Objectのインスタンスメソッドが顕著です。

Object#to_a (Ruby 3.0.0 リファレンスマニュアル)

説明のためここに記載してありますが、このメソッドは実際には Object クラスには定義されていません。必要に応じてサブクラスで定義すべきものです。

Array#dup, Array#clone

Array#clone (Ruby 3.0.0 リファレンスマニュアル)

また、Arraydupcloneは継承されているだけなのに、説明の項目があります。
定義されているかどうかという線引だと削除すべきように思われますが、
自分自身配列でdupメソッドをよく使うし、Arrayは浅いコピーの問題が起きる代表例として載せる価値があるのかもしれないと思っています。

Integer#hash

hash メソッドが載っていないクラスがある · Issue #2556 · rurema/doctree

他に、こちらのIssueで、Integerなどに未定義のhashメソッドがないという話題がありました。
未定義ですが何か説明すべき事情があるなら、定義されているメソッドと混ざらないようにすればいいのでは、と思いました。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.