Module: SleipnirAPI

Extended by:
Registry
Defined in:
lib/sleipnir_api.rb,
lib/sleipnir_api/tab.rb,
lib/sleipnir_api/util.rb,
lib/sleipnir_api/bitmap.rb,
lib/sleipnir_api/dialog.rb,
lib/sleipnir_api/output.rb,
lib/sleipnir_api/command.rb,
lib/sleipnir_api/process.rb,
lib/sleipnir_api/profile.rb,
lib/sleipnir_api/version.rb,
lib/sleipnir_api/cli/base.rb,
lib/sleipnir_api/ffi/base.rb,
lib/sleipnir_api/searcher.rb,
lib/sleipnir_api/security.rb,
lib/sleipnir_api/sleipnir.rb,
lib/sleipnir_api/key_state.rb,
lib/sleipnir_api/tabbed_ie.rb,
lib/sleipnir_api/profile/ini.rb,
lib/sleipnir_api/profile/key.rb,
lib/sleipnir_api/profile/util.rb,
lib/sleipnir_api/profile/section.rb

Overview

Overview

Class / Module

  • SleipnirAPI

    このモジュールは Sleipnir の COM サーバ (Sleipnir.API) に接続するためのメソッドを提供します。

    まず new または connect を利用して SleipnirAPI::Sleipnir オブジェクトを取得します。

    • SleipnirAPI::Sleipnir

      Sleipnir 全体を操作する API を定義しています。各ドキュメントを操作する場合は SleipnirAPI::Sleipnir#tab メソッドでSleipnirAPI::Tab を取得して行います。

      このオブジェクトは SleipnirAPI.new または SleipnirAPI.connect で取得します。

      SleipnirAPI::KeyState と SleipnirAPI::Dialog で定義されているメソッドが利用できます。

      • SleipnirAPI::Tab

        タブ固有の API (Sleipnir.API でドキュメント ID を引数に取る API) を定義しています。

        このオブジェクトは Sleipnir.API の ドキュメント ID を抽象化したものです。実際のドキュメントオブジェクト (DispHTMLDocument) の抽象化は行いません。

        SleipnirAPI::KeyState と SleipnirAPI::Dialog で定義されているメソッドが利用できます。Sleipnir.API の ShiftDown や InputBox はタブ固有の API ではありませんが、利便性のため SleipnirAPI::Tab でも利用できるようにしてあります。

        • SleipnirAPI::Security

          各タブのセキュリティ設定を変更する API を定義しています。

          SleipnirAPI::Security::Config またはハッシュを利用して設定を変更できます。

      • SleipnirAPI::Output

        スクリプトのアウトプットバーを操作する API を定義しています。SleipnirAPI::Sleipnir#output で取得します。

      • SleipnirAPI::Profile

        ini ファイルを操作する API を定義しています。SleipnirAPI::Sleipnir#profile で取得します。

Utility

  • SleipnirAPI::KeyState

    Sleipnir.API の ShiftDown, AltDown, CtrlDown の wrapper API を定義します。SleipnirAPI::Sleipnir および SleipnirAPI::Tab でこのモジュールで定義しているメソッドが利用できます。

  • SleipnirAPI::Dialog

    Sleipnir.API の InputBox や MessegeBox などのダイアログ API を定義します。SleipnirAPI::Sleipnir および SleipnirAPI::Tab でこのモジュールで定義しているメソッドが利用できます。

  • SleipnirAPI::VERSION

    本ライブラリ (Sleipnir.API の ruby wrapper) のバージョンを定義します。Sleipnir 自体のバージョンは SleipnirAPI::Sleipnir の version から取得できます。

非互換性

Sleipnir 1.xx と Sleipnir 2.xx で API の動作が違う場合はSleipnir 1.xx の動作に合わせるようにしてあります。そのため、Sleipnir 2.xx 用に書かれたスクリプトをそのまま移植すると動かない場合があります。

現時点で判明している動作が違う API は以下のとおりです。

  • SleipnirAPI::Output#insert

Defined Under Namespace

Modules: CLI, Dialog, FFI, KeyState, OptionUtil, Util, VERSION Classes: BitMap, BitMapSizeError, Command, ConnectError, NotImplementedError, Output, Process, ProcessError, Profile, Searcher, Security, Sleipnir, SleipnirError, Tab, TabbedIE, Win32APIError

Class Method Summary collapse

Class Method Details

.connect(quit_on_finish = false, &block) ⇒ Object

call-seq:

SleipnirAPI.connect(quit_on_finish=false) {|pnir| block }
SleipnirAPI.connect() -> SleipniAPI::Sleipnir object

既に起動している Sleipnir の Sleipnir.API サーバに接続します。

Sleipnir が起動していない場合は例外を投げます。

引数と戻り値は new と同じです。

example

起動中の Sleipnir に接続 (block を使わない):

pnir = SleipnirAPI.connect
pnir.each do |tab|
  puts tab.document.location.href
end


157
158
159
160
161
162
# File 'lib/sleipnir_api.rb', line 157

def connect(quit_on_finish = false, &block)
  unless SleipnirAPI::Process.exist?
    raise SleipnirAPI::ConnectError, "Sleipnir.API does not running"
  end
  connect0(quit_on_finish, &block)
end

.connect0(quit_on_finish) ⇒ Object

:nodoc:



164
165
166
167
168
169
170
171
172
173
# File 'lib/sleipnir_api.rb', line 164

def connect0(quit_on_finish) #:nodoc:

  pnir = SleipnirAPI::Sleipnir.new(create_sleipnir_ole_object)
  return pnir unless block_given?

  begin
    yield pnir
  ensure
    pnir.quit if quit_on_finish
  end
end

.create_sleipnir_ole_objectObject



175
176
177
# File 'lib/sleipnir_api.rb', line 175

def create_sleipnir_ole_object
  WIN32OLE.new(PROG_ID)
end

.new(quit_on_finish = false, &block) ⇒ Object

call-seq:

SleipnirAPI.new(quit_on_finish=false) {|pnir| block }
SleipnirAPI.new() -> SleipniAPI::Sleipnir object

Sleipnir が起動していない場合は Sleipnir を起動してSleipnir.API サーバに接続します。

既に起動している場合は、その Sleipnir に接続します。

params

  • quit_on_finish

    true の場合、block 終了時に Sleipnir を終了します。block を指定しない場合、この引数は無視されます。

return value

  • block を指定しない場合 SleipnirAPI::Sleipnir オブジェクトを返します。

  • block を指定した場合は SleipnirAPI::Sleipnir オブジェクトを block の引数として block を実行し、block の実行結果を返します。

example

Sleipnir を起動して接続、block 終了時に Sleipnir を終了:

SleipnirAPI.new(true) do |pnir|
  pnir.each do |tab|
    puts tab.document.location.href
  end
end


130
131
132
133
134
135
# File 'lib/sleipnir_api.rb', line 130

def new(quit_on_finish = false, &block)
  unless SleipnirAPI::Process.exist?
    SleipnirAPI::Process.create
  end
  connect0(quit_on_finish, &block)
end