2014年06月22日

Updated Ruby/GTK API reference with Ruby

    I updated almost all of wiki pages of Ruby/GTK API reference(Japanese version) on the official Ruby-GNOME2 web site several days ago.

    I wrote three Ruby scripts doing three tasks below:

  • Downloading the wiki pages in edit-mode. (They have class members documented)

  • Listing up members of each classes implemented in the library for MS Windows itself.

  • Comparing the pairs of class members lists above, and adding missing members on the documents to the wiki data.


    Some useful methods made automating the second task possible for this time. They are "singleton_methods", "instance_methods", "constants" and "included_modules" methods built in Ruby, and "properties" and "signals" methods Ruby/GTK classes have. All of them will accept an option parameter representing whether returning members list includes inherited members or not.

    I made new wiki data for uploading with the three scripts above. Then made some adjustments to the data and uploaded it to the web manually.
posted by chrono at 08:58| Comment(0) | TrackBack(0) | Ruby

Listing up classes or modules in specific module in Ruby

    If you want a list of classes in Ruby/GtkSourceView3 library, run this code.

require 'gtksourceview3'

mod = GtkSource
list = mod.constants.select do |const|
Object.const_get("#{mod}::#{const}").class == Class
end
puts list


    Replace "Class" with "Module", when you want a modules list.
タグ:ruby programming
posted by chrono at 07:35| Comment(0) | TrackBack(0) | Ruby

2014年06月21日

Rubyで特定のモジュール内にあるクラスやモジュールをリストアップする方法

例えば、Ruby/GtkSourceView3のクラスってどこまで実装されてるんだろう?と思った時には、

require 'gtksourceview3'

mod = GtkSource
list = mod.constants.select do |const|
Object.const_get("#{mod}::#{const}").class == Class
end
puts list


といったコードを実行すれば、リストアップできる。

"== Class"のところを"== Module"にすればモジュールが出てくる。
posted by chrono at 16:52| Comment(0) | Ruby

2014年06月17日

Ruby/GTKのAPIリファレンスを一気に更新してみた



 Ruby-GNOME2のWikiサイト上のデータと(Windows向けの)gtk2ライブラリに含まれているクラスの情報を照らし合わせてWikiページ更新用のデータを作るRubyスクリプトを書いたので、それでドバーッとやってみた。

Ruby/GTK APIリファレンス インデックス

 スクリプトでは、リファレンスの編集用のデータを含むページのダウンロード、ライブラリ内のクラスが実際に持っている項目のリストアップ、前記2つのデータを比較して抜けている項目を追加するなどして新しいリファレンスのデータを作る、という3つの作業をやった。新しいデータの細かい手直しと、Wikiページを更新する作業は手作業でやった。

 今回の作業のキモは、ライブラリ内のクラスの情報を取得するところで、これがプログラムで簡単にできなければ、あれほど大量のページをまとめて更新するなんてことはできなかった。

 Rubyには元々、クラスが持っているメソッドや定数をリストアップするsingleton_methods、instance_methods、constantsといったメソッドや、インクルードされているモジュールをリストアップするincluded_modulesメソッドがあり、さらにRuby-GNOME2のクラスには、プロパティとシグナルをリストアップするproperties、signalsというメソッドがあり、これらはすべて先祖のクラスから継承したメンバを含めるかどうかのオプションを指定することができる。

 これらのメソッドから得られる情報を元にしてリファレンスの"見出し"部分を更新した。今回は基本的にプログラムでできることだけをやるつもりだったので、本文には手をつけていない。
posted by chrono at 16:21| Comment(0) | Ruby