この Gem の使い方
require 'bundler/setup'
require 'utils'
使い方というか、いつも僕が使っているコードの寄せ集めです。自分用。
Utils.imgexist?("http://www.ninjintei.jp/onetyan/image1203.jpg")
で url の先が画像かどうかを判断します。画像が存在すればそのサイズが配列で返り、存在しなければ nil が返ります。
"http://www.ninjintei.jp/onetyan/image1203.jpg".imgsuffix
は String#imgsuffix で、文字列の最後が画像の識別子ならそれを返し、そうでなければ空文字列を返します。
Utils.getfile(url, "image.jpg")
は url の先をダウンロードします。後の引数は保存されるファイル名です。バイナリ・ファイルも DL 可能です。
[2, 3..5, ["a", "b"]].nest_loop {|i, j, k| print "#{[i, j, k]} "}; puts
は簡単に多重ループを作ります。ここを参照。
p "327865".pickup(2, nil)
p [3, 2, 7, 8, 6, 5].pickup(-1, -4, -1)
は Python のスライスの Ruby 実装です。ここを参照。
※追記
さらに機能を追加しました。
p "12345678".separate(3)
は String#separate(n) で、文字列をあらゆる組合せで n 分割し、すべての組合せを配列に入れて返します。ここを参照。(※追記 ブロックがある場合はそれを実行、ない場合は Enumerator を返すようにしました。)
loop_with_index {|i| print "\e[1G#{i} "; sleep(0.5)}
は Kernel#loop_with_index で、インデックス付き無限ループです。ここを参照。
p ("10.(952)".to_r + "5.26(3)".to_r).to_rec_decimal
は String#to_r のオーバーライドと、Rational#to_rec_decimal で、循環小数を扱います。ここを参照。
p 150.divisors_int
は Integer#divisors_int で、約数を配列で返します。ここを参照。
機能追加(2/27)
p 3.0.integer?
は Float#integer? で、レシーバーの小数点以下が 0 なら true、それ以外は false を返します。
p Array.make([2, 3], "a")
は Array.make(ar, ob) で、多重配列を簡単に作成します。ar は Array、ob は初期値(省略可能)ですが、初期値は Array.new とちがって、ob のコピーが入ります。ここを参照。
機能追加(3/11)
p Utils.key_wait
はキーボードからの一文字入力です。
[[1, 2], [3, 4]].deep_copy
は Object#deep_copy で、オブジェクトのいわゆる「ディープコピー」をします。
p 5.factorial
は Integer#factorial で、階乗を返します。
p Utils.time_lexic
はマイクロ秒まで採った現在時刻を、アルファベットの辞書順になるように変換して、String で出力します。ここを参照。
機能追加(4/23)
a = [1, 5, 9, 1, 6]
a.change(1, "a")
a.change!(1, "a")
は Array#change(a, b) (change! は破壊的メソッド)で、配列のすべての要素 a を b に置き換えます。
p Utils.permutation(4, 2)
p Utils.combination(4, 2)
は順列と組み合わせを求めます。
機能追加(7/29)
末尾再帰を回避するメソッドを2つ、Utils.trcall と Module#tco を追加しました。詳細はここを参照して下さい。
機能追加(11/10)
p "test".flow {|x| x.upcase}.chars
Object#flow は self をブロック内で処理して最後の値を返します。
p "te*st".fname_filter
String#fname_filter は self に含まれているフォルダ名・ファイル名に使っていけない文字を取り除いて返します。破壊的メソッド。
p nil.nil_trans([])
Object#nil_trans(obj = "") は self が nil ならば obj(デフォルトは "")を返し、それ以外なら self 自身を返します。
Counter.make(:count, 100, -4)
10.times {puts count}
Counter.make はカウンターを作ります。詳細はここを参照して下さい。
{:A=>0, :B=>2, :C=>0}.collect_keys(0)
Hash#collect_keys(ob) は、ob の値を持つキーをすべて集めて配列で返します。詳細はここを参照して下さい。
{1=>2, 3=>4, 5=>6}.map_to_h {|k, v| [k, (v ** 2).to_s]}
Hash#map_to_h は、Hash#map して返り値を to_h します。
機能追加(2017/1/24)
5.times_retry(message: true, wait: 1) {raise "test error"}
Integer#times_retry はブロック内でエラーが起きた場合 n 回リトライし、それを超えた場合は停止します。詳細はここを参照。
機能追加(2017/2/10)
Utils.progress_bar do |bar|
for i in 0..20
bar.fraction = i / 20.0
sleep(0.5)
end
end
Utils#progress_bar は GTK+ で簡単にプログレスバーを使います。詳細はここを参照。
機能追加(2017/2/12)
Utils.delete_non_img("text")
Utils.delete_non_img は画像ファイルでなければ削除します。詳細はここを参照。
機能追加(2017/6/8)
Utils.delete_empty_folder('pictures')
Utils.delete_empty_folder は指定したディレクトリの空フォルダを削除します。
Utils.bell
Utils.bell はベルを鳴らします(Ubuntu)。