プログラミング的なSomething

プログラミング的なSomething

ITエンジニア(?)目線で生活・自転車・トレーニング話を綴ります

IPアドレスレンジなんかを直感的に扱う

IPアドレスのレンジを例えば[0-254]とか表記する場合、さくっと表記したいけど、数字のレンジで扱わないといけないのでイチイチ手間がかかる。

そういうわけなので数字レンジを[hoge-hogehoge]で扱えるようなものを書いた。

require 'test/unit'

module Comparable
end

module Feelingseiki
  def extract_text(text)
    re = Regexp.new('\[(.+?)\]')
    ranges = text.scan(re)[0]
    range_ary = ranges[0].split("-")
  end

  def between_range(range,int)
    range_ary = extract_text(range)
    int.between?(range_ary[0].to_i,range_ary[1].to_i)
  end

  module_function :between_range
  module_function :extract_text
end

class ScriptText < Test::Unit::TestCase
  @@range = "[0-254]"
  def test
    assert_equal(true,Feelingseiki.between_range(@@range,0))
    assert_equal(true,Feelingseiki.between_range(@@range,254))
    assert_equal(true,Feelingseiki.between_range(@@range,100))
    assert_equal(false,Feelingseiki.between_range(@@range,255))
    assert_equal(false,Feelingseiki.between_range(@@range,-1))
  end
end

テストも付けた。

車輪の再発明だよ!って意見とか聞きたい。結構調べたけど気軽に表記する方法はなかったのよね。