rrxwin.rb で定義されている各種メソッド
最終更新日: 2013/12/11
rrxwin.rbでは、1) Rrx, 2) Rclip の2つのモシュールが定義されています。
後者はクリップボードを扱うためのモジュールです。MS-Windows専用で、user32.dll, kernel32.dll, msvcrt.dll を利用します。
<目次>
- 1. module Rrx
- (1) rexec(script, logname=nil, options=nil)
- (2) rencode(str)
- (3) file_read(filename)
- (4) ary2num(ary)
- (5) str2ary(str, sep=nil)
- (6) ary2str(aa, sep=’,’)
- (7) temp_make(str, ext, flag)
- (8) temp_read(ff)
- (9) temp_write(ff, str)
- (10) temp_delete(ff)
- (11) temp_delete_all()
- (12) クラス変数にアクセスするための各種メソッド
- (13) rsave(hs = nil)
- (14) rload(sw = nil)
- (15) del_sum(ary)
- (16) cut_num(), cut_table()
- (17) cut_data()
- (18) select_cells(ary, condition, flag=nil)
- (19) table_turn(ary)
- (20) del_row(ary, *nums)
- (21) del_col(ary, *nums)
- (22) ins_row(ary, n, *arg)
- (23) ins_col(ary, n, *arg)
- (24) r_each(argsize), robj_each(argsize)
- (25) xls2ary(target, fmt = :array)
- (26) gss2ary(target, opt = nil, fmt = :array)
- (27) get_web(url, res_type = nil, opt = nil)
- (28) http_opt(opt)
- (29) web2ary(url, regex=nil, count=nil)
- (30) nkfex(str, enc="utf-8")
- (31) to_rba(xx, type)
- (32) clp2str()
- (33) str2clp(str)
- 2. module Rclip
1. module Rrx
(1) rexec(script, logname=nil, options=nil)
- 機能: Rプログラムを実行する
- script: Rプログラムの本体(文字列)または "test.r" などのファイル名。
- logname: ログファイルの名前。例えば "log.txt"
- options: Rcmd.exeの起動オプション。nilの場合 "no-save -q" となる。
- 戻り値: Hash。hs[:log], hs[:sink] などが得られる。詳細は rrxwin.txt 参照。
- 利用例: hs = rexec("test.r", "log.txt")
△ 目次に戻る
(2) rencode(str)
- 機能: 与えられた文字列の文字コードをrrxwin.rbの文字コードと同じものに変換する。
- str: 文字列
- 戻り値: 文字コード変換を施した文字列
- 備考: Windows-31J, utf-8, euc-jp の3種類に対応。変換は nkf で行う。
- 利用例: str2 = rencode(str)
△ 目次に戻る
(3) file_read(filename)
- 機能: ファイルをテキストモードで読み込む。バイナリモードではない。
- filename: ファイル名
- 戻り値: ファイルを読み込んだ中身を文字列で返す。前述の rencode() を施したものを返す。
- 利用例: str = file_read("test.txt")
△ 目次に戻る
(4) ary2num(ary)
- 機能: 配列要素を数値化する。
- ary: 配列
- 戻り値: 配列要素のうち、数値化できるものを数値に変換して返す。
- 利用例: ary2 = ary2num(ary)
△ 目次に戻る
(5) str2ary(str, sep=nil)
- 機能: 文字列を配列に変換する。
- str: 文字列
- sep: フィールドセパレータ(区切り文字)。nilの時は自動判別。strの中にタブコードが多く含まれていればタブコード、カンマが多ければカンマになる。
- 戻り値: 変換結果である配列
- 備考: rubyの標準添付ライブラリ csv を利用して変換する。
- 利用例: ary = str2ary(str)
△ 目次に戻る
(6) ary2str(aa, sep=’,’)
- 機能: 配列を文字列に変換する。
- aa: 配列
- sep: フィールドセパレータ。デフォルトはカンマ。
- 戻り値: 配列を変換した文字列
- 備考: rubyの標準添付ライブラリ csv を利用して変換する。
- 利用例: str = ary2str(aa, "\t")
△ 目次に戻る
(7) temp_make(str, ext, flag)
- 機能: テンポラリファイルの新規作成。標準添付ライブラリ tempfile によって作成される。新規作成されたファイルは close された状態。
- str: テンポラリファイルに書き込む文字列。省略可。省略時はサイズ0のファイルが作成される。2次元配列を与えることもできる。
- ext: テンポラリファイルの拡張子。省略可。 ‘.csv’ とか ‘.txt’ のような文字列、または :csv や :txt のようなシンボルで指定する。
- flag: 最新のテンポラリファイルとして登録するか否かの指定。trueだと最新のものとして登録。falseだと登録しない。指定しない時は true とみなされる。最新のものとして登録されると、Rプログラム中の「@@last@@」でそのファイル名を参照できる。
- 戻り値: テンポラリファイルを示すオブジェクト
- 備考: 引数を与える順番は任意。 ‘.’ で始まる文字列は拡張子の指定とみなされる。
- 利用例:
tff = temp_make()
tff = temp_make("abc", ".csv", false)
tff = temp_make("abc")
tff = temp_make(".txt", true)
△ 目次に戻る
(8) temp_read(ff)
- 機能: テンポラリファイルの中身を文字列で返す
- ff: tempfileオブジェクト。temp_make() の戻り値を指定する。
- 戻り値: 読み込んだ文字列
- 利用例: str = temp_read(tff)
△ 目次に戻る
(9) temp_write(ff, str)
- 機能: テンポラリファイルに書き込む。上書きする。追加ではない。
- ff: tempfileオブジェクト
- str: 書き込むデータ
- 戻り値: 書き込んだ文字列のバイト数が返される。書き込みできなかった時は nil または false
- 利用例: temp_write(tff, "abc")
△ 目次に戻る
(10) temp_delete(ff)
- 機能: テンポラリファイルの削除
- ff: tempfileオブジェクト
- 戻り値: 不定
- 備考: 引数ffを省略すると、temp_make() で作成したテンポラリファイルがすべて削除される。
- 利用例: temp_delete(tff)
△ 目次に戻る
(11) temp_delete_all()
- 機能: ファイル名の先頭が「rrx_」であるテンポラリファイルをすべて削除
- 戻り値: 不定
- 備考: テンポラリファイルが作成されるディレクトリの中で、ファイル名の先頭が「rrx_」であるファイルをすべて削除する。何らかのトラブルでrubyスクリプトが正常に終了しなかったとき、念のためこのメソッドを呼び出すと、過去に作られたテンポラリファイルもすべて削除される。
△ 目次に戻る
(12) クラス変数にアクセスするための各種メソッド
Rrxには次のクラス変数がある。
△ 目次に戻る
(13) rsave(hs = nil)
△ 目次に戻る
(14) rload(sw = nil)
- 機能: rrxwin.cfgの読込み
- sw: 引数が :set だと、rrxwin.cfgを読み込んだ結果をクラス変数に代入する。ただし、既にクラス変数に値がセットされていれば、それは変更されない。この引数を省略した場合は、クラス変数への代入が行われない。
- 戻り値: ハッシュ。hs[:path], hs[:opt] などが得られる。
- 利用例:
hs = rload()
rload(:set)
△ 目次に戻る
(15) del_sum(ary)
- 機能: 2次元配列の合計欄を削除
- ary: 2次元配列
- 戻り値: 合計欄を削除した2次元配列
- 備考: 横方向と縦方向の合計欄を削除する。実際に足し算をやってみて、どの列も(あるいは、どの行も)合計だと判断されれば、該当の列または行を削除する。まず最右端の列を調べ、次に最下行を調べる。両方とも合計欄でなければ、今度は最左端の列、最上行を調べる。
- 利用例: ary2 = del_sum(ary)
△ 目次に戻る
(16) cut_num(), cut_table()
これらメソッドについては rrxwin.txt を参照。
cut_table() は、実は cut_num2() の別名定義。
解説ドキュメントで言及していないが、これらメソッドには任意の個数の引数を与えることができる。例えば次のとおり。
cut_num("data01.csv", "data02.txt", "data03.csv")
cut_table("data01.csv", "data02.txt", "data03.csv", 3)
最後の引数として数値(1, 2, 3 のいずれか)を与えると、それに応じて戻り値(ブロック呼び出しの時はレシーバ)の個数が替わる。
なお、rrx v1.03 から、ファイル名のところに "http://www.hoge.com/sample.csv" のようなurlを指定できるようにした。この場合、web上のファイルをダウンロードして処理する。
△ 目次に戻る
(17) cut_data()
このメソッドについては rrxwin.txt を参照。
解説ドキュメントで言及していないが、このメソッドには任意の個数の引数を与えることができる。例えば次のとおり。
cut_data("data01.csv", "data02.txt", "data03.csv")
なお、rrx v1.03 から、ファイル名のところに "http://www.hoge.com/sample.csv" のようなurlを指定できるようにした。この場合、web上のファイルをダウンロードして処理する。
△ 目次に戻る
(18) select_cells(ary, condition, flag=nil)
- 機能: 該当セルの抽出
- ary: 2次元配列
- condition: 抽出条件。文字列。セルの値は value で表現する。rrxwin.rbの中では eval(condition) の真偽を判定する。
- flag: :addr だと該当セルの番地を、そうでなければセルの値を返す。
- 戻り値: [縦の項目名, 横の項目名, 該当セルの値または番地] を複数含む配列を返す。番地は [y,x] の配列の形になる。y>=0, x>=0。
- 備考: ブロック付きで呼び出すこともできる。
- 利用例:
res = select_cells(ary, "value<0.05", :addr)
select_cells(ary, "value<0.05") {|unit| puts unit.join("\t")}
△ 目次に戻る
(19) table_turn(ary)
- 機能: 縦・横を逆転させた配列を返す。
- ary: 2次元配列
- 戻り値: 縦・横を逆転させた2次元配列を返す。
- 利用例: ary2 = table_turn(ary)
△ 目次に戻る
(20) del_row(ary, *nums)
- 機能: 2次元配列の指定行を削除
- ary: 2次元配列。あるいは csv | タブ区切りテキストの文字列
- nums: 削除する行の番号。第1行目は 0、第2行目は 1 で指定。-1だと最後の行を意味する。複数列挙できる。
- 戻り値: 削除した結果の2次元配列。あるいは csv | タブ区切りテキストの文字列。引数aryと同じ形式が返される。
- 利用例:
ary2 = del_row(ary, 0)
str2 = del_row(str, 1, 3, 5)
△ 目次に戻る
(21) del_col(ary, *nums)
- 機能: 2次元配列の指定列を削除
- ary: 2次元配列。あるいは csv | タブ区切りテキストの文字列
- nums: 削除する列の番号。第1列目は 0、第2列目は 1 で指定。-1だと最後の列を意味する。複数列挙できる。
- 戻り値: 削除した結果の2次元配列。あるいは csv | タブ区切りテキストの文字列。引数aryと同じ形式が返される。
- 利用例:
ary2 = del_col(ary, 0)
str2 = del_col(str, 1, 3, 5)
△ 目次に戻る
(22) ins_row(ary, n, *arg)
- 機能: 2次元配列に行を挿入
- ary: 2次元配列。あるいは csv | タブ区切りテキストの文字列
- n: 挿入位置の行番号。0 だと第1行の前に挿入。1 だと第1行目と第2行目の間に挿入。-1だと最後の行の前に挿入。nilだと途中への挿入でなく追加になる。
- arg: 挿入する行。必ず1次元の配列で与える。複数列挙することもできる。
- 戻り値: 挿入した結果の2次元配列。あるいは csv | タブ区切りテキストの文字列。引数aryと同じ形式が返される。
- 利用例:
ary2 = ins_row(ary, 0, ["foo", "var"])
str2 = ins_row(str, 1, ["foo", "var"], [3, 5])
△ 目次に戻る
(23) ins_col(ary, n, *arg)
- 機能: 2次元配列に列を挿入
- ary: 2次元配列。あるいは csv | タブ区切りテキストの文字列
- n: 挿入位置の列番号。0 だと第1列の前に挿入。1 だと第1列目と第2列目の間に挿入。-1だと最後の列の前に挿入。nilだと途中への挿入でなく追加になる。
- arg: 挿入する列。必ず1次元の配列で与える。複数列挙することもできる。この1次元配列は縦に展開されるので要注意。
- 戻り値: 挿入した結果の2次元配列。あるいは csv | タブ区切りテキストの文字列。引数aryと同じ形式が返される。
- 利用例:
ary2 = ins_col(ary, 0, ["foo", "var"])
str2 = ins_col(str, 1, ["foo", "var"], [3, 5])
△ 目次に戻る
(24) r_each(argsize), robj_each(argsize)
△ 目次に戻る
(25) xls2ary(target, fmt = :array)
- 機能: Excelファイルの中身を配列またはハッシュに変換
- target: Excelのファイル名を示す文字列。web上のファイルをurlで指定することもできる。"data.xls", "http://www.hoge.com/test.xls" など。
- fmt: 戻り値の形式をこれで指定する。:array | :hash のいずれか。指定しなければ :array とみなされる。
- 戻り値: fmtが:arrayの場合、2次元配列を複数含む配列を返す。Excelの1つのワークシートが1つの2次元配列に変換される。読み込みに失敗した時は nil を返す。
fmtが:hashだと、keyがワークシート名、valueがワークシートの中身(2次元配列)となる。読み込みに失敗した時は nil を返す。
空のワークシートは読み飛ばす。また、各ワークシートについて、最初の空白行|空白列を取り込まない。つまり、VBAでいうところのUsedRangeに当たるものを返す。
- 備考: このメソッドを利用するためには、rubyのライブラリ spreadsheet | roo | exlap のいずれかがrequireされている必要がある。spreadsheetなら *.xls、rooだと *.xls, *.xlsx, *.xml(Excel2003xml), *.ods(OpenOffice)を読み込める。exlapの場合もrooと同じ。
- 利用例: ary = xls2ary("data.xls")
△ 目次に戻る
(26) gss2ary(target, opt = nil, fmt = :array)
- 機能: Google Document Spreadsheet(以下 gss)の中身を配列またはハッシュに変換
- target: gssのkeyを示す文字列。gssはweb上にあり、そのurlは「https://docs.google.com/spreadsheet/ccc?key=xxxx」のようなものになるが、このxxxxの部分を指定する。
- opt: gssにアクセスするための、あなたのユーザー名(Google mail address)とパスワードをハッシュで指定する。{:user=>’xxx@gmail.com’, :password=>’xxxx’} など。ハッシュのキーとして :access_token も指定できる。それぞれを環境変数 GOOGLE_MAIL, GOOGLE_PASSWORD, GOOGLE_TOKEN にセットしていれば、このoptで指定しなくてもよい(省略できる)。
- fmt: 戻り値の形式をこれで指定する。:array | :hash のいずれか。指定しなければ :array とみなされる。
- 戻り値: fmtが:arrayの場合、2次元配列を複数含む配列を返す。gssの1つのワークシートが1つの2次元配列に変換される。読み込みに失敗した時は nil を返す。
fmtが:hashだと、keyがワークシート名、valueがワークシートの中身(2次元配列)となる。読み込みに失敗した時は nil を返す。
空のワークシートは読み飛ばす。また、各ワークシートについて、最初の空白行|空白列を取り込まない。つまり、VBAでいうところのUsedRangeに当たるものを返す。
- 備考: このメソッドを利用するためには、rubyのライブラリ roo がrequireされている必要がある。rooの中で google-spreadsheet が呼び出されているので、予め gem で google-spreadsheet-ruby をインストールしておく必要がある。
- 利用例: ary = gss2ary(xxxx, {:user=>’xxx@gmail.com’, :password=>’xxxx’})
△ 目次に戻る
(27) get_web(url, res_type = nil, opt = nil)
△ 目次に戻る
(28) http_opt(opt)
- 機能: get_web() に与えるopt(第3引数)を予め設定。
- opt: get_web() の第3引数として与えるオプション、つまり OpenURI.open_uri() のオプション。ハッシュで指定する。
- 戻り値: オプション(ハッシュ)がそのまま返される。
- 備考: http_opt({……}) とすると、ハッシュが内的に保持されて、get_web() が呼び出された時に第3引数の代わりに用いられる。ただし、rubyスクリプトが終了すると保持が解除される(消えてしまう)。
- 利用例: http_opt({:proxy=>’http://proxy.example.com:8000/’})
△ 目次に戻る
(29) web2ary(url, regex=nil, count=nil)
- 機能: webページのテーブルを配列に変換
- url: webの所在を示すurl。または、ハードディスクなどにあるhtmlファイルの名前、htmlが記録された文字列でもよい。
- regex: テーブル指定の正規表現。これにマッチするテーブルのみを取得。
- count: テーブルの行数指定。整数値。これ未満の行のテーブルは対象外。
- 戻り値: 2次元配列を複数含む配列を返す。つまり3次元配列。1つのテーブルが1つの2次元配列に変換される。読み込みに失敗した時は nil を返す。
- 備考: このメソッドを利用するためには、rubyのライブラリ nokogiri または hpricot のどちらかがrequireされている必要がある。
テーブルの中のセル内に改行がある場合は、その改行を半角の '|' に変換する。'|' の前後に半角の空白を置くので、3バイトに変換することになる。
テーブル中にセル結合がある時は、結合セル群の左上端のところにデータを書き入れて、それ以外は空欄にする。
- 利用例:
tables = web2ary("http://……/test.htm")
tbl = web2ary("test.htm", /都道府県別人口/).first
tbl = web2ary(url, nil, 10).first # 10行以上のテーブルのみ
△ 目次に戻る
(30) nkfex(str, enc="utf-8")
△ 目次に戻る
(31) to_rba(xx, type)
- 機能: Rで生成されたarray|matrixをrubyで扱いやすい配列に変換
- xx: Rで生成されたarray|matrix。
- type: xxのタイプ。:array | :matrix のどちらかを指定。Rのarray(1次元)なら :array、matrixやdata frameなら :matrix。これ以外(例えば :none など)だと変換せずにxxをそのまま返す。
- 戻り値: 2次元配列。
- 備考: Rにおける1次元のarrayは、rubyで受け取った時に少々ややこしい形になっているので、素直な2次元配列に変換する。また、array, matrixのどちらであっても、最左列が通し番号の時はその列を削除する。
- 利用例: ary = to_rba(xx)
△ 目次に戻る
(32) clp2str()
- 機能: クリップボードのデータを文字列で返す
- 戻り値: 文字列。文字コードは rencode() で調整されたものとなる。つまり、実行中のrubyスクリプトと同じ文字コードになる。改行は \r\n が \n に変換される。
- 備考: クリップボードを読み取ったばかりのデータは、ファイルでいえばバイナリモードで読み取った時に類似している。改行は、通常 \r\n になっている。それを\nにして返す。また、ruby v1.9系では文字コードがASCII-8BITになっているので、それを変更した上で返す。
- 利用例: str = clp2str()
△ 目次に戻る
(33) str2clp(str)
- 機能: クリップボードに文字列を出力する
- str: 文字列
- 戻り値: 不定
- 備考: 文字コードと改行コードは、特に変換せずそのまま出力する。
- 利用例: str2clp("abc")
2. module Rclip
(1) clear()
- 機能: クリップボードの中身を全消去
- 戻り値: 不定
- 利用例: clear()
△ 目次に戻る
(2) getData(cf)
△ 目次に戻る
(3) setData(data, cf, gm)
△ 目次に戻る
- 機能: クリップボードにあるデータの形式を得る
- 戻り値: データの形式(:CF_TEXTなど)から構成される配列。複数であることが多い。取得に失敗した時は空配列 [] を返す。
- 備考: 例えば Excelのワークシートをクリップボードに貼り付けた場合、そのデータの形式は :CF_TEXT であるとともに :"Rich Text Format" でもある、というように複数であることが多い。getData() でデータを取得するとき、どの形式で取得するかを選択することになるが、どんな選択肢があるかをこの format() で確認できる。
- 利用例: ary = format()
〜 以上 〜
Copyright (C) T. Yoshiizumi, 2013 All rights reserved.
rrxのページへ
トップページへ