Posted at

既に同じ名前のファイルがある時は連番を付ける(黒魔術風味)

More than 3 years have passed since last update.

ファイルを保存する時に既に同じ名前のファイルがあった時は連番を付けたくなったので書いたコード

例えば

piyopiyo.jpgというファイルを作ろうとした時に既に同じ名前のファイルがあれば、piyopiyo(1).jpg、

piyopityo(1).jpgというファイルも既にあれば、piyopiyo(2).jpg

というように以下piyopiyo(i).jpgで被っている限りiを増やしていきます。

def avoid_conflict_name name

i = (i || i = 0).succ while File.exist?(ret = "#{name}#{i ? "(#{i})" : ""}.jpg")
ret
end

ちょっと黒い所が見えちゃってるけど気にしない♡ ※黒魔術は用法用量を守って正しく使いましょう。

 

i = (i || i = 0).succ

とか

初回のループでの

"#{name}#{i ? "(#{i})" : ""}.jpg"

のiとか

代入されていないのに使える変数の仕様は IQ1450で美少女JSの先輩から、Rubyで無から有を生み出す方法を教わった を見てね♡