タイプライブラリのメソッドのシンタックスを調べる

内容は「Win32OLE ことはじめ」から、そのままパクッただけなんだけど。

class WIN32OLE_METHOD
  def help
    "#{name}(#{__help_params__.join(', ')}) As #{return_type}"
  end

  private

  def __help_params__
    params.map do |p|
      "#{'[in]'  if p.input?}"\
      "#{'[out]' if p.output?}"\
      "#{'[optional]' if p.optional?}"\
      "#{'[retval]'   if p.retval?}"\
      " #{p.name}"\
      "#{(' = %s' % p.default.inspect) if p.default}"\
      " As #{p.ole_type}"
    end
  end
end

class WIN32OLE
  def method_help(name)
    ole_method(name).help
  end
end

これで irb からメソッドのヘルプが見れるようになった。

sheet.ole_method('cells').help    # => "Cells() As Range"
cells.method_help('range')        # => "Range([in] Cell1 As VARIANT, [in][optional] Cell2 As VARIANT) As Range"

しかし As VARIANT と言われても情報量ないなぁ。