Class: SleipnirAPI::Output
- Inherits:
-
Object
- Object
- SleipnirAPI::Output
- Includes:
- Enumerable, Util
- Defined in:
- lib/sleipnir_api/output.rb
Overview
このクラスは Sleipnir の COM オブジェクト (Sleipnir.API) の wrapper クラスです。Sleipnir のアウトプットバーを操作する API を定義しています。
-
このオブジェクトは SleipnirAPI::Sleipnir#output で取得します。
-
このクラスは Enumerable を include しています。
例:
pnir = SleipnirAPI.new
output = pnir.output
output.clear
output.show
output << "foo"
output << "fooo"
output << "bar"
output.count #=> 3
output.getlines #=> ["foo", "fooo", "bar"]
# Enumerable method
output.grep(/foo/) #=> ["foo", "fooo"]
Instance Attribute Summary collapse
-
#sleipnir ⇒ Object
readonly
SleipnirAPI::Sleipnir object.
Instance Method Summary collapse
-
#add(string) ⇒ Object
(also: #<<)
アウトプットの最後に文字列を追加します。.
-
#clear ⇒ Object
アウトプットをクリアします。.
-
#concat(*strings) ⇒ Object
アウトプットに複数の文字列を追加します。.
-
#count ⇒ Object
アウトプットに出力されている文字列の行数を取得します。.
-
#cursor ⇒ Object
アウトプットバーの選択行の行番号を取得します。.
-
#cursor=(lineno) ⇒ Object
アウトプットバーの選択行を設定します。.
-
#delete(*lines) ⇒ Object
アウトプットから指定された行を削除します。.
-
#each ⇒ Object
call-seq: each {|line| … }.
-
#get(n = cursor) ⇒ Object
アウトプットから指定された行を取得します。.
-
#getlines ⇒ Object
アウトプットに出力されている全行を配列で取得します。.
-
#hide ⇒ Object
アウトプットバーを隠します。.
-
#initialize(sleipnir) ⇒ Output
constructor
A new instance of Output.
-
#insert(n, string) ⇒ Object
アウトプットに文字列を挿入します。.
-
#insert_after(string) ⇒ Object
アウトプットに文字列を挿入します。.
-
#insert_before(string) ⇒ Object
アウトプットに文字列を挿入します。.
-
#script ⇒ Object
アウトプットでダブルクリックされた時に呼ばれるスクリプトファイルを取得します。.
-
#script=(filename) ⇒ Object
アウトプットでダブルクリックされた時に呼ばれるスクリプトファイルを設定します。.
-
#show ⇒ Object
アウトプットバーを表示します。.
-
#visible=(show) ⇒ Object
アウトプットバーの可視状態を設定します。.
-
#visible? ⇒ Boolean
アウトプットバーの可視状態を取得します。.
Methods included from Util
#api, #ensure_version, #join_keyword
Constructor Details
#initialize(sleipnir) ⇒ Output
Returns a new instance of Output.
34 35 36 |
# File 'lib/sleipnir_api/output.rb', line 34 def initialize(sleipnir) @sleipnir = sleipnir end |
Instance Attribute Details
#sleipnir ⇒ Object (readonly)
SleipnirAPI::Sleipnir object
32 33 34 |
# File 'lib/sleipnir_api/output.rb', line 32 def sleipnir @sleipnir end |
Instance Method Details
#add(string) ⇒ Object Also known as: <<
アウトプットの最後に文字列を追加します。
カーソルは最後に移動します。
116 117 118 |
# File 'lib/sleipnir_api/output.rb', line 116 def add(string) api.OutputAddString(string) end |
#clear ⇒ Object
アウトプットをクリアします。
168 169 170 |
# File 'lib/sleipnir_api/output.rb', line 168 def clear api.OutputClear end |
#concat(*strings) ⇒ Object
アウトプットに複数の文字列を追加します。
122 123 124 125 126 |
# File 'lib/sleipnir_api/output.rb', line 122 def concat(*strings) strings.flatten.compact.each do |str| add(str) end end |
#count ⇒ Object
アウトプットに出力されている文字列の行数を取得します。
109 110 111 |
# File 'lib/sleipnir_api/output.rb', line 109 def count api.OutputGetCount end |
#cursor ⇒ Object
アウトプットバーの選択行の行番号を取得します。
Sleipnir バージョンが 1.30 より低い場合例外を投げます。
72 73 74 75 |
# File 'lib/sleipnir_api/output.rb', line 72 def cursor ensure_version 130 api.OutputCurSel end |
#cursor=(lineno) ⇒ Object
アウトプットバーの選択行を設定します。
Sleipnir バージョンが 1.30 より低い場合例外を投げます。
-
linenoが範囲外の場合、カーソルは -1 に設定されます。
82 83 84 85 86 87 88 89 |
# File 'lib/sleipnir_api/output.rb', line 82 def cursor=(lineno) ensure_version 130 if (0...count).include?(lineno) api.OutputCurSel=(lineno) #:nodoc: else api.OutputCurSel=(-1) #:nodoc: end end |
#delete(*lines) ⇒ Object
アウトプットから指定された行を削除します。
-
引数を省略すると現在のカーソル行を削除します。
-
削除する行番号は配列や Range を指定可能です。
例:
o = pnir.output
o.delete # 現在のカーソル行を削除
o.delete(0) # 0 行を削除
o.delete(1, 3, 5) # 1, 3, 5 行を削除
o.delete([1, 3, 5]) # 同上
o.delete(0...5) # 0, 1, 2, 3, 4 行を削除
o.dekete(1, 2..3, 10...15) # 1, 2, 3, 10, 11, 12, 13, 14 行を削除
187 188 189 190 191 192 193 194 195 |
# File 'lib/sleipnir_api/output.rb', line 187 def delete(*lines) if lines.empty? delete(self.cursor) else lines.map{|e| Array(e) }.flatten.compact.sort.uniq.reverse.each do |e| api.OutputDeleteString(e) end end end |
#each ⇒ Object
call-seq:
each {|line| ... }
アウトプットに出力されている全行を走査します。
216 217 218 219 220 221 222 223 |
# File 'lib/sleipnir_api/output.rb', line 216 def each i = 0 while i < count self.cursor = i yield get(i) i = i + 1 end end |
#get(n = cursor) ⇒ Object
アウトプットから指定された行を取得します。
-
nを省略すると現在のカーソル行の文字列を取得します。 -
nが範囲外の場合nilを返します。
201 202 203 204 205 |
# File 'lib/sleipnir_api/output.rb', line 201 def get(n = cursor) if (0...count).include?(n) api.OutputGetString(n) end end |
#getlines ⇒ Object
アウトプットに出力されている全行を配列で取得します。
208 209 210 |
# File 'lib/sleipnir_api/output.rb', line 208 def getlines (0...count).map{|i| get(i) } end |
#hide ⇒ Object
アウトプットバーを隠します。
Sleipnir バージョンが 1.30 より低い場合例外を投げます。
65 66 67 |
# File 'lib/sleipnir_api/output.rb', line 65 def hide self.visible = false end |
#insert(n, string) ⇒ Object
アウトプットに文字列を挿入します。
-
文字列は指定された行に挿入されます。
-
カーソルは
nに移動します。
非互換
-
Sleipnir 2.x では OutputInsertString 後にカーソルは移動しませんが、このメソッドはカーソルが移動します。Sleipnir 1.x の動作にあわせています。
139 140 141 142 143 144 145 146 |
# File 'lib/sleipnir_api/output.rb', line 139 def insert(n, string) if (0..count).include?(n) api.OutputInsertString(n, string) self.cursor = n if sleipnir.v2? else self.cursor = -1 end end |
#insert_after(string) ⇒ Object
アウトプットに文字列を挿入します。
-
文字列は現在のカーソル行の次行に挿入されます。
-
カーソルの移動しません。
161 162 163 164 165 |
# File 'lib/sleipnir_api/output.rb', line 161 def insert_after(string) c = cursor insert(c + 1, string) self.cursor = c end |
#insert_before(string) ⇒ Object
アウトプットに文字列を挿入します。
-
文字列は現在のカーソル行の前行に挿入されます。
-
カーソルがさしている行は変わりません (== insert された分カーソル行が +1 されます)
152 153 154 155 |
# File 'lib/sleipnir_api/output.rb', line 152 def insert_before(string) insert(cursor, string) self.cursor += 1 end |
#script ⇒ Object
アウトプットでダブルクリックされた時に呼ばれるスクリプトファイルを取得します。
Sleipnir バージョンが 1.30 より低い場合例外を投げます。
94 95 96 97 |
# File 'lib/sleipnir_api/output.rb', line 94 def script ensure_version 130 api.OutputScript end |
#script=(filename) ⇒ Object
アウトプットでダブルクリックされた時に呼ばれるスクリプトファイルを設定します。
Sleipnir バージョンが 1.30 より低い場合例外を投げます。
102 103 104 105 |
# File 'lib/sleipnir_api/output.rb', line 102 def script=(filename) ensure_version 130 api.OutputScript=(filename) #:nodoc: end |
#show ⇒ Object
アウトプットバーを表示します。
Sleipnir バージョンが 1.30 より低い場合例外を投げます。
58 59 60 |
# File 'lib/sleipnir_api/output.rb', line 58 def show self.visible = true end |
#visible=(show) ⇒ Object
アウトプットバーの可視状態を設定します。
Sleipnir バージョンが 1.30 より低い場合例外を投げます。
50 51 52 53 |
# File 'lib/sleipnir_api/output.rb', line 50 def visible=(show) ensure_version 130 api.OutputVisible=(show) #:nodoc: end |
#visible? ⇒ Boolean
アウトプットバーの可視状態を取得します。
Sleipnir バージョンが 1.30 より低い場合例外を投げます。
42 43 44 45 |
# File 'lib/sleipnir_api/output.rb', line 42 def visible? ensure_version 130 api.OutputVisible end |