Class: SleipnirAPI::Command
- Inherits:
-
Object
- Object
- SleipnirAPI::Command
- Extended by:
- Enumerable
- Defined in:
- lib/sleipnir_api/command.rb
Overview
このクラスは Sleipnir.API の ExecCommand に指定可能なコマンドをあらわすクラスです。ExecCommand に指定可能な全コマンドを定義しています。
-
このオブジェクトは SleipnirAPI::Command.get で取得し、SleipnirAPI::Sleipnir#exec_command に指定します。
-
このクラスは Enumerable を include しています。
-
コマンドの一覧はSleipnir.API - ExecCommand に指定可能なコマンドの一覧 を参照してください。
注意: ExecCommand は Sleipnir 1.6 用の API です。2.x では利用できません。
例:
pnir = SleipnirAPI.connect
copy_cmd = SleipnirAPI::Command["コピー"]
pnir.exec_command(copy_cmd)
SleipnirAPI::Command.each do |cmd|
puts "%d - %s" % [cmd.command_id, cmd.name]
end
# Enumerable methods
p SleipnirAPI::Command.select {|cmd| cmd.name =~ /Gecko/ }
Instance Attribute Summary collapse
-
#cmdid ⇒ Object
(also: #command_id)
readonly
コマンド ID を取得します.
-
#name ⇒ Object
(also: #command, #command_name)
readonly
コマンド名を取得します.
-
#parents ⇒ Object
readonly
コマンドの上位メニューを取得します.
Class Method Summary collapse
-
.build_cache ⇒ Object
:nodoc:.
-
.build_cache0 ⇒ Object
:nodoc:.
-
.each(&block) ⇒ Object
各コマンドに対してブロックを評価します。 ブロックには SleipnirAPI::Command オブジェクトが指定されます。.
-
.get(command, *parents) ⇒ Object
(also: [])
指定されたコマンドの SleipnirAPI::Command オブジェクトを取得します。.
Instance Method Summary collapse
-
#initialize(cmdid, *parents) ⇒ Command
constructor
A new instance of Command.
-
#path ⇒ Object
上位メニュー名を含めたコマンド名を配列で返します。.
- #to_s ⇒ Object
Constructor Details
#initialize(cmdid, *parents) ⇒ Command
Returns a new instance of Command.
103 104 105 106 107 |
# File 'lib/sleipnir_api/command.rb', line 103 def initialize(cmdid, *parents) @cmdid = cmdid @name = parents.pop @parents = parents end |
Instance Attribute Details
#cmdid ⇒ Object (readonly) Also known as: command_id
コマンド ID を取得します
SleipnirAPI::Command.get("メインウィンドウの最小化").cmdid
#=> 33291
83 84 85 |
# File 'lib/sleipnir_api/command.rb', line 83 def cmdid @cmdid end |
#name ⇒ Object (readonly) Also known as: command, command_name
コマンド名を取得します
SleipnirAPI::Command.get("メインウィンドウの最小化").name
#=> "メインウィンドウの最小化"
90 91 92 |
# File 'lib/sleipnir_api/command.rb', line 90 def name @name end |
#parents ⇒ Object (readonly)
コマンドの上位メニューを取得します
SleipnirAPI::Command.get("メインウィンドウの最小化").parents
#=> ["ウィンドウ", "ウィンドウ操作"]
97 98 99 |
# File 'lib/sleipnir_api/command.rb', line 97 def parents @parents end |
Class Method Details
.build_cache ⇒ Object
:nodoc:
62 63 64 |
# File 'lib/sleipnir_api/command.rb', line 62 def build_cache #:nodoc: @cache ||= build_cache0 end |
.build_cache0 ⇒ Object
:nodoc:
67 68 69 70 71 72 |
# File 'lib/sleipnir_api/command.rb', line 67 def build_cache0 #:nodoc: COMMANDS.inject({}) {|h,cmd| h[cmd.name] = Array(h[cmd.name]) + [cmd] h } end |
.each(&block) ⇒ Object
各コマンドに対してブロックを評価します。ブロックには SleipnirAPI::Command オブジェクトが指定されます。
35 36 37 |
# File 'lib/sleipnir_api/command.rb', line 35 def each(&block) COMMANDS.each(&block) end |
.get(command, *parents) ⇒ Object Also known as: []
指定されたコマンドの SleipnirAPI::Command オブジェクトを取得します。
コマンド名が一意に特定できない場合は ArgumentError が発生します。その場合、上位メニューのメニュー名を第 2 引数に指定してください。
SleipnirAPI::Command.get("編集")
SleipnirAPI::Command.get("Java の実行") #=> ArgumentError
SleipnirAPI::Command.get("Java の実行", "ページ別セキュリティ")
48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/sleipnir_api/command.rb', line 48 def get(command, *parents) r = build_cache[command] return nil if r.nil? or r.empty? return r[0] if r.length == 1 r = r.select {|e| (parents - e.parents).empty? } return nil if r.nil? or r.empty? return r[0] if r.length == 1 err = r.map{|e| " - #{e}" }.join("\n") raise ArgumentError, "Ambiguous command name `#{command}':\n#{err}\n" end |
Instance Method Details
#path ⇒ Object
上位メニュー名を含めたコマンド名を配列で返します。
SleipnirAPI::Command.get("メインウィンドウの最小化").path
#=> ["ウィンドウ", "ウィンドウ操作", "メインウィンドウの最小化"]
114 115 116 |
# File 'lib/sleipnir_api/command.rb', line 114 def path @parents + [@name] end |
#to_s ⇒ Object
118 119 120 |
# File 'lib/sleipnir_api/command.rb', line 118 def to_s "%d: %s" % [@cmdid, path.join(" > ")] end |